对于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'检查以及可能的