首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析中文文件时出现flex错误"start-condition stack underflow“和"%option full”

解析中文文件时出现flex错误"start-condition stack underflow“和"%option full”
EN

Stack Overflow用户
提问于 2016-01-16 17:45:11
回答 1查看 241关注 0票数 0

我有一个flex扫描仪,可以正常运行很长一段时间,即使在一些中文文件上也是如此。最近我想让它更快,我添加了"%option full",它确实快了3倍。但在某些注释包含中文字符的文件上可能会失败。

错误消息是"start-condition stack underflow“。

我在我的lex源代码中添加了一些打印语句,并发现扫描器在某些开始条件下打印了这个错误,但是它没有运行任何包含"yy_push_state( SC )“的代码段。所以我认为flex缓冲区中可能有一些溢出。

那该怎么办呢?

EN

回答 1

Stack Overflow用户

发布于 2016-01-20 01:58:05

由于历史原因(或其他原因),如果您使用%option full%option fast,那么flex将默认生成7位扫描器(即%option 7bit)。

这真的很不安全,因为7位扫描器甚至不会尝试验证扫描的文本是否只由7位("ASCII")字符组成,并且它在遇到具有高位设置的字符时的行为是未定义的。如果您的输入是UTF-8或多字节,这肯定会发生。

因此您需要指定%option 8bit full。这将增加扫描仪表的大小,但现在这可能不是很重要。您可能希望尝试将%option 8bit full ecs作为中间设置。(我非常确定ecs不需要8bit,但它不会有什么坏处。)

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

https://stackoverflow.com/questions/34825578

复制
相关文章

相似问题

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