编译原理语义分析实验报告 免费.doc

编译原理语义分析实验报告 免费.doc

ID:58877910

大小:249.50 KB

页数:36页

时间:2020-09-20

编译原理语义分析实验报告 免费.doc_第1页
编译原理语义分析实验报告 免费.doc_第2页
编译原理语义分析实验报告 免费.doc_第3页
编译原理语义分析实验报告 免费.doc_第4页
编译原理语义分析实验报告 免费.doc_第5页
资源描述:

《编译原理语义分析实验报告 免费.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、...编译原理综合训练语义分析实验报告指导老师:班级:学生:zeadom学号:学生:学号:2011/6/29.......目录语言文法的形式化描述3语义规则3运行环境介绍5关键算法的流程图及文字解释51、本编译器的总框架52、在语义分析中的主要函数介绍53、产生布尔表达式74、While-do语句的语义分析85、词法、语法和语义分析的衔接8测试报告8附录12.......语言文法的形式化描述(BNF式)程序开始P->programi;SDnSC;定义语句SDn->SDSDn

2、nullSD->varintiSDTSDT->null

3、,iSDT复合语句SC->beginSnend

4、Sn->S;Sn

5、

6、null单个语句S->SD

7、SA

8、SIF

9、SW

10、SC赋值语句SA->i:=E算术表达式E->cET

11、iET

12、(E)ETET->AE

13、CE

14、DE

15、null;C->+

16、-

17、*

18、/;布尔表达式B->EAEBT

19、NOTB

20、(B)BTBT->DB

21、nullA->>

22、<

23、=

24、>=

25、<=

26、<>D->AND

27、ORif语句SIF->ifBthenSSELSESELSE->null

28、elseS2while语句SW->whileBdoS语义规则(属性文法)产生式语义规则i:=E{Gen(:=,E.PLACE,—,entry(i))}E®E1+E2{E.PLACE=Newtemp

29、;Gen(+,E1.PLACE,E2.PLACE,E.PLACE)}E®E1*E2{E.PLACE=Newtemp;Gen(*,E1.PLACE,E2.PLACE,E.PLACE)}.......E®-E1{E.PLACE=Newtemp;Gen(,E1.PLACE,—,E.PLACE)}E®(E1){E.PLACE=E1.PLACE}E®i{E.PLACE=Entry(i)}产生式语义规则E®i{E.truelist:=makelist(nextquad);E.falselist:=makelist(nextquad+1);Gen(jnz,entry(i),—,0);Gen

30、(j,—,—,0)}E®i1Ri2{E.truelist:=makelist(nextquad);E.falselist:=makelist(nextquad+1);Gen(jR,entry(i1),entry(i2),0);Gen(j,—,—,0)}E®┐E1{E.truelist:=E1.falselist;E.falselist:=E1.truelist;}E®(E1){E.truelist:=E1.truelist;E.falselist:=E1.falselist;}M®ε{M.quad:=nextquad;}E®E1∧ME2{backpatch(E1.trueli

31、st,M.quad);E.truelist:=E2.truelist;E.falselist:=merge(E1.falselist,E2.Falselist)}E®E1∨ME2{backpatch(E1.falselist,M.quad);E.truelist:=merge(E1.truelist,E2.truelist);E.falselist:=E2.Falselist}E®E1∧ME2{backpatch(E1.truelist,M.quad);E.truelist:=E2.truelist;E.falselist:=merge(E1.falselist,E2.Fal

32、selist)}产生式语义规则S®ifEthenMS1{backpatch(E.truelist,M.quad);S.nextlist:=merge(E.falselist,S1.nextlist)}M®ε{M.quad:=nextquad;}N®ε{N.nextlist:=makelist(nextquad);Gen(j,—,—,0)}S®ifEthenM1S1NelseM2S2{backpatch(E.truelist,M1.quad);backpatch(E.falselist,M2.quad);.......S.nextlist:=merge(S1.nextlist,

33、N.nextlist,S2.nextlist)}S®whileM1EdoM2S1{backpatch(S1.nextlist,M1.quad);Gen(j,—,—,M1.quad);backpatch(E.truelist,M2.quad);S.nextlist:=E.falselist}S®beginLend{S.nextlist:=L.nextlist}S®A{S.nextlist:=makelist()/*空链*/}L®S{L.nextlist:=S.nextlist}L®L1;MS{backpa

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

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

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