0
的評價令我有語法Antlr4如何捕獲表達
grammar Expr;
prog: expr;
expr: LP expr RP
| expr LP expr RP
| LP expr RP expr
| expr '*' '{' ',' expr
| expr op=NOT expr
| expr op=AND expr
| expr op=OR expr
| ID
;
NEWLINE:'\r'? '\n' ;
NOT: '~';
AND: '&';
OR: '|';
LP : '(';
RP : ')';
// lexer/terminal rules start with an upper case letter
ID
:
(
'a'..'z'
| 'A'..'Z'
| '0'..'9' | ' '
| ('+'|'-'|'*'|'/'|'_')
| '='
| '~'
| '{'
| '}'
| ','
)+
;
WS : [ \t\n]+ -> skip ;
我想提取被評估的表達式的節點,需要在其將被評估的順序如下。 所以對於一個表達式如1 * {A42,A53,A16,A3} &(A26 | A41)&(A51 = P & A2 = F | A7 = C) 將按照以下順序進行評價
A26 | A41
A51 & A2=F
A51 & A2F | AF=C
1*{A42,A53,A16,A3}&(A26|A41)
1*{A42,A53,A16,A3}&(A26|A41)&(A51=P&A2=F|A7=C)
主要興趣是找出評估表達式的順序。
你如何去做這件事。我嘗試編寫訪問者實現,但不知道如何提取訂單。
如果答案有幫助,請將其標記爲已接受。 – GRosenberg 2013-04-14 04:30:36