まもなく、私はANTLR4を実装してBaseListener<Void>
を生成しました。ANTLR4 - >訪問者からのレクサーシンボルへのアクセス
@Override
public Void visitTerminal(TerminalNode node) {
if (";".equals(node.getText()))
this.prepareQuery();
else if (",".equals(node.getText()))
this.prepareQuery();
return super.visitTerminal(node);
}
これら";"
、","
を避けるためのいくつかの方法があります:
私はトークンが1つまたは別のあるかどうかを確認する必要が
、私はのようなものをやっていますか? ?SCOL : ';';
COMMA : ',';
は私がLexer.SCOL(...)
、またはLexer.COMMA.equals(...)
ような何かを書くことができます:: 私は、これは私の文法上のレクサールールとしてトークンを宣言したことから、これを理解してい
申し訳ありませんが、私はと非常にできないよ:
ので、交換が可能ですが'node '.getSymbol()。getType()' int '戻り値の関係を調べる' ';' 'や' '、' 'に従っています。 int型の戻り値は何ですか? "node.getSymbol()。getType()"を使って ''; equals(...) 'をどうやって置き換えることができるのですか? – Jordi
ああ、私はあなたがレクサーのシンボルをテキストから生成することを知っていました。パーサを使って作業するときに最初に学ぶことの1つです。 –