Код: Выделить всё
grammar TemplateGrammar;
//Parser Rules
start
: block
| statement
| expression
| parExpression
| primary
;
block
: LBRACE statement* RBRACE
;
statement
: block
| IF parExpression statement (ELSE statement)?
| expression
;
parExpression
: LPAREN expression RPAREN
;
expression
: primary #PRIMARY
| number op=('*'|'/') number #MULDIV
| number op=('+'|'-') number #ADDSUB
| number op=('>='|''|' skip ;
Here is what I get in the IParseTree when I put "Test" in the input:
"(start (statement (expression (primary (literal (string " Test "))))))"
Но когда я помещаю [test] (что почти так же, как и "test" , но с брекетами вместо цитат), анализатор не распознает токен ...
"(start [test])"
То же с числами, он хорошо распознает одинокие числа, такие как 1 , 123 , 12.5 и т. Д., Но не выражают 1+2 ...
. ColumnNames Правило, но хорошо ли работает с правилом string ?
Подробнее здесь: https://stackoverflow.com/questions/356 ... ly-parsing
Мобильная версия