语法错误,意外的标记,期望文件结束
syntax error, unexpected token, expecting end of file
当我运行我的解析器文件(编译Flex/Bison文件后获得的二进制文件)时,我得到以下错误。error: syntax error, unexpected TKN_PRIMARY, expecting end of file
以下是flex代码中定义的规则:
<PRIMARY_MME_STATE>{number} {
lexVal = YYText();
std::cout<<"PRIMARY MME --> "<<lexVal<<std::endl;
yylval->strVal = new std::string(lexVal);
return token::TKN_PRIMARYMME;
}
我的理解是,由于TKN_PRIMARY的值为零(这是为END %token END 0"文件结束"定义的值),而不是返回TKN_PRIMARY,它期望返回令牌END。请评论我的理解是否正确。以及如何解决这个问题。
如果TKN_PRIMARY
和END
具有相同的值(或者,通常,如果任何两个不同的令牌具有相同的值),则bison解析器将以不可预测的方式工作。
引用野牛手册:
然而,通常最好是让Bison选择的数字代码所有令牌类型。Bison会自动选择不需要的代码与其他字符冲突或与正常字符冲突
我认为这绝对是处理这个问题的最好方法。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- 我的C++文件期望用'while'代替 if。最后,它预计会出现'('
- C++ 使用 RapidXml 解析 XML 文件、包装类parse_error期望>
- 如何安全地编程,当您只能期望使用程序的建议文件锁定时
- 期望头文件中有一个参数
- 语法错误,意外的标记,期望文件结束