5

トルコ語の自然言語テキストをトークン化するためにantlr4を使用してレクサーを作成しました。必要なのは、トークンを1つずつフェッチできるトークンストリームを用意することです。CommonTokenStreamは、次のように使用するとリストを返します。

ANTLRInputStream inputStream = new ANTLRInputStream(input);
TurkishLexer lexer = new TurkishLexer(inputStream);
CommonTokenStream tokenStream = new CommonTokenStream(lexer);
List<Token> tokens = tokenStream.fill();
for (Token token : token) ...

ただし、入力が膨大になる可能性があるため、トークンのリストを作成したくありません。次のようなものが必要です。

for (Token token: tokenStream.next()) ...

EOFトークンを取得するまでこれを繰り返します。

トークンを反復処理できるトークンストリームはありますか?

4

1 に答える 1

12

を使用するのではなく、CommonTokenStream単にを使用できますLexer.nextToken

for (Token token = lexer.nextToken();
     token.getType() != Token.EOF;
     token = lexer.nextToken())
{
    ...
于 2013-01-31T14:24:44.823 に答える