我正在Antlr4和Python中创建一个解析器。以下是我在Antlr中创建的Lexer规则。
VARIABLE_ID : [$][a-zA-Z][a-zA-Z0-9_]*;
ARRAY_ID : [*][a-zA-Z][a-zA-Z0-9_]*;
STRINGCONST : ["][/|:.a-zA-Z0-9 ]+["];
WS : [ rtfn]+ -> skip;
我正在研究STRINGCONST
规则,并试图添加诸如-
和~
之类的符号,然而,由于它们是逃避现实的字符,Antlr只是在为我抛出错误。我尝试过用它们自己来逃避现实,但我没能做到这一点。
有没有办法将它们包含在STRINGCONST
规则中?基本思想是,我希望字符串被识别为两个" "
标记之间的任何字符,但我很乐意将其限制为当前规则中的字符,只要我也能在其中获得-
和~
。
您可以通过在字符前面添加来转义字符:
STRINGCONST : ["] [/|:.a-zA-Z0-9 -~]+ ["];
注意,~
在char类内部没有特殊意义(只是在它们之外(,所以~
不需要转义。