2012-12-04 25 views
2

所以,我對於statement規則這可能會導致更多的語句:ANTLR ambigous參考 - 如何獲得輸出?

statement returns[String txt] 
    : '{'{ 
      $txt="{"; 
     } 
     (statement{ 
      $txt+=$statement.txt; 
     })* 
     '}'{ 
      $txt+="}"; 
     } 
    | ... //more rules // ... 
    ; 

我越來越

參考$說法是模糊的;規則聲明是封閉規則並在生產中引用(假設封閉規則)

但不知道如何解決它。不知何故,我需要告訴ANTLR我需要在家長statement內部的statement的返回txt。請幫助我:)

回答

2

如果您使用$statement,ANTLR不知道您是指規則本身,還是內的statement

嘗試這樣:

statement returns[String txt] 
    : '{'{ 
      $txt="{"; 
     } 
     (s=statement{ 
      $txt+=$s.txt; 
     })* 
     '}'{ 
      $txt+="}"; 
     } 
    | ... 
     ; 
+0

巴特,我已經告訴你,你是最好的,但我告訴它一次!乾杯:) –

+0

我絕不是最好的,但無論如何感謝你:)當然,歡迎你。 –