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 ;
しかし、2 つの 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 ;