当然,我正在执行一个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
哦,我假定你知道词法分析器从文本中产生词法符号,因为这是在使用解析器时学习的第一件事情之一。 –