Antl4没有标记规则的规则索引

时间:2016-07-30 08:04:43

标签: antlr4

对于Java.g4的语法片段,

statement
    :   block                                             # blockStmt
    |   'if' parExpression statement ('else' statement)?  # ifStmt
    |   'for' '(' forControl ')' statement                # forStmt
    |   'while' parExpression statement                   # whileStmt
    ;

所有替代品都贴有标签。 我可以使用此方法获取所有StatementContext对象

Trees.getAllRuleNodes(根,JavaParser.Rule_statement);

但如果我只对获取IfStmtContext对象感兴趣,那么如何在不使用此类内容的情况下使用上述方法

for(ParseTree tree : statementContextList)
{
if(tree instanceof IfStmtContext)
{
//add to a list
}

生成的JavaParser不会为标记的规则创建规则索引。 我是否必须以某种方式自定义语法以使其编入索引? 或者还有其他办法吗?

我的代码应该很快,我需要删除尽可能多的迭代和条件。需要摆脱' instanceof'检查以及可能的

0 个答案:

没有答案