
毕业答辩-一门自定义编程语言的设计及其编译器的实现.pptx
22页一门自定义编程语言的设计 及其编译器的实现,太原理工大学·正式毕业答辩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,比如我程序里的赋值语句的规则 :“=” =“+” =“*” =“(”“)” = = =,消除左递归的文法 E→TE' E'→+TE' |ε T→FT' T'→*FT' |ε F→(E) | i,太原理工大学·正式毕业答辩PPT,太原理工大学·正式毕业答辩PPT,根据定义的文法生成的语法树,赋值语句,标识符,表达式,表达式,+,表达式,表达式,标识符,整数,标识符,=,表达式,*,,,,,,,,,,,,太原理工大学·正式毕业答辩PPT,语义分析,太原理工大学·正式毕业答辩PPT,修改后: Program p(){ int rate = 1; int initial =1; int position =1 ; … position = initial+rate * 60,例: function p(){ char rate = ‘p’; boolean initial = true; … position = initial + rate * 60 /* error */ /* error */ /* warning */;,太原理工大学·正式毕业答辩PPT,中间代码生成,太原理工大学·正式毕业答辩PPT,如:position:=initial+rate×60 生成四元式序列: (inttoreal 60 - t1 ) (× id3 t1 t2) (+ id2 t2 t3) (:= t3 - id1),运算符,运算对象1,运算对象2,结果,id1,id2,id3,t1,t2,t3是临时变量,四元式的形式为: (算符,运算对象1,运算对象2,结果),太原理工大学·正式毕业答辩PPT,代码优化,太原理工大学·正式毕业答辩PPT,目标代码生成,太原理工大学·正式毕业答辩PPT,(* id3 60.0 t1 ) (+ id2 t1 id1 ),MOV id3,R2 MUL #60.0,R2 MOV id2,R1 ADD R2,R1 MOV R1,id1,,太原理工大学·正式毕业答辩PPT,目标程序生成,太原理工大学·正式毕业答辩PPT,link.exe 和 masm.exe,感谢聆听!,。
