6 // これはあくまで抽象なので、定義に依存させる。
14 class UTF8InputStream;
26 lexerのlex内で、数々の条件分岐を行わなければならない場合に、
27 それぞれのsublexerからの結果、追加で返されるsublexerを、
28 次の文字における判定として利用することにしておく。
29 このようにすることで、インターフェースを完全に統一しながら、
30 sublexerからsublexerを返すようにしていくだけで、
33 これは完全にインターフェースのみを提供する。
38 virtual ~ISubLexer() {}
40 // ストリームを受け取り、lexemeを返す。
41 // 次に処理すべきlexerが存在する場合、nextに設定しておくと、
42 // 返されたlexemeは無視され、nextが実行される。
43 virtual smart_ptr<lexeme::ILexeme> lex(
44 smart_ptr<utakata::utf8::UTF8InputStream> stream,
45 smart_ptr<ISubLexer>& next) = 0;
52 #endif /* _SUBLEXER_H_ */