Antlr4 ANTLR-匹配时不匹配的句点字符;“任何事”;

Antlr4 ANTLR-匹配时不匹配的句点字符;“任何事”;,antlr4,ebnf,Antlr4,Ebnf,我有这样一个简单的规则: ifClause: 'if' '(' condition ')' '{' (structField)+ '}' ; condition: .*?; 这适用于解析: if (abc == def) { <something> } 当匹配*? 我正在使用Antlr4.5.3和Python输出 首先,解析器规则 condition: .*?; 使用lexer生成的令牌,而不是原始字符 其次,当lexer规则无法匹配字符时,lexer会产生“标记识别”

我有这样一个简单的规则:

ifClause: 'if' '(' condition ')' '{' (structField)+ '}' ;
condition: .*?;
这适用于解析:

if (abc == def) {
    <something>
}
当匹配
*?

我正在使用Antlr4.5.3和Python输出


首先,解析器规则

condition: .*?;
使用lexer生成的令牌,而不是原始字符

其次,当lexer规则无法匹配字符时,lexer会产生“标记识别”错误(默认情况下,lexer将跳过无法识别的字符,产生错误,并且没有相应的标记供解析器使用,并继续匹配输入流)


要修复此问题,请确保“.”将与lexer规则匹配。

首先是解析器规则

condition: .*?;
使用lexer生成的令牌,而不是原始字符

其次,当lexer规则无法匹配字符时,lexer会产生“标记识别”错误(默认情况下,lexer将跳过无法识别的字符,产生错误,并且没有相应的标记供解析器使用,并继续匹配输入流)

要解决此问题,请确保“.”将与lexer规则匹配。

我将“条件”更改为“条件:.*”,现在遇到了与问题无关的关于歧义的不同问题。非常感谢。我将“condition”改为“COND:.*”,现在遇到了与问题无关的关于歧义的不同问题。非常感谢。
condition: .*?;