Compiler construction 使用lex/创建扫描仪?
最近,我一直在学习有关词法分析的编译理论。 据我所知,有一些方法可以构建词汇扫描程序,如:Compiler construction 使用lex/创建扫描仪?,compiler-construction,lex,lexical-analysis,Compiler Construction,Lex,Lexical Analysis,最近,我一直在学习有关词法分析的编译理论。 据我所知,有一些方法可以构建词汇扫描程序,如: 使用Lex/Flex自动生成扫描仪 建立你自己的一个。在示例中,我遇到了使用预读技术(模拟DFA、NFA)的交换机案例模型 我的问题是哪一个更适合实现基本编程语言(包括变量、条件、循环)? 如何在实践中使用它们?这两种语言都可以使用吗?lex对简单的语言很有用,但在语法复杂的语言中不可用(例如,flex/lex不使用用lex编写的扫描器来处理lex输入)。偶尔有人会问如何管理多个语法扫描程序(很久以前
- 使用Lex/Flex自动生成扫描仪
- 建立你自己的一个。在示例中,我遇到了使用预读技术(模拟DFA、NFA)的交换机案例模型
你可以列一个这样的清单,但一般来说,使用或不使用lex的原因是语法的复杂性。此外,管理错误恢复(据某些人说)是选择的原因。词法扫描程序只将源代码划分为标记;它不会帮助您将标记解析为循环和条件等结构。如果您想构建真正的软件,请使用(f)lex;滚动您自己的词法扫描程序需要更多的工作,更易于维护,需要更多的调试,而且不太可能更快。您可以使用其中任何一个,但两者都使用是没有意义的。显然,像lex/flex这样的工具存在的原因是手动编写和维护扫描仪可能非常麻烦和耗时——特别是如果您正在开发编程语言以及lexer/parser。扫描仪与语法无关。我们可以就术语进行争论,但您显然有太多的空闲时间。