0
block:
    "{" { //push scope;}
    multi_stmt
    "}" {
        //pop scope
        $$=new ASTNode_Block($2,..........)
     }

我正在尝试在野牛中实现块结构。但是,我在这里访问 $2 时遇到了麻烦(来自 multi_stmt 的返回值)

ps:它的目的是不使用“|” 将它们分开,因此我可以让它们按顺序执行。

4

2 回答 2

4

中间规则操作也有数字(但默认情况下没有返回类型)。所以 的值multi_stmt$3,不是$2

$1是左大括号(我认为应该是'{',而不是"{"-在野牛中,它们是不同的--),$2是中间规则动作,$3multi_stmt并且$4是右大括号。

于 2013-10-21T21:34:39.320 回答
0

尝试删除 second {in line "{" {。如果我理解正确你打算定义一个语法规则{ multi_stmt },那么第二个{是一个错误。

于 2013-10-21T21:23:49.503 回答