如果我在Bison.y文件中设置断点,是否有一种方法可以检查该断点处的$$伪变量的内容?
3
A
回答
6
$$是语义值堆栈的顶部。这可能有点难以解释。如果你真的需要,堆栈指针可能被称为yyssp,堆栈可能被称为yyvsa,所以像yyvsa [yyssp]可能会给你想要的东西,这取决于你使用的野牛版本。看看生成的.tab.c代码。
3
Bison将堆栈保存为yyparse()
中的局部变量,动态分配。
解决临时调试问题的最简单方法可能是修补y.tab.c
,以便行*++yyvsp = yylval
也在全局中删除副本。你也可能想破解YYPOPSTACK()
来做同样的事情。
0
我重新定义了yylval
类型与%union
:
%union {
int int_val;
double double_val;
}
而我得到的是无论是yyval.int_val
或yyval.double_val
取决于$$
类型。
但正如Richard Pennington所说,最好的方法是查看生成的.tab.c
代码。
相关问题
- 1. 检查使用gdb
- 2. bison:空伪变量
- 3. GDB未使用变量
- 4. 多变量计算器Bison
- 5. 使用gdb检查寄存器的值
- 6. 如何使用GDB查看存储在堆栈上的变量
- 7. 使用Stata检查变量的存在
- 8. 使用javascript检查变量中的值
- 9. 如何处理yacc/bison中的变量引用(使用ocaml)
- 10. 使用GDB检查机器堆栈
- 11. 检查使用gdb 64bit显存出界
- 12. 使用GDB检查堆栈(x86)
- 13. 使用gdb检查字符串
- 14. 如何使用GDB检查堆栈帧?
- 15. 转:使用gdb打印变量
- 16. 检查变量
- 17. 检查变量,得到下一个变量,检查变量等
- 18. 使用php变量检查javascript中的变量
- 19. GDB回溯变量的值
- 20. 与gdb的奇怪变量
- 21. 检查现有表使用变量
- 22. BASH使用变量检查活跃connectecion
- 23. 检查可用变量
- 24. 使用Flex&Bison
- 25. Flex/Bison ...使用
- 26. 我需要使用flex/bison进行语义检查
- 27. 用gdb检查的sprintf()函数步步
- 28. 用C CUDA-GDB的视图变量/ C++
- 29. 空变量检查
- 30. 检查Linq变量
非常好的答案!但是,我将如何检查$ 1,$ 2,$ 3等...? – Jack 2016-04-05 13:54:08