← 返回首页

编译器, 解释器与形式语言 | 从零开始创建你自己的编程语言 | Compilers, Interpreters & Formal Languages

Pikuma编译器设计编程基础知识
¥34
资源状态:✓ 有效
Download link:Baidu Netdisk

课程介绍

Compilers, Interpreters & Formal Languages

通过从零开始编写解释器和编译器来创建你自己的编程语言。

课程描述

本课程旨在为初学者友好地介绍编译器。随着课程的进展,我们将逐步构建一个非常简单的脚本语言的解释器。

我们将涵盖以下内容:

  • 词法分析
  • 语法分析
  • 解析算法
  • 中间表示(抽象语法树)
  • 形式语言与文法
  • BNF符号与语法图
  • 错误识别与报告
  • 代码生成
  • 编写我们自己的虚拟机
  • 发射字节码
  • 类型检查
  • LLVM中间表示
  • 简单的代码优化
  • 还有更多!

编译器一直被认为是一个难以掌握的课题,而它们与“龙”的历史联系(始于《龙书》)并没有真正帮助改善这一印象。

我们将尝试以初学者的角度来讲解每一个概念。你可以将这门课视为面向从未编写过解释器的开发者的“第一课”。

我们将要构建的是什么呢?

我们将从零开始,共同构建一种名为 Pinky 的简单编程语言的编译器。可以将其视为一种受 Lua 和 ALGOL W 语法启发的玩具脚本语言。通过这个过程,你将深入了解编译器的工作原理,以及如何从头开始实现一个编译器。

我们的主要宿主语言将是 Python。Python 让我们能够专注于编译器特有的概念,同时保持极高的生产效率。不过,我也会尽量提供一些建议,教你如何使用 C 语言实现我们刚刚学到的想法。

要求

你只需要一个命令行界面、一个简单的代码编辑器和一个 Python 解释器。所有这些工具都是跨平台的,因此无论你使用的是 Windows、macOS 还是 Linux,都可以跟随教程一起编码!

此课程面向哪些人:

如果你从未编写过解释器,或者即使你有过相关经验但仍觉得自己在理解上存在一些盲点,那么这门课程绝对适合你!

这是一个自包含的课程,没有先修要求。然而,如果你已经了解编码的基础知识(如 if-else 语句、循环和函数),那么你将能够从中获得更多的收获。