资源描述:
《《编译原理》课程设计报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《编译原理》课程设计报告学院:信息与机电工程学院班级:计算机(2)班姓名:郭艳婕学号:090400106指导教师:程晓锦设计题目:pl0编译器设计一、PL0程序的文法及,指令及属性翻译简化c语言文法定义(LL(1)文法)C程序::=voidmain(){函数体}函数体::=变量定义部分语句列变量定义部分::=变量定义变量定义部分
2、ɛ变量定义::=int变量表变量表::=标识符
3、标识符,变量表语句列::=语句语句列
4、ɛ语句::=条件语句
5、循环语句
6、读语句
7、写语句
8、复合语句
9、表达式语句
10、空语句条件语句::=if(表达式)
11、语句循环语句::=while(表达式)语句读语句::=read(变量表);写语句::=write(表达式表);复合语句::={语句列};表达式语句::=表达式;空语句::=;表达式定义(算符优先文法)表达式::=变量=表达式
12、变量+=表达式
13、变量-=表达式
14、变量*=表达式
15、变量/=表达式
16、变量%=表达式
17、表达式1表达式1::=表达式1
18、
19、表达式2
20、表达式2表达式2::=表达式2&&表达式3
21、表达式3表达式3::=表达式3==表达式4
22、表达式3!=表达式4
23、表达式3>=表达式4
24、表达式3>表达式4
25、表达式3<=表达式4
26、
27、表达式3<表达式4
28、表达式4表达式4::=表达式4+表达式5
29、表达式4-表达式5
30、表达式5表达式5::=表达式5*表达式6
31、表达式5/表达式6
32、表达式5/表达式6
33、表达式6表达式6::=!表达式7表达式7::=(表达式)
34、变量
35、常量PL0文法定义《程序》::=《分程序》.《分程序》::=《常量定义》;《常后分程序》
36、《常后分程序》《常后分程序》::=《变量定义》;《变后分程序》
37、《变后分程序》《变后分程序》::=《过程定义》;《变后分程序》
38、《语句》《常量定义》::=const《常量定义表》《常量定义表》::=id
39、=number
40、id=number,《常量定义表》《变量定义》::=var《变量表》《变量表》::=id
41、id,《变量表》《过程定义》::=procedureid;《分程序》《语句》::=《赋值语句》
42、《条件语句》
43、《循环语句》
44、《读语句》
45、《写语名》
46、《复合语句》
47、《过程调用语句》
48、ε《赋值语句》::=id:=《表达式》《读语句》::=read(《变量表》)《写语句》::=write(《表达式表》)《表达式表》::=《表达式》
49、《表达式》,《表达式表》《条件语句》::=if《条件表达式》then《语句》《循环语句》
50、::=while《条件表达式》do《语句》《复合语句》::=begin《语句列》end《过程调用语句》::=callid《参量表》::=《有参表》
51、ε《有参表》::=《表达式》,《有参表》
52、《表达式》《表达式》::=+《表达式1》
53、-《表达式1》
54、《表达式1》《表达式1》::=《表达式1》+《表达式2》
55、《表达式1》-《表达式2》
56、《表达式2》《表达式2》::=《表达式2》*《表达式3》
57、《表达式2》/《表达式3》
58、《表达式2》mod《表达式3》
59、《表达式3》《表达式3》::=id
60、number
61、(《表达式》)《条件
62、表达式》::=《条件表达式》or《条件表达式1》
63、《条件表达式1》《条件表达式1》::=《条件表达式1》and《条件表达式2》
64、《条件表达式2》《条件表达式2》::=not《条件表达式3》
65、《条件表达式3》《条件表达式3》::=(《条件表达式》)
66、《关系表达式》《关系表达式》::=《表达式》>《表达式》《关系表达式》::=《表达式》>=《表达式》《关系表达式》::=《表达式》<《表达式》《关系表达式》::=《表达式》<=《表达式》《关系表达式》::=《表达式》=《表达式》《关系表达式》::=《表达式》#《表达式》PL
67、0栈式机指令指令格式:指令码(f)所在层数差(l),操作数(a)PL0栈式机指令:LIT:将常数a取到栈顶LOD:将位于(当前层-l)层处的变量a取到栈顶STO:将栈顶处值存储到指定位置,l,a同上CALL调用当前-l层处的过程aINT:为调用过程在栈中开辟数据区,a为单元个数JMP:无条件转移指令,a目标地址JPC:条件转移指令,栈顶值的布尔值为非真时转移到a处,否则执行下面语句OPR:关系运算或算术运算PL0属性翻译MCONST(const:常量定义开始),VAR(var:变量定义开始),PROCEDURE(pr
68、ocedure:过程定义开始),CALL(call:过程调用语句),BEGIN(begon:复合语句开始),END(end:复合语句结束),IF(if:条件语句开始),THEN(then:条件结束),WHILE(while:循环语句开始),DO(do:循环条件结束),READ(read:读语句),WRITE(write:输出语句),ODD(od