在antlr4中获取解析器中属性的索引

时间:2016-06-01 09:11:25

标签: grammar antlr4

我的语法看起来像

statement
     :  ME second_part
     {
           System.out.println($ME.getStartIndex());
           System.out.println($second_part.getStartIndex());
     }
     ;

ME   : 'me'
     ;
SPACES : [ \t\n\r] -> channel(HIDDEN);

我想得到Me和second_part的起始索引。

运行上面的antlr4语法时出错了

  

的System.out.println($ second_part.getStartIndex());

     

在$ second_part

中对规则参考second_part缺少属性访问权限

如何获取second_part的起始索引?

1 个答案:

答案 0 :(得分:1)

每个解析器规则都是ParserRuleContext,其中包含startstop令牌。所以,试试这个:

System.out.println($second_part.start.getStartIndex());