c - Bison 语法,访问返回的变量

标签 c bison

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

我正在尝试在 bison 中实现 block 结构。但是,我在访问 $2(multi_stmt 的返回值)时遇到了问题

ps: 打算不使用"|"将它们分开,这样我就可以让它们按顺序执行。

最佳答案

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

$1 是左大括号(我认为应该是 '{',而不是 "{" -- 在 Bison 中,它们是不同的 --), $2 是中间规则 Action ,$3multi_stmt$4 是右括号.

关于c - Bison 语法,访问返回的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19504650/

相关文章:

c - 算术表达式也无法在 yacc 语法中正确解析

c - 关于typedef中单实例数组的一些问题

C pthread_cond_broadcast 似乎正在广播到所有 cond 变量

汇编中的C变量使用,如何在arm aarch64中选择32位操作数

c - 来自不同流的解析器

c - $1 在 yacc 中意味着什么,我怎样才能得到它的值

c - 如何解决在 Bison 中使用相同字符的两个不同运算符之间的歧义冲突

c - C语言中的复杂指针语句

c++ - 程序集中无法访问的代码

c++ - 使用像 std::string 这样有趣的类型来保存一些标记类型