原文在此。
————翻译分隔线————
编译器(7)-扫描
第一部分:介绍
第二部分:编译、转译和解释
第三部分:编译器设计概览
第四部分:语言设计概述
第五部分:Calc 1 语言规格说明书
第六部分:标识符
现在终于可以开始在扫描器上工作了。 (more…)
原文在此。另外推荐阅读王大师的“设计和开发 Yin 语言”,你会看到另一个完全不同的语言设计思路。
————翻译分隔线————
第一部分:介绍
第二部分:编译、转译和解释
第三部分:编译器设计概览
在第一部分概述了这一系列文章将介绍的内容。在第二、三部分粗略的浏览了计算机语言编译的各个步骤。
在本文中,将会比上几篇概述介绍的内容略微详细一些。我将讨论语言的规格说明书。 (more…)
好文不多说,系列长文,大家耐心等吧。原文在此。
————翻译分隔线————
我对编译器的工作原理已经感兴趣很久了。神秘的指令和奇异的行为总是会令我迷惑不已。也从未真正理解优化是如何进行的,以及编译器又是如何知道我到底做错了什么。
当我决定学习如何编写编译器的时候,我发现有许多关于这个领域的术语和缩写。什么是 SLR 或 LALR 解析器?什么是该死的词位(lexeme)或有限自动机(finite automata)?什么是递归下降分析(recursive-descent parsing)?什么是 AST?
最开始的时候,这真是铺天盖地。 (more…)
Go team 总是能带来一些惊喜的,关于 Go 的链接器,看来在 1.3 版本中要大修了。
————翻译分隔线————
Russ Cox
2013 年 11 月
在构建和运行一个标准的 Go 程序时,链接器是最慢的一部分。为了解决这个问题,我们计划将链接器拆分到两部分。其中的一部分可能会用 Go 来编写。
链接器总是 Plan 9 工具链中最慢的部分之一,而现在它是 Go 工具链中最慢的部分了。Ken Thompson 在关于工具链的概述中进行了总结:
关于 Go 的内存结构在 Go 内存模型 中已经有介绍,但是内容相对简单,许多细节也一带而过。Ross Cox 的这篇文章 Go Data Structure 讲解得比较系统也很全面的一篇。翻译至此,希望能对大家有帮助。
2009 年的旧文,发现自己当时没有翻译完。所以再次做了增补和修改。如果我没记错,应该已经有人在 OSC 上发表过同一篇文章的翻译了。大家对照参考阅读吧。
————翻译分隔线————
每当给新手介绍 Go 的时候,我发现为了建立起关于哪个操作成本更加高昂的正确观念,将 Go 如何为其值分配内存说明清楚会很有帮助。本文介绍了基础类型、结构体、数组和切片(slice)。
(more…)
之前 Dave Cheney 已经为我们讲解过了 Go 是如何用 go 编译自己的。这里,他继续给大家讲解一下 go build 命令是如何工作的(原文)。
————翻译分隔线————
本文以 Go 的标准库为例,介绍了 Go 编译过程的工作原理。