野牛语法,访问返回变量

时间:2013-10-21 21:02:03

标签: c bison

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

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

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

2 个答案:

答案 0 :(得分:4)

中规则操作也有数字(但默认情况下不是返回类型)。因此,multi_stmt的值为$3,而不是$2

$1是开放式大括号(我认为应该是'{',而不是"{" - 在野牛中,它们是不同的 - ),$2是中期 - 规则行动,$3multi_stmt$4为近距离支撑。

答案 1 :(得分:0)

尝试删除第{行中的第二个"{" {。如果我理解正确,您打算定义语法规则{ multi_stmt },那么第二个{就是错误。