Compiler construction ANTLR语法错误:以下选项永远无法匹配

Compiler construction ANTLR语法错误:以下选项永远无法匹配,compiler-construction,antlr,context-free-grammar,antlrv3ide,Compiler Construction,Antlr,Context Free Grammar,Antlrv3ide,我正在尝试使用ANTLR 3.4构建C编译器 我写的函数的语法 fundeclaration : typespecifier ID OPENP params CLOSEP compoundstmt ; typespecifier : INT | VOID ; params : VOID | paramlist

我正在尝试使用ANTLR 3.4构建C编译器

我写的函数的语法

fundeclaration  : typespecifier ID OPENP params CLOSEP compoundstmt     ;
typespecifier   : INT | VOID                                            ;
params          : VOID | paramlist                                      ;
paramlist       : param (COMMA param)*                                  ;
param           :  /*typespecifier*/INT ID (OPENSQ CLOSESQ)?            ;

compoundstmt    : OPENCUR vardeclaration* statement* CLOSECUR       ;
但使用两个Kleene星运算会给我带来错误:

warning(200): /CMinusMinus/src/CMinusMinus/CMinusMinus.g:24:40: 
Decision can match input such as "CLOSECUR" using multiple alternatives: 1, 2
As a result, alternative(s) 2 were disabled for that input
 |---> compoundstmt : OPENCUR vardeclaration* statement* CLOSECUR       ;

error(201): /CMinusMinus/src/CMinusMinus/CMinusMinus.g:24:40: The following alternatives can never be matched: 2
 |---> compoundstmt : OPENCUR vardeclaration* statement* CLOSECUR       ;

问题不在于您发布的规则(可能是
语句
规则)。你能编辑你的问题并发布完整的语法吗?@Bart编辑完句子规则后,它就起作用了。我认为我所犯的错误是将声明作为一个空的。酷的。在这种情况下,请随意删除此问题。