在ANTLR Lexer规则中包含某些擒纵机构符号



我正在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类内部没有特殊意义(只是在它们之外(,所以~不需要转义。

最新更新