摘要:
在上一章的旅程中,我们讨论了词法分析器的实现思路,我们也为词法分析器的实现做了许多准备工作。现在,就让我们来实现词法分析器吧。 1. 词法分析器的类定义 词法分析器的类定义如下: class __LexicalAnalyzer { // Friend friend class Core; publi 阅读全文
摘要:
在这一章的旅程中,我们将要为整个编译器的"前端中的前端":词法分析器的实现做好充足的准备。 1. 词法分析器概观 纵观编译器的输入:源代码,我们不难发现,源代码说白了也就是一个很长很长的字符串。而说到字符串,我们不难想到字符串的分割函数。这类分割函数以空格,或任意的什么字符或字符串作为分隔符,将一个 阅读全文
摘要:
在这一章的旅程中,我们将要深入编译器前端一探究竟。看看编译器前端到底由哪些组件组成,其分别又是在做什么。 1. 编译器前端的结构组成 似乎比我们想象的要简单,编译器前端仅由两个组件组成,词法分析器与语法分析器。请看下图: + + + + 源代码 -> | 词法分析器 | -> 记号流 -> | 语法 阅读全文
摘要:
编译器,近在咫尺却又远在天边。当我们写下任何非机器语言代码后,我们都需要借助编译器将这些代码变为通过计算机可运行的状态。但是,就是这样一个使用率极高的程序,我们对其却知之甚少。什么是编译器?编译器对我们的代码做了什么?又是怎么做的呢?如果你也怀有这些疑问,想要深入编译器内部一探究竟的话,那就随我一起 阅读全文