Antlr 以某种方式忽略了输入字符串中的字符,例如 ~,@,#,$,%,*,(,),{,},[,]。
我使用输入字符串(例如 show~~~、show ~@#$% 等)测试了以下语法,但 Antlr 转义了 eclipse/antlr 工作解释器上的字符。我希望这样的场景抛出异常而不是从中恢复。请让我知道您是否曾经遇到过这种情况,如果遇到过,您做了什么来摆脱它。
grammar Sample;
options {language = Java;} @header {package a.b.c;} @lexer::header {package a.b.c;}
prog: stat+ ; stat: expr ; expr: paramValueChildStructure ;
paramValueChildStructure: ALPHANUMERIC;
ALPHANUMERIC: ('a'..'z' |'A'..'Z' | '0'..'9')+ ;
我尝试使用以下选项来摆脱上述问题,但这在我生成的 lexer.java 中给出了无法访问的代码编译时间问题
OTHER : . {throw new RuntimeException("unknown char: '" + $text + "'");};
谢谢,阿希什