欢迎来到天天文库
浏览记录
ID:56918474
大小:175.50 KB
页数:23页
时间:2020-07-24
《哈工大威海 编译原理实验报告资料.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《编译原理》实验报告班级:学号:姓名:实验一词法扫描器设计一实验目的通过设计调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能力。二实验内容设计一个简单的类C语言的词法扫描器。三实验要求(一)程序设计要求(1)根据附录给定的文法,从输入的类C语言源程序中,识别出各个具有独立意义的单词,即关键字、标识符、常数、运算符、分隔符五大类;文法见最后附录。(2)提供源程序输入界面;(3)词法分析后可查看符号表和TOKEN串表;(4)保存符号表和TOKEN串表(如:文本文件);(5)遇到错误时可显示提示信息,然后跳过错误部分继续进行分析。
2、(二)实验报告撰写要求(1)系统功能(包括各个子功能模块的功能说明);(2)开发平台(操作系统、设计语言);(3)设计方案;1)主数据流图;2)主要子程序的流程框图(若有必要);3)模块结构图;4)主要数据结构:符号表、TOKEN串表等。(4)具体设计过程(包括主控程序、各个功能模块的具体实现)。1.系统功能:根据附录给定的文法,从输入的类C语言源程序中,识别出各个具有独立意义的单词,即关键字、标识符、常数、运算符、分隔符五大类。然后输出本源程序的符号表显示在dos界面和存放在文本文件中。本程序以如下源程序(语法分析的例子)示范:源程序;inta;intb;intc;a=2
3、;b=1;if(a>b) c=a+b;else c=a-b;子功能模块有:关键字处理过程;字母的处理过程;数字的处理过程;整个词法分析处理过程;运算符处理过程以及主程序。2.开发平台(操作系统、设计语言);Windows7,MicrosoftVisualC++6.03.设计方案:(1)主流程图:开始读入文件CiFaFenXi()函数进行词法分析关闭文件流结束(2)主要子程序的流程框图:判断是否注释子模块①:开始输入文件,读完文件是否为注释?NY不处理继续判断模块①判断是否是字符子模块②:开始是否为字符?NY继续别的判断字符临时赋值给字符串变量读取下一字符是否为字符或者数字?
4、YN字符串变量是否是关键字?Y将变量类型2输出到DOS界面并写入文件将变量类型1输出到DOS界面并写入文件结束模块②判断是否为数字或者运算符子模块③:开始是否为运算符?是否为数字?NYY将数字赋给变量对每一个运算符做相应的处理读取下一变量输入小数
5、指数
6、小数点YN将变量类型3写入结果模块③实验结果:Test.txt内容:Token.txt文件内容:四实验总结:通过词法分析实验,首先我认识到词法分析就是将字符序列转换为单词(Token)序列的过程。词法分析器一般以函数的形式存在,供语法分析器调用。词法分析阶段是编译过程的第一个阶段,这个阶段的任务是从左到右一个字符一个字符地读
7、入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。并且对符号表有了一定的理解,符号表是:1、编译过程中编译程序不断汇集和反复查证出现在源程序中各种名字的属性和特征信息等有关信息。这些信息通常记录在一张或几张符号表中。2、符号表的每一项有两部分:一部分是名字(标识符);一部分是名字属性(标识符的有关信息)。3、编译过程中,每当扫描器(词法分析器)识别出一个名字后,编译程序就查阅符号表,看其是否在符号表中。如果它是一个新名字就将它填进表里。它的有关信息将在词法分析和语法-语义分析过程中陆续填入表中。4、符号表是边填边用。附录:类C语言的词法
8、文法id®Letterint10®Numint10
9、NumOP®+
10、-
11、*
12、/
13、>
14、<
15、=
16、(
17、)
18、;
19、‘
20、==
21、>=
22、<=
23、!=Keyword®if
24、then
25、else
26、while
27、doLetter®a
28、b
29、c
30、d
31、e
32、f
33、g
34、i
35、j
36、k
37、l
38、m
39、n
40、o
41、p
42、q
43、r
44、s
45、t
46、u
47、v
48、w
49、x
50、y
51、z
52、A
53、B
54、C
55、D
56、E
57、F
58、G
59、H
60、I
61、J
62、K
63、L
64、M
65、N
66、O
67、P
68、Q
69、R
70、S
71、T
72、U
73、V
74、W
75、X
76、Y
77、ZNum®0
78、1
79、2
80、3
81、4
82、5
83、6
84、7
85、8
86、9
87、ε®Letter
88、Num
89、ε实验二LR语法分析器设计一实验目的通过设计调试LR语
90、法分析程序,实现根据词法分析的输入TOKEN字,进行文法的语法分析;加深对课堂教学的理解;提高语法分析方法的实践能力。二实验内容使用附录中的文法,可以对类似下面的程序语句进行语法分析:inta;intb;intc;a=2;b=1;if(a>b)c=a+b;elsec=a-b;三实验要求(一)程序设计要求 (1)给出主要数据结构:分析栈、符号表; (2)将扫描器作为一个子程序,每次调用返回一个TOKEN;(3)程序界面:表达式输入、语法分析的表示结果(文件或者图形方式);(二)实验报告撰写要求(1)系统功能分析与设计
此文档下载收益归作者所有