![图片[1]-【ai精翻】编译器,解释器和形式语言-土狗cg资源站](https://www.cgltgcg.com/wp-content/uploads/2025/02/image-106.png)
课程描述
本课程旨在为初学者提供编译器入门知识。随着我们的发展,我们将逐步为一种非常简单的脚本语言构建一个解释器。
我们将介绍:
- 词法分析
- 语法分析
- 解析算法
- 中间表示(AST)
- 形式语言和语法
- BNF 符号和语法图
- 识别和报告错误
- 代码生成
- 编写我们自己的虚拟机
- 发出操作码和指令
- 类型检查
- …还有更多!
编译器一直被认为是一个困难的话题,并且它们与龙的历史联系(从《龙书》开始)从未真正对这一事业有所帮助。
我们会尽量从初学者的角度来解释每件事。你可以把它看作是为从未编写过解释器的开发人员提供的“编译器入门课程”。
我们将构建什么
我们将从头开始一起构建一个用于简单编程语言Pinky的编译器。想象一下,一种语法受到 Lua 和 ALGOL W 启发的玩具脚本语言。
x := 0
圆周率:= 3.141592
名称 := 'Pinky'
------------------------------------------------
-- 找出两个数之间的最大值
------------------------------------------------
函数 max(a, b)
如果 a > b,则
回车
结尾
保留 b
结尾
------------------------------------------------
-- 计算一个数的阶乘
------------------------------------------------
函数阶乘(n)
如果 n == 1 那么
ret 1
别的
ret n * 阶乘(n - 1)
结尾
结尾
------------------------------------------------
-- 主要功能
------------------------------------------------
函数主要()
我:= 0
while i <= 10 执行
打印(i)
我:= 我 + 1
结尾
对于 i := 1, 10 执行
打印(阶乘(i))
结尾
结尾
主要的()
我们的主要宿主语言是 Python。Python 允许我们将注意力集中在特定于编译器的概念上,同时提高工作效率。不过,我将尝试提供一些有用的提示,说明如何使用 C 编程语言实现我们刚刚学到的想法。
你需要的工具
您所需要的只是一个命令行、一个简单的代码编辑器和一个 Python 解释器。所有这些工具都是跨平台的,因此您可以在Windows、macOS或Linux上进行编码!

这门课程适合你吗?
如果您以前从未编写过解释器,或者即使编写过但仍然觉得对其工作原理的理解存在一些盲点,那么本课程绝对适合您!

这是一门独立的课程,没有任何先决条件。但是,如果您已经了解编码的基础知识(if-else、循环、函数),那么您可能会从中受益匪浅。
这门课程有何不同?
本课程不仅仅是关于如何使用第三方工具解析现有语言的简单教程。我们将从头开始为玩具编程语言构建解释器,同时探索形式语言和编译器的基础知识。

我们将始终尝试将事物放在历史背景中,以便您理解为什么现代编译器以这种方式工作。
如果您想了解计算机如何将高级语言翻译成机器可以执行的指令,那就系好安全带吧!这将是一次超级酷的纯粹书呆子乐趣之旅!




![[Ai精翻&中文朗读(会员免费)] Blender北欧小姐姐动画-土狗cg资源站](https://www.cgltgcg.com/wp-content/uploads/2024/06/微信图片_20240628145821-800x490.png)



![[包更新]Cinema4d动效-Msedov会员频道(已更到26年2月)-土狗cg资源站](https://www.cgltgcg.com/wp-content/uploads/2022/11/4f53c7e9dfa8fc348969ed9f685413a5-550x550.jpg)
![[包更新]cinema4d动效-Vincent Schwenk(更到26年2月)-土狗cg资源站](https://www.cgltgcg.com/wp-content/uploads/2022/11/Snipaste_2026-03-01_12-58-18-777x550.jpg)
![[Ai精翻] Romain Guillon会员频道 [作者目前已停更,已更到24年5月]-土狗cg资源站](https://www.cgltgcg.com/wp-content/uploads/2022/11/Hair-secret-rendering-800x450.jpg)
![[包更新]Cinema4d动力学-3dbonfire(已更到25年3月)-土狗cg资源站](https://www.cgltgcg.com/wp-content/uploads/2022/11/5ab4e1768c9530e29f1fd78121a0e11-550x550.jpg)
![[包更新]Redshift产品渲染-Ross Mason会员频道 (已更到25年5月)-土狗cg资源站](https://www.cgltgcg.com/wp-content/uploads/2022/11/000000-619x550.jpg)









请登录后查看评论内容