文档介绍:一门自定义编程语言的设计
及其编译器的实现
正式毕业答辩PPT
太原理工大学·正式毕业答辩PPT
什么是编译器?
机器语言:直接用计算机能够识别的二进制代码指令来编写程序的语言。由二进制的指令代码组成。
1 + 3 表示为 10000001 00000001 00000011
高级语言:使用人类可以轻易读懂便于书写的语言来编写程序的语言。由二进制的指令代码组成。
1 + 3 可以表示为:
int a = 1, b = 3; a = a + b;
太原理工大学·正式毕业答辩PPT
为什么做编译器?
太原理工大学·正式毕业答辩PPT
怎么实现编译器?
太原理工大学·正式毕业答辩PPT
词法分析
语法分析
语义分析
目标代码生成
中间代码生成
代码优化
目标程序
源程序
出错处理
表格管理
太原理工大学·正式毕业答辩PPT
词法分析
太原理工大学·正式毕业答辩PPT
词法分析后返回:
单词类型单词值
保留字 int
标识符(变量名) a
界符;
标识符(变量名) a
算符(赋值) =
标识符(变量名) a
算符(加) +
整数 2
界符;
如一个C源程序片断: int a; a = a + 2;
太原理工大学·正式毕业答辩PPT
语法分析
太原理工大学·正式毕业答辩PPT
比如我程序里的赋值语句的规则
<赋值语句>:<标识符>“=”<表达式>
<表达式>=<表达式>“+”<表达式>
<表达式>=<表达式>“*”<表达式>
<表达式>=“(”<表达式>“)”
<表达式>=<标识符>
<表达式>=<整数>
<表达式>=<实数>