block:
"{" { //push scope;}
multi_stmt
"}" {
//pop scope
$$=new ASTNode_Block($2,..........)
}
我想在野牛中实现块结构。不过,我在这里遇到$ 2(从multi_stmt返回的值)的问题野牛语法,访问返回变量
ps:它的目的不是使用“|”把它们分开,因此我可以让它们按顺序执行。
block:
"{" { //push scope;}
multi_stmt
"}" {
//pop scope
$$=new ASTNode_Block($2,..........)
}
我想在野牛中实现块结构。不过,我在这里遇到$ 2(从multi_stmt返回的值)的问题野牛语法,访问返回变量
ps:它的目的不是使用“|”把它们分开,因此我可以让它们按顺序执行。
请尝试在第"{" {
行中删除第二个{
。如果我理解正确,你打算定义一个语法规则{ multi_stmt }
,所以第二个{
这里是一个错误。
中等规则操作也有数字(但默认情况下不包含返回类型)。所以multi_stmt
的值是$3
,而不是$2
。
$1
是开括号(我想应该是'{'
,不"{"
- 野牛,它们是不同的 - ),$2
是中期的规则操作,$3
是multi_stmt
和$4
是密切括号。