目录
文章目录
语言的本质
在 19 世纪 50 年代,语言学家 Noam Chomsky 定义了一系列关于语言的重要理论。这些理论支撑了我们今天对于语言结构的基本理解。其中重要的一条结论就是 —— 自然语言都是建立在递归和重复的子结构之上的。
Chomsky 提出的理论是非常重要的。它意味着,虽然一门语言可以表达无限的内容,但我们仍然可以使用有限的规则去解析所有用该门语言写就的东西。这些有限的规则就叫语法(Grammar)。
当我们学习一门自然语言的时候,我们往往从语法开始。当我们学习一门编程语言的时候也一样,当我们尝试开发一门编程语言的时候亦如此,首先要考虑的就是语言的语法及其语义。
编译器的工作原理
高级编程语言需要借助编译器来生成二进制可执行文件,编译器的基本步骤以中间代码为界,可分为:
- 前端处理:读取字符流、词法分析、语法分析、语义分析;
- 后端处理:目标代码生成器、代码优化器、输出可执行文件。
前端处理的主要功能是产生一个可供后端处理的抽象语法树。
词法分析
词法分析(