有没有办法在解析结束时在ANTLR4中打印@members?
grammar test;
@members{
int count = 0;
}
sentence : (a..z|A..Z)* r;
r : [\r\n]+ {count++;};
答案 0 :(得分:0)
我不确定我的问题是否正确,但正如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 : [ \r\n]+;
此语法将接受This is a test
(最后count
= 3),但最后会拒绝This is a test
或This is a test
(WS
)。我添加了一个代表解析树根的root
规则,并在此规则的末尾显示count
。
这是你想要的吗?
编辑
我刚刚重构了语法,root
规则实际上并没有用(我的不好)。