2013-10-21 74 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是密切括号。