[英]Splitting a grammar rule in Bison
我有野牛規則
block: LBRACE { some code } decls stmts RBRACE {more code }
;
問題在“更多代碼”部分,我有
$$ = $3 ;
基本上,我希望塊的返回值為stmts。 當我這樣做時,Bison說“ $ 3的塊沒有類型。” 如果刪除包含某些代碼的代碼塊並將其粘貼到后一個塊中,bison不會抱怨。 我有stmts及其所有派生聲明為類型。 那么,野牛不允許這樣做嗎? 我可以對語法進行更改以適應這種情況,但是僅使用上述內容將很繁瑣且容易得多。
使用$4
引用stmts
。 由於您具有規則中的操作 ,因此所有后續符號編號都會發生偏移,因為操作本身可以具有值。
相應的組件編號為:
$ 1 LBRACE
$ 2 { some code }
$ 3 decls
$ 4 stmts
$ 5 RBRACE
$ 6 { more code }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.