《编译原理》课程设计报告

《编译原理》课程设计报告

ID:17730691

大小:301.50 KB

页数:11页

时间:2018-09-05

《编译原理》课程设计报告_第1页
《编译原理》课程设计报告_第2页
《编译原理》课程设计报告_第3页
《编译原理》课程设计报告_第4页
《编译原理》课程设计报告_第5页
资源描述:

《《编译原理》课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《编译原理》课程设计报告设计题目:pl0编译器设计一、PL0程序的文法及,指令及属性翻译简化c语言文法定义(LL(1)文法)C程序::=voidmain(){函数体}函数体::=变量定义部分语句列变量定义部分::=变量定义变量定义部分

2、ɛ变量定义::=int变量表变量表::=标识符

3、标识符,变量表语句列::=语句语句列

4、ɛ语句::=条件语句

5、循环语句

6、读语句

7、写语句

8、复合语句

9、表达式语句

10、空语句条件语句::=if(表达式)语句循环语句::=while(表达式)语句读语句::=read(变量表);写语句::=write(表达式表);复合语句::={语句列};表达式语句::=表达式;空语句::=

11、;表达式定义(算符优先文法)表达式::=变量=表达式

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、表达式3<表达式4

27、表达式4表达式4::=表达式4+表达式5

28、表达式4-表达式5

29、表达式5表达式5::=表达式5*表达式6

30、表达式5/表达式6

31、表达式5/表达式6

32、表达式6表达式6::=!表达式7表达式7::=(表达式)

33、变量

34、常量PL0文法定义

35、《程序》::=《分程序》.《分程序》::=《常量定义》;《常后分程序》

36、《常后分程序》《常后分程序》::=《变量定义》;《变后分程序》

37、《变后分程序》《变后分程序》::=《过程定义》;《变后分程序》

38、《语句》《常量定义》::=const《常量定义表》《常量定义表》::=id=number

39、id=number,《常量定义表》《变量定义》::=var《变量表》《变量表》::=id

40、id,《变量表》《过程定义》::=procedureid;《分程序》《语句》::=《赋值语句》

41、《条件语句》

42、《循环语句》

43、《读语句》

44、《写语名》

45、《复合语句》

46、《过程调用语句》

47、ε《赋值语句》::=id:=《表达式》

48、《读语句》::=read(《变量表》)《写语句》::=write(《表达式表》)《表达式表》::=《表达式》

49、《表达式》,《表达式表》《条件语句》::=if《条件表达式》then《语句》《循环语句》::=while《条件表达式》do《语句》《复合语句》::=begin《语句列》end《过程调用语句》::=callid《参量表》::=《有参表》

50、ε《有参表》::=《表达式》,《有参表》

51、《表达式》《表达式》::=+《表达式1》

52、-《表达式1》

53、《表达式1》《表达式1》::=《表达式1》+《表达式2》

54、《表达式1》-《表达式2》

55、《表达式2》《表达式2》::=《表达式2》*《表达式3》

56、《表达式

57、2》/《表达式3》

58、《表达式2》mod《表达式3》

59、《表达式3》《表达式3》::=id

60、number

61、(《表达式》)《条件表达式》::=《条件表达式》or《条件表达式1》

62、《条件表达式1》《条件表达式1》::=《条件表达式1》and《条件表达式2》

63、《条件表达式2》《条件表达式2》::=not《条件表达式3》

64、《条件表达式3》《条件表达式3》::=(《条件表达式》)

65、《关系表达式》《关系表达式》::=《表达式》>《表达式》《关系表达式》::=《表达式》>=《表达式》《关系表达式》::=《表达式》<《表达式》《关系表达式》::=《表达式》<=《表达式》《关系表达式》::=《表达式》=《表达式》

66、《关系表达式》::=《表达式》#《表达式》PL0栈式机指令指令格式:指令码(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(procedure:过程定义开始)

67、,CALL(call:过程调用语句),BEGIN(begon:复合语句开始),END(end:复合语句结束),IF(if:条件语句开始),THEN(then:条件结束),WHILE(while:循环语句开始),DO(do:循环条件结束),READ(read:读语句),WRITE(write:输出语句),ODD(odd:判奇运算),//分隔符、运算符号DOT(点:.),COMMA(逗号:,),SEMICOLON

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。