我想要一些语法来表示一个字符串,用 " 引用,字符串中的 " 符号可以像 \" 这样引用。以下是我的语法:
fragment
NUM_LETTER : ('a'..'z'|'A'..'Z'|'0'..'9');
STRING_LITERAL : '"' (NUM_LETTER|'_'|('\\"'))* '"';
Run Code Online (Sandbox Code Playgroud)
但它不起作用。我尝试在 AntlrWorks1.5 中解释 "\"a" 并且它在为 STRING_LITERAL 生成的语法树中给出了 MismatchedTokenException。我的语法的哪一部分是错误的?
Bar*_*ers 12
语法没有问题。您可能会收到此错误,因为您使用的是有问题的解释器。请改用 ANTLRWorks 的调试器。调试器将向您显示输入"\"a"已被解析得很好(按CTRL+D开始调试)。
此外,您的字符串规则可能看起来像这样更好:
STRING_LITERAL : '"' (~('"' | '\\' | '\r' | '\n') | '\\' ('"' | '\\'))* '"';
Run Code Online (Sandbox Code Playgroud)
换句话说,您的字符串的内容为零或更多:
~('"' | '\\' | '\r' | '\n')或者
'\\' ('"' | '\\')| 归档时间: |
|
| 查看次数: |
6056 次 |
| 最近记录: |