写在前面
写一个编译器是一个非常艰巨的任务,即使现在的编译理论和技术使得编译器的编写周期大大缩短,但是编写一个编译器仍然是一个很困难的工作。因此学习编译原理的主要目的不是去写一个编译器,而是去理解编译的过程,根据编译的原理来优化自己的代码。还可以学习编译原理中一些处理字符的方法。如果掌握得比较好,还可以通过一些生成编译器的插件来写一个简易的编译器,比如JavaCC等等。
其次,在我看来,作为一个程序员,大多数时间都在和高级语言打交道,去了解自己所写的代码是如何被翻译成机器能够直接执行的机器码,是一件很有意思也很有意义的事。就像我在用C++里的STL时,也会思考这么丰富的功能是如何实现的。
如果只是为了应付考试,这门课确实是非常枯燥的,因此,抱着对技术的好奇去学习编译原理是很重要的。
另外,在进行复习的时候参考了哈工大的编译原理慕课,讲得非常好,简洁又容易理解,强烈安利。
学习内容
编译一份代码一般分多个环节进行:
1.词法分析
2.语法分析
3.语义分析和中间代码的生成
4.优化
5.目标代码的生成
在学校的课程中主要学习123环节,45只是稍作了解
由于是自己的总结加笔记,因此难免会有错误。其次,因为复习时间比较紧张,所以不会太深入,内容较少。