我的解析器规则定义为:
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: '('
奇怪的是,卷发被识别出来。作为字符串的一部分,接受的任何帮助?
您需要将text
定义为这样的lexer规则:
TEXT: '"'.*?'"' ;
如果在解析器规则中使用通配符操作员ANTLR将匹配任何规则而不是任何字符。