- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理实验报告
实验名称:词法分析设计与实现
实验日期:
学生姓名:
学生学号:
实验目的
通过设计,调试词法分析程序,实现从源程序屮分出各种单词的方法;熟悉词法分析程 序所用的工具自动机,进一步理解自动机理论。掌握文法转换成自动机的技术及有穷自动机 实现的方法。确定词法分析器的输出形式及标识符与关键字的区分方法。加深对课堂教学的 理解;提高词法分析方法的实践能力。通过本实验,应达到以下目标:
掌握从源程序文件中读取有效字符的方法和产生源程序的内部表示文件的方法。
掌握词法分析的实现方法。
上机调试编出的词法分析程序。
二、 实验内容
编写词法分析程序,逐个读入源程序字符并按照构词规则切分成一系列单词。单词是语 言中具有独立意义的最小单位,包括标点符号、括号、转义符、关系算符、算术算符、赋值 运算符、保留字、标识符和常竝等。词法分析是编译过程中的一个阶段,在语法分析前进行。 也可以和语法分析结合在一起进行,由语法分析程序调用词法分析程序来获得当前单词供语 法分析使用。
输入:字符流
输出:Token序列
三、 实验方案
程序的功能:
从source, txt文件读入字符流,在destination, txt文件中写入token序列,token 序列为三元式,格式为[单词,种别码,内部码]。
实现方案:
基于有限自动机(FA)实现:
a) 定义各种单词的正则表达式(REs)
b) 将这些正则表达式转换成非确定有限自动机(NFA)
c) 将这些非确定有限自动机合并为一个非确定有限自动机
d) 将这个非确定有限口动机转换为具有最少状态的确定有限口动机(DFA0)
e) 基于该确定有限自动机编程
四、实验假设
定义程序所能识别的单词:
正则表达式见表1的单词条目
单词
单词类型
种别码
内部码
■
9
标点符号
1
—
标点符号
2
—
■
标点符号
3
—
a
标点符号
4
———
标点符号
5
—
■
?
标点符号
6
—
{
左大括号
7
—
}
右大括号
8
—
[
左中括号
9
—
]
右中括号
10
—
(
左小括号
11
—
)
右小括号
12
—
\
转义符号
13
—
关系算符
14
—
II
关系算符
15
—
!
■
关系算符
16
—
关系算符
17
—
关系算符
18
—
=
关系算符
19
—
=
关系算符
20
—
1 =
■
关系算符
21
—
二二
关系算符
22
—
+
算术算符
23
—
—
算术算符
24
—
*
算术算符
25
—
/
算术算符
26
—
%
算术算符
27
—
++
赋值运算符
28
—
+二
赋值运算符
29
—
—
赋值运算符
30
—
一二
赋值运算符
31
—
*二
赋值运算符
32
—
/=
赋值运算符
33
—
%=
赋值运算符
34
—
—
赋值运算符
35
—
include
保留字
36
—
void
保留字
37
—
bool
保留字
38
—
char
保留字
39
—
int
保留字
40
—
float
保留字
41
—
double
保留字
42
—
do
保留字
43
—
while
保留字
44
—
if
保留字
45
—
the n
保留字
46
—
else
保留字
47
—
for
保留字
48
—
goto
保留字
49
—
switch
保留字
50
—
case
保留字
51
—
continue
保留字
52
—
break
保留字
53
—
default
保留字
54
—
main
保留字
55
—
return
保留字
56
—
print
保留字
57
—
exit
保留字
58
—
letter|_(letter|digi tl)*
标识符
59
标识符在符号表中 的位置
digit(digi t)*
整数
60
整数在常数表中的 位罟
digit(digit)*, (digit )*
小数
61
小数在常数表小的 付冒
$
保留字
62
—
表1单词种类表
五、相关的有限自动机
0 1
图1 “;”的非确定有限自动机
其他的由一个字符组成的单词的非确定有限自动机与图1类似
图2 “”的非确定冇限口动机
其他的由2个字符组成的单词的非确定有限自动机与图2类似
图4整数的非确定冇限口动机
图5小数的非确定有限自动机
将这些非确定有限自动机合并为一个非确定有限自动机
然后将这个非确定有限自动机转换为具有最少状态的确定有限自动机(DFAO)
最后的DFAO如图6、7、8、所示:
SIM图 6 DFAO-1itad
SIM
图 6 DFAO-1
itad
? ? ? (b) ? (i (?) (?) ?
15 17 19 21 23 25 27 28 30 31 33 35 37
图 7 DFAO-2
l
原创力文档


文档评论(0)