2013-10-21 118 views
0
block: 
    "{" { //push scope;} 
    multi_stmt 
    "}" { 
     //pop scope 
     $$=new ASTNode_Block($2,..........) 
    } 

我想在野牛中實現塊結構。不過,我在這裏遇到$ 2(從multi_stmt返回的值)的問題野牛語法,訪問返回變量

ps:它的目的不是使用「|」把它們分開,因此我可以讓它們按順序執行。

回答

0

請嘗試在第"{" {行中刪除第二個{。如果我理解正確,你打算定義一個語法規則{ multi_stmt },所以第二個{這裏是一個錯誤。

4

中等規則操作也有數字(但默認情況下不包含返回類型)。所以multi_stmt的值是$3,而不是$2

$1是開括號(我想應該是'{',不"{" - 野牛,它們是不同的 - ),$2是中期的規則操作,$3multi_stmt$4是密切括號。