ANTLR IDL语法

使用ANTLR我试图创建一个非常简单的IDL风格的语法。这是我到目前为止所拥有的。
grammar idl;

data_type 
 : 'DataType' ID LCURLY attribute_list RCURLY
 ;

modifier 
 : 'public'
 ;

primitive 
 : 'byte'
 | 'short'
 | 'int'
 | 'float'
 | 'double'
 ;

attribute 
 : modifier primitive ID END
 ;

attribute_list
 : attribute+
 ;

ID  : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
    ;

COMMENT
    :   '//' ~('n'|'r')* 'r'? 'n' {$channel=HIDDEN;}
    |   '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;}
    ;

WS  :   ( ' '
        | 't'
        | 'r'
        | 'n'
        ) {$channel=HIDDEN;}
    ;

LCURLY  : '{'
 ;

RCURLY  : '}'
 ;

END : ';'
 ;
但是,当我在'data_type'上运行调试器时,这似乎不起作用。当它到达'attribute_list'时它就会停止。将'attribute_list'更改为'attribute'工作正常,但显然我想要一个或多个属性,而不仅仅是一个属性。 谢谢     
已邀请:

要回复问题请先登录注册