首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导致错误的Bison字符

问导致错误的Bison字符
EN

Stack Overflow用户
提问于 2021-12-23 16:37:00
回答 1查看 94关注 0票数 0

我正在用Bison和Flex开发一个简单的编译器。我的语法只接受字符串[a-z]+。如果输入是a0,我想显示一条错误消息,类似于“无法识别的字符0”。现在,所有非语法的东西最终都会被.截取.因此,字符串a0导致语法错误。我确实将Bison parse.error设置为详细,但它给了我对用户无用的令牌。是否有一种方法可以显示我想要的东西,即告诉用户输入到底有什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-23 22:57:09

这在lexer中是最简单的,而不是在解析器中。如果您的lexer (.l文件)以如下规则结尾:

代码语言:javascript
复制
.    { yyerror("ignoring unrecognized character '%c' in input", *yytext); }

然后简单地跳过假字符(并打印消息)。或者,您可以将它们作为(单个)令牌返回给解析器。

代码语言:javascript
复制
.    { return *yytext; }

然后,如果在bison代码中设置%define parser.error verbose,则会得到显示意外令牌和预期标记的语法错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70464953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档