野牛C 解析器缩放问题
Bison C++ parser scaling issues
我使用野牛3.0.4 flex2.6.0生成C 解析器。对于小文件来说一切都很好,但是当事情变得很大(一百行或非常大的标记)时,我开始遇到陌生人错误:
"致命的弹性扫描仪内部错误 - 未找到动作"
我进行了一些调试 研究,我相信这是一个堆栈问题,而Bison手册告诉您设置yyinitdepth ....
- 问题是,我在哪里设置宏?我把它放在.yy文件的开头,但似乎没有任何改变。
- 有没有办法在运行时打印/显示值?
我试图升级到野牛3.2,以查看是否解决了问题,但我得到了此错误:
"错误:宏" yy_rvref"通过了2个参数,但仅1"
有什么想法吗?我完全卡住了!
This is what my .yy file looks like:
%skeleton "lalr1.cc"
%require "3.0"
%debug
%locations
%defines
%define api.namespace {SIT}
%define parser_class_name {SIT_Parser}
%code requires{
namespace SIT {
class SIT_Reader;
class SIT_Scanner;
}
// The following definitions is missing when %locations isn't used
#ifndef YY_NULLPTR
#if defined __cplusplus && 201103L <= __cplusplus
#define YY_NULLPTR nullptr
#else
#define YY_NULLPTR 0
#endif
#endif
#ifndef YYINITDEPTH
#define YYINITDEPTH 9000
#endif
该问题表明某种内存腐败,这可能是解析动作中某个地方不确定行为的结果(从您的问题中看不到)。
极不可能成为解析器堆栈溢出,因为野牛生成的解析器会报告因超出解析堆栈的容量而导致的任何错误。(它带有适当的错误消息调用yyerror
,并从解析功能返回2。)
此错误:
error: macro "YY_RVREF" passed 2 arguments, but takes just 1
是由于3.2中的一个(愚蠢的)错误。请升级到3.2.4,它解决了该错误。
相关文章:
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 计算缩放多边形的比例,得到给定的多边形面积
- QwtPlot具有相等的轴和自动缩放
- 如何在directx/c++中进行平移/缩放操作
- 在Qt中实现无限可缩放的画布
- 是否可以为 QPixmap 派生类嵌入缩放方法?
- 形状对象的旋转和缩放不正确C++
- 如何在 OpenSceneGraph 中缩放/旋转/移动资产
- 如何在OpenGL(GLFW,很高兴)中进行2D缩放?
- 改变或缩放两个正态分布以具有特定的相关系数
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何在OpenGL中正确旋转和缩放对象?
- 仅当类型为 std::complex 时,才进行缩放
- 将 VS Code 用于跨平台可缩放C++项目
- 根据帧速率缩放/缩小数字
- 在 c++ 中缩放浮点值
- 如何防止 DirectX C++程序的拉伸/缩放
- 野牛C 解析器缩放问题
- GDI+ 图像缩放问题
- glVertex3f缩放问题