如何制作一个简单的编译器?

​ 在自然语言深度学习没有出现之前, 计算机是如何把你写的高级代码转译到 Assembly Language.

​ 如何把优美的 if else 转化为 MOV, ADD, MUL 等等的语言, 计算机是如何知道你写什么的。

​ 这就是上世纪的浪漫 – 编译器

最简单的方法就是 Lex 和 Yacc , 别小看他们, 很多 Linux 的 Kernel Module 在编译的时候就需要用到 Lex 和 Yacc . 虽然这些东西已经复杂到很难理解了, 但是了解一下总归没有错误的。

**关于 Lex ** https://www.youtube.com/watch?v=54bo1qaHAfk

关于 Yacc https://www.youtube.com/watch?v=__-wUHG2rfM&list=PLkB3phqR3X43IRqPT0t1iBfmT5bvn198Z&index=2

你想写一个编译器吗?

https://www.youtube.com/watch?v=LCslqgM48D4

关于 Yacc 的历史:

Yet Another Complier-Complier, 其中 compiler-compiler 指的是能够编译 compiler 的 complier (禁止套娃!) , ***其实是 Compiler 的一部分***,负责生成 compiler.

其实 Parsing 本身就很难, 不然为什么会有这些工具呢?能去 Youtube 大学就去看吧。