语义实验的报告材料

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

语义分析实验报告

一:实验内容:用bison工具生成一个PL/0语言的语义分析程序,对PL/0源程序进行语义分析,并输出归约时产生的指令序列,然后输出结果。

二:实验环境:语法分析器生成工具:bison

•编程语言:C

三:源程序格式:

%{

声明--可选

%}

辅助定义--可选

%%

语法规则--必须有

%%

用户子程序--可选

四:设计思想

A.要求输出规约时所用的语法规则,所以考虑用pl0语言的EBNF范式(具体范式略)作为规约式的参考。

B.语法规则里,对词法分析出来的符号串给与特定的标记,然后将这个标记传给yyparse(),以便在语法分析时作为终结符。

C.在语法文件里将词法分析生成的lex.yy.c包括进来即可。具体源码请查看test.l和test.y文件。

五:测试说明

测试文件test1.pl0。

结果如下:

指令集合:

0 jmp 0 8

1 jmp 0 2

2 int 0 3

3 lod 1 3

4 lit 0 10

5 opr 0 2

6 sto 1 4

7 opr 0 0

8 int 0 5

9 opr 0 16

10 sto 0 3

11 lod 0 3

12 lit 0 0

13 opr 0 9

14 jpc 0 24

15 cal 0 2

16 lit 0 2

17 lod 0 4

18 opr 0 4

19 opr 0 14

20 opr 0 15

21 opr 0 16

22 sto 0 3

23 jmp 0 11

24 opr 0 0

符号表:

6 const val=0

1 const val=0

2 const aval=10

3 var blev=0 addr=3

4 var clev=0 addr=4

5 procplev=0 adr=2 size=3 结果集:

10?

40

六:心得体会

这次小程序的编写让我对编译程序的工作有了进一步的了解,让我的编译程序的原理及设计有了长足的进步,使我明白和更好的体会到了编译程序的作用。在这次的程序编写中,提高了自己的能力。

相关文档
最新文档