摘要:
现在终于可以开始在扫描器上工作了。 词法分析 那么,从哪里开始呢? 这是最难的一部分,对我来说,扫描看起来应该挺简单的,但是很快我就迷失在细节里。有许多种实现扫描器的方法,我只会向你展示其中的一种。这里是 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)