我阅读了 Sebesta book ,编译器将大部分时间花在对源代码进行词法分析上。因此,与语法分析器不同,优化词法分析器是必要的。
如果这是真的,为什么词法分析阶段比一般的语法分析要花这么多时间?
我的意思是语法分析派生过程。
最佳答案
首先,我不认为这是真的:在许多编译器中,大部分时间都没有花在对源代码进行词法分析上。例如,在 C++ 编译器(例如 g++)中,大部分时间都花在语义分析上,特别是重载解析(试图找出要执行的隐式模板实例化)。此外,在 C 和 C++ 中,大部分时间通常用于优化(创建单个函数或整个翻译单元的图形表示,然后在这些图形上运行长算法)。
在比较词法分析和句法分析时,确实可能词法分析的成本更高。这是因为两者都使用状态机,即每个元素有固定数量的 Action ,但在词法分析(字符)中的元素数量比在句法分析( token )中大得多。
关于language-agnostic - 编译器在解析过程中将大部分时间花在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1101267/