當然,我正在執行一個ANTLR4生成BaseListener<Void>
。ANTLR4 - > Lexer符號訪問者訪問
當我需要檢查令牌是否是一個或另一個,我做喜歡的東西:
@Override
public Void visitTerminal(TerminalNode node) {
if (";".equals(node.getText()))
this.prepareQuery();
else if (",".equals(node.getText()))
this.prepareQuery();
return super.visitTerminal(node);
}
是否有某種方式來避免這些";"
,","
? 我想出這樣的,因爲我已經聲明此令牌作爲我的語法詞法分析規則:
SCOL : ';';
COMMA : ',';
我可以寫類似Lexer.SCOL(...)
,或者Lexer.COMMA.equals(...)
:
很抱歉,但我不是很能找出'node.getSymbol()。getType()''int'返回的值關係是根據'';''還是'''',''。什麼是'int'返回值?我怎樣才能用'node.getSymbol()。getType()'代替'「;」。equals(...)' – Jordi
哦,我假定你知道詞法分析器從文本中產生詞法符號,因爲這是在使用解析器時學習的第一件事情之一。 –