ANTLR IDL Грамматика - PullRequest
       9

ANTLR IDL Грамматика

1 голос
/ 09 декабря 2010

Использование 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 : ';'
 ;

Однако, кажется, это не работает, когда я запускаю отладчик с типом данных. Он просто останавливается, когда достигает «attribute_list». Изменение 'attribute_list' на 'attribute' работает нормально, но, очевидно, я хочу один или несколько атрибутов, а не только один.

Спасибо

...