有没有办法在解析结束时在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 test
或This is a test
(在末尾处WS
)。我添加了一个代表解析树根的root
规则,并在该规则的末尾显示count
。
这是你想要的吗?
编辑
我只是重构了语法,root
规则实际上并没有真正的用处(我的错)。