首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用lex /创建扫描器?

使用lex /创建扫描器?
EN

Stack Overflow用户
提问于 2015-09-18 18:41:08
回答 1查看 597关注 0票数 0

最近,我一直在研究关于词法分析的编译器理论。据我所知,有一些方法可以构造词法扫描器,例如:

  • 使用Lex/Flex自动生成扫描仪。
  • 自己造一个。在示例中,我遇到了使用预读技术(模拟DFA、NFA)的交换机用例模型。

我的问题是,其中哪一个更适合实现基本的编程语言(包括变量、条件、循环)?在实践中应如何使用?两者都能用吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-20 00:19:59

lex对于简单的语言很有用,但在那些语法复杂的语言中没有使用(例如,flex/lex不使用用lex编写的扫描器来处理lex输入)。偶尔有人会问如何管理多个语法扫描器(很久以前,我曾在一个程序中帮助某个人使用多个lex和yacc文件--使用sed,因为这是在flex/bison提供帮助重命名选项之前)。

为了进行实际演示,六类电子邮件对大多数语法突出显示模块使用lex/flex。不是全部。Perl和ruby在lex/flex中太复杂了,因为它们嵌入正则表达式的方式没有什么线索。另一方面,它有一个可行的(但很大)的lex/lex扫描仪--用lex编写的。为了举例说明,我在卑鄙的常见问题中添加了一个副本(参见结果)。

我们可以列出类似的事情,但通常情况下,使用lex的原因是语法的复杂性。此外,管理错误恢复(根据某些人)是一个选择的理由。

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

https://stackoverflow.com/questions/32658943

复制
相关文章

相似问题

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