ANTLR外部输入x预期为x

ANTLR外部输入x预期为x,antlr,Antlr,我试图匹配一个非常基本的ANTLR语法。但是ANTLR一直告诉我他得到了输入“.”并期望“.” 完全错误是: line 1:0 extraneous input '.' expecting '.' line 1:2 missing '*' at '<EOF>' 和输入: .* 两个文件具有相同的字符集: regex.g: text/plain; charset=us-ascii test.grammar: text/plain; charset=us-ascii 不应该混淆Le

我试图匹配一个非常基本的ANTLR语法。但是ANTLR一直告诉我他得到了输入“.”并期望“.”

完全错误是:

line 1:0 extraneous input '.' expecting '.'
line 1:2 missing '*' at '<EOF>'
和输入:

.*
两个文件具有相同的字符集:

regex.g: text/plain; charset=us-ascii
test.grammar: text/plain; charset=us-ascii

不应该混淆Lexer规则。为什么这不能像预期的那样起作用

给定您的示例语法和此测试类:

import org.antlr.v4.runtime.*;
公共班机{
公共静态void main(字符串[]args){
字符串源=“*”;
regexLexer lexer=新的regexLexer(CharStreams.fromString(source));
regexParser parser=newregexparser(newcommontokenstream(lexer));
System.out.println(parser.start().toString树(parser));
}
}
以下内容打印到我的控制台:

(开始。*)

我的猜测是,您要么过于简化了语法,导致原始语法中的错误消失,要么没有生成新的lexer/parser类。

您是否检查过点在语法和输入中是否是相同的字符,也就是说,这不是另一个看起来相同的unicode字符吗?我将点从语法复制到输入文件中。所以,它们应该是一样的。
regex.g: text/plain; charset=us-ascii
test.grammar: text/plain; charset=us-ascii