我有一个解析器规则定义为:
text: '"'.*?'"' ;
但是,如果文本包含标点符号'。'。
,则会失效",;:!?./§/*-+)({}[]abc"
line 1:1 token recognition error at: ','
line 1:2 token recognition error at: ';'
line 1:4 token recognition error at: '!'
line 1:5 token recognition error at: '?'
line 1:6 token recognition error at: '.'
line 1:7 token recognition error at: '/'
line 1:8 token recognition error at: '§'
line 1:9 token recognition error at: '/'
line 1:10 token recognition error at: '*'
line 1:11 token recognition error at: '-'
line 1:12 token recognition error at: '+'
line 1:13 token recognition error at: ')'
line 1:14 token recognition error at: '('
奇怪的是,curlies被认出来了。 是否有任何帮助接受任何作为字符串的一部分?
答案 0 :(得分:1)
您需要将text
定义为词法分析规则,如下所示:
TEXT: '"'.*?'"' ;
如果在解析器规则中使用通配符运算符,ANTLR将匹配任何规则而不是任何字符。