ANTLR4在解析结束时打印



有没有办法在解析结束时在ANTLR4中打印@members?

grammar test;
@members{
int count = 0;
} 
sentence :  (a..z|A..Z)* r;
r        :  [rn]+ {count++;}; 

我不确定我是否答对了你的问题,但正如StephanA所说,你的语法不符合ANTLR4。我稍微修改了一下你的语法:

grammar Test;
@members{
int count = 0;
} 
sentence :  WORD (r WORD)* {System.out.println(count);};
r        :  WS {count++;};
WORD : ('a'..'z'|'A'..'Z')+;
WS :  [ rn]+;

该语法将接受This is a test(在结尾处count=3),但将拒绝This is a testThis is a test(在末尾处WS)。我添加了一个代表解析树根的root规则,并在该规则的末尾显示count

这是你想要的吗?

编辑

我只是重构了语法,root规则实际上并没有真正的用处(我的错)。

相关内容

  • 没有找到相关文章

最新更新