2013-12-19 27 views
1

隨着antlr4我可以標註這樣的規則選擇:如何標記具有相同優先級別的表達式替代方法?

e : e '*' e # Mult 
    | e '+' e # Add 
    | INT # Int 
    ; 

據我瞭解,在上面的規則,MULT具有更高的優先級高於添加因爲MULT到來之前添加替代品的清單。

因此,舉例來說,如果我寫的:

e : e '*'  e # Mult 
    | e ('+'|'-') e # Add 
    | INT # Int 
    ; 

4 - 21 + 2-+具有相同的優先級。 但是,現在替代方案不在頂層。有沒有一種方法可以分別標記規則e '+' e # Adde '-' e #Sub,同時還有兩個替代方案具有相同的優先級別?

回答

3

恐怕不是。你可以用op =('+'|' - ')標記op,然後在樹行走過程中獲取ctx.op()值並詢問它的標記類型。

相關問題