Compiler construction ANTLR中重新操作的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。在这种情况下,只需使用内联树操作符^,它将使其前面的令牌/树成为根

我想知道如何编写重写规则来生成该规则的AST树

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