这一部分,我们将基于之前创建好的抽象语法树为源代码生成具体的汇编语言代码。在这之前,我们先来看看下面这段源代码对应生成的汇编代码的内容: 这里使用的是OnlineGD...
上一部分,我们算是对汇编语言开了个头,介绍了基本操作指令相关的内容。这一部分,我们重点研究汇编语言的另外一块内容:栈帧结构。 7.3 栈帧结构 大多数机器只提...
前面我们已经详细分析并实现了简易C语言的前处理、词法分析、语法分析和语义分析过程,最终得到了一棵没有语法错误、节点相互关系清晰的抽象语法树。这一部分,我们将继续遍历这...
这一部分,我们研究语义分析中剩下的的流程和类型检查。 6.2 流程检查 还是以我们前面举例使用的那段源代码作为例子,经过声明检查的错误提醒,可以改成: 很重要...
绕来绕去,千辛万苦,我们终于创建了抽象语法树,完成了对整个源代码结构性的分析,似乎可以喘一口气了。但是,对于下面的代码: 可以得到下面的抽象语法树图示: 是由多个其它...
紧接着上一部分抽象语法树的内容。在这一部分,我们将利用这些定义好的节点(砖块)和抽象语法描述(水泥)搭建起完整的抽象语法树。 同词法分析实现的方式一样,我们首先...
我们已经重新抽象描述了C语言的表达式、语句和声明,并且进行了实现。如果大家对在实现中出现的并没有过多解释的Binop和Negative这样的结构还有一些印象,那么这一...
到这里,我们已经研究了词法分析中表达式和语句的描述和实现。这一部分,我们接着剖析声明这一块内容。 3.3 声明(declaration) 3.3.1 基本数据类型 ...
我们紧接着上一部分的内容,继续讨论表达式。 有了上一部分的基础,相信大家对这样的抽象描述已经有所了解了。类似的,我们可以直接写出包含关系和逻辑运算符的表达式的描...
在前几部分中,我们重点分析了前处理和词法分析过程,已经将源代码拆解成一个个的token了。接下来,我们将分析这些token的逻辑结构是否严格按照C语言定义的语法规则来...
最近无意翻到吴军的《见识》, 突然觉得有些引人入胜, 可能真的是因为自己足够的贫穷, 所以总想在书中去寻找那些所谓的安慰点, 因为他告诉了我, 比贫穷更可怕的东西究竟是什么。...
在上一部分中,我们分析并实现了词法分析的过程。这一部分,我们从头文件和宏定义两个方面入手,来分析前处理过程。 2.1 头文件 让我们先来看一段代码: ...
9 25岁,普通的上班族,长期久坐发胖,脱发,胃病,健康透支……和大多数普通90后一样,拿着卑微的薪水,拼着老命,没房,没车,未婚,存款微薄,仰望着楼市价格,三点一线的生活着...
从这一部分起,我们将逐步地去实现一个简易C语言编译器。所谓简易,就是会依照C语言的标准,忽略部分的语法,适当降低难度,实现包含基本功能的C语言编译器。我们将把主要的精...
0.1 引言 工作之余,闲来无事,便根据多方搜集的资料,基于Python实现了一个简易的C语言编译器,可以称之为SCC(Simplified C Compiler)。...