Parsing antlr4:令牌识别错误&引用;点和其他标点符号

Parsing antlr4:令牌识别错误&引用;点和其他标点符号,parsing,antlr4,Parsing,Antlr4,我将解析器规则定义为: 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

我将解析器规则定义为:

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: '"'.*?'"' ;

如果在解析器规则中使用通配符运算符,则ANTLR将匹配任何规则而不是任何字符。

可能是无意中尝试使用字符串时涉及语法中不同规则的问题。“卷发”是一个暗示。尝试转储令牌流。我是否应该始终为每个解析器规则定义一个lexer规则?不。。。Lexer规则用于标记输入字符,解析器规则用于以某种方式对这些标记进行分组