block:
"{" { //push scope;}
multi_stmt
"}" {
//pop scope
$$=new ASTNode_Block($2,..........)
}
我正在尝试在野牛中实施块结构。但是,我在这里遇到麻烦来访问$ 2(从multi_stmt返回的值)
ps:打算不使用“|”将它们分开,因此我可以按顺序执行它们。
答案 0 :(得分:4)
中规则操作也有数字(但默认情况下不是返回类型)。因此,multi_stmt
的值为$3
,而不是$2
。
$1
是开放式大括号(我认为应该是'{'
,而不是"{"
- 在野牛中,它们是不同的 - ),$2
是中期 - 规则行动,$3
为multi_stmt
,$4
为近距离支撑。
答案 1 :(得分:0)
尝试删除第{
行中的第二个"{" {
。如果我理解正确,您打算定义语法规则{ multi_stmt }
,那么第二个{
就是错误。