Использование 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' работает нормально, но, очевидно, я хочу один или несколько атрибутов, а не только один.
Спасибо