摘要:
来源:mikespook 英文原文:http://noeffclue.blogspot.com/2014/05/compiler-part-10-compiling-to-c.html 项目地址:https://github.com/rthornton128/calc [01]概述 [02]编译、转 阅读全文
posted @ 2018-10-28 00:14
小天儿
阅读(560)
评论(0)
推荐(0)
摘要:
终于到最后一个步骤了! 我们的语言规格说明书如此简单,其实可以跳过 C 直接输出汇编。我有两个不这么做的原因。首先,移植性。在这个指引中,我无须编写任何特定架构的 C 代码。C 已经被移植到各种不同的系统中去了,因此可以让 C 编译器为我们做这个工作。 其次,对于许多程序员来说,汇编比起 C 来说要 阅读全文
posted @ 2018-10-28 00:11
小天儿
阅读(306)
评论(0)
推荐(0)
摘要:
在构建解析器之前,首先应当谈谈如何处理目标数据。 需要用某种抽象数据类型来保存所有需要解析的数据。树形数据结构很好的满足了我们的需求。这个树描述了编程语言的语法结构,它被很恰当的叫做抽象语法树(AST)。 AST 树形数据结构总是从一个根开始,我们的也是一样。通常,在一个成熟的编译器中,你通常会有一 阅读全文
posted @ 2018-10-28 00:10
小天儿
阅读(668)
评论(0)
推荐(0)
摘要:
长征已经走了很远。我们概览了扫描和抽象语法树的基本概念。现在终于可以向着解析前进。 如果你已经开始与概念点不停的斗争,那么我需要警告你,从现在开始会变得越来越难。解析可能是你脑袋里已有的概念中最难的部分。我们将处理扫描器发现的词素,给它们提供一个含义,并且在 AST 中保存结果对象。 在继续前行前确 阅读全文
posted @ 2018-10-28 00:10
小天儿
阅读(202)
评论(0)
推荐(0)
摘要:
现在终于可以开始在扫描器上工作了。 词法分析 那么,从哪里开始呢? 这是最难的一部分,对我来说,扫描看起来应该挺简单的,但是很快我就迷失在细节里。有许多种实现扫描器的方法,我只会向你展示其中的一种。这里是 Rob Pike 在一次演讲中的演示文稿,是关于另外一种很酷的方法:在 Go 中的词法扫描。 阅读全文
posted @ 2018-10-28 00:09
小天儿
阅读(297)
评论(0)
推荐(0)
摘要:
这是最后一部分关于 Calc 的设计规格! 设计语言 我希望尽量让语言保持简单。我管这个语言叫 Calc。很明了,就是用于计算器(calculator)。聪明吗,聪明吗?好,嗯,继续! 我还希望有一个单一的基础类型。我决定做一些与这个语言名字一样聪明的事情,就叫它 Integer(整数)。我知道,聪 阅读全文
posted @ 2018-10-28 00:08
小天儿
阅读(221)
评论(0)
推荐(0)
摘要:
在本文中,我们终于可以开始沉浸在代码中去了! 标识符 在之前的内容里,我们已经讨论了语法和需要扫描的标识符的集合。我们定义了表达式、数字和运算符。同时还明确期望有成对的括号。还应当让解析器知道,扫描器什么时候到达文件结尾。 在开始扫描之前,为了让扫描器能够工作之前,需要将代码中的标识符格式化。在编译 阅读全文
posted @ 2018-10-28 00:08
小天儿
阅读(281)
评论(0)
推荐(0)
摘要:
在第一部分概述了这一系列文章将介绍的内容。在第二、三部分粗略的浏览了计算机语言编译的各个步骤。 在本文中,将会比上几篇概述介绍的内容略微详细一些。我将讨论语言的规格说明书。 语言设计概述 我刚刚是不是说我将不再进行太多的概述?一转身,我就变成了一个卑鄙无耻的骗子。 为了让我们更快的进入编码阶段,我已 阅读全文
posted @ 2018-10-28 00:07
小天儿
阅读(242)
评论(0)
推荐(0)
摘要:
我们正在编写什么? 简单来说,是一个计算器。一个用于超级简单的数学语言的编译器。 至少当前来说,我们会尽量避免处理字符串和字符这些复杂的东西,并且集中精力在数字上。当然也不是所有的数字,仅仅整数而已。当前来说系统中仅有的“类型”就是它了。 添加新类型并不困难,实际上是很简单的,但是在这个游戏中,这样 阅读全文
posted @ 2018-10-28 00:06
小天儿
阅读(298)
评论(0)
推荐(0)
摘要:
在第二部分,在真正深入到编译实际的步骤之前,我会对一些定义作一些概述。 编译 编译是直将编写的代码从一个语言翻译为另一个更低层级语言的过程。一个 C 编译器其实并不会直接输出机器码。而是将 C 代码翻译为汇编语言。汇编编译器获取这些内容编译为机器码。C# 和 Java 会翻译为字节码。字节码在虚拟机 阅读全文
posted @ 2018-10-28 00:00
小天儿
阅读(909)
评论(0)
推荐(1)

浙公网安备 33010602011771号