版权声明:欢迎转载,注明出处 https://blog.csdn.net/youyou519/article/details/84564161
首先说明这是网易云课堂中国科学技术大学华保健老师的课程《编译原理》听课笔记,大部分内容是ppt资料,为了方便记忆,写了如下笔记。
编译器具有非常模块化的高层结构。
一般有输出和输出。输入时某种编程语言,输出是某个机器平台的目标语言。分为前端和后端,前端处理输入语言,后端处理输出相关部分,如要翻译成目标机器指令集,如何将前端翻译成后端。
编译器可看成多个阶段构成的“流水 线”结构。
语义分析:对语法树进行错误判断,之后不会再报错。
中间代码:三级指针,SSA。
符号表:存储程序编译过程重要信息,给各个模块提供支持。
编译器由多个阶段组成,每个阶段都要 处理不同的问题,使用不同的理论、数据结构和算法
因此,编译器设计中的重要问题是如何 合理的划分组织各个阶段
- 接口清晰
- 编译器容易实现、维护
eg:
源语言:加法表达式Sum
- 两种语法形式:
- 整型n
- 加法e1+e2
目标机器:栈式计算机Stack
- 两条指令
- push n
- add
参考资料:
网易云课堂:编译原理课程(中科大)