block:
"{" { //push scope;}
multi_stmt
"}" {
//pop scope
$$=new ASTNode_Block($2,..........)
}
我正在尝试在 bison 中实现 block 结构。但是,我在访问 $2(multi_stmt 的返回值)时遇到了问题
ps: 打算不使用"|"将它们分开,这样我就可以让它们按顺序执行。
最佳答案
中间规则操作也有数字(但默认情况下没有返回类型)。所以multi_stmt
的值是$3
,而不是$2
。
$1
是左大括号(我认为应该是 '{'
,而不是 "{"
-- 在 Bison 中,它们是不同的 --), $2
是中间规则 Action ,$3
是 multi_stmt
而 $4
是右括号.
关于c - Bison 语法,访问返回的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19504650/