Compiler construction ANTLR中重新操作的AST规则
我想知道如何编写重写规则来生成该规则的AST树Compiler construction ANTLR中重新操作的AST规则,compiler-construction,antlr,Compiler Construction,Antlr,我想知道如何编写重写规则来生成该规则的AST树 e5 : (simpleexpression) (relop simpleexpression)* ; relop : RELOP_GT | RELOP_LT | RELOP_GE | RELOP_LE ; 这似乎是一个二进制操作,(子)树的根是操作符,relop,叶是simpleexpressions。在这种情况下,只需使用内联树操作符^,它将使其前面的令牌/树成为根
e5 : (simpleexpression) (relop simpleexpression)*
;
relop : RELOP_GT
| RELOP_LT
| RELOP_GE
| RELOP_LE
;
这似乎是一个二进制操作,(子)树的根是操作符,
relop
,叶是simpleexpression
s。在这种情况下,只需使用内联树操作符^
,它将使其前面的令牌/树成为根:
e5 : simpleexpression (relop^ simpleexpression)?
;
relop : RELOP_GT
| RELOP_LT
| RELOP_GE
| RELOP_LE
;
请注意,我将*
更改为?
,因为您的原始规则将接受如下输入:
1 <= 2 < 3
将被解析为以下AST:
<=
/ \
1 2
1 <= 2
<=
/ \
1 2