ANTLR4解析错误:输入时没有可行的替代方案

ANTLR4解析错误:输入时没有可行的替代方案,antlr,grammar,antlr4,parse-error,parsing-error,Antlr,Grammar,Antlr4,Parse Error,Parsing Error,我的语法显然是错误的,因为解析一个简单的文件会产生奇怪的错误消息 在不改变错误的情况下,我尽可能简化了以下语法(如果删除'this',AntlWorks的树gui输出会对示例文件的标记int进行不同的着色,尽管结构似乎相同) 演示代码: void main() { a = c; int b; } ANTLRWorks 2向我提供以下错误消息: line 3:8 no viable alternative at input 'intb' line 3:9 mismatched i

我的语法显然是错误的,因为解析一个简单的文件会产生奇怪的错误消息

在不改变错误的情况下,我尽可能简化了以下语法(如果删除
'this'
,AntlWorks的树gui输出会对示例文件的标记
int
进行不同的着色,尽管结构似乎相同)

演示代码:

void main() {
    a = c;
    int b;
}
ANTLRWorks 2向我提供以下错误消息:

line 3:8 no viable alternative at input 'intb'
line 3:9 mismatched input ';' expecting '()'

intb
是一个
localDecl
,根据语法中的
block
规则,它不能出现在第一个
语句之后。如果您使用以下命令来放松语法,那么您可以使用解析树侦听器在解析成功完成后生成有意义的错误消息

block
  : '{'
    (localDecl ';' | statement)*
    expr?
    '}'
  ;

intb
是一个
localDecl
,根据语法中的
block
规则,它不能出现在第一个
语句之后。如果您使用以下命令来放松语法,那么您可以使用解析树侦听器在解析成功完成后生成有意义的错误消息

block
  : '{'
    (localDecl ';' | statement)*
    expr?
    '}'
  ;

天哪,我怎么能看不到呢?天哪,我怎么能看不到呢?