240 发简信
IP属地:四川
  • 实现简易的C语言编译器(part 12)

    这一部分,我们将基于之前创建好的抽象语法树为源代码生成具体的汇编语言代码。在这之前,我们先来看看下面这段源代码对应生成的汇编代码的内容:...

  • Resize,w 360,h 240
    实现简易的C语言编译器(part 11)

    上一部分,我们算是对汇编语言开了个头,介绍了基本操作指令相关的内容。这一部分,我们重点研究汇编语言的另外一块内容:栈帧结构。 7.3 栈...

  • Resize,w 360,h 240
    实现简易的C语言编译器(part 10)

    前面我们已经详细分析并实现了简易C语言的前处理、词法分析、语法分析和语义分析过程,最终得到了一棵没有语法错误、节点相互关系清晰的抽象语法...

  • 实现简易的C语言编译器(part 9)

    这一部分,我们研究语义分析中剩下的的流程和类型检查。 6.2 流程检查 还是以我们前面举例使用的那段源代码作为例子,经过声明检查...

  • Resize,w 360,h 240
    实现简易的C语言编译器(part 8)

    绕来绕去,千辛万苦,我们终于创建了抽象语法树,完成了对整个源代码结构性的分析,似乎可以喘一口气了。但是,对于下面的代码: 可以得到下面的...

  • Resize,w 360,h 240
    实现简易的C语言编译器(part 7)

    紧接着上一部分抽象语法树的内容。在这一部分,我们将利用这些定义好的节点(砖块)和抽象语法描述(水泥)搭建起完整的抽象语法树。 同词...

  • 实现简易的C语言编译器(part 6)

    我们已经重新抽象描述了C语言的表达式、语句和声明,并且进行了实现。如果大家对在实现中出现的并没有过多解释的Binop和Negative这...

  • 实现简易的C语言编译器(part 5)

    到这里,我们已经研究了词法分析中表达式和语句的描述和实现。这一部分,我们接着剖析声明这一块内容。 3.3 声明(declaration)...

  • 实现简易的C语言编译器(part 4)

    我们紧接着上一部分的内容,继续讨论表达式。 有了上一部分的基础,相信大家对这样的抽象描述已经有所了解了。类似的,我们可以直接写出包...