编译原理
实验报告
姓名:姓名:关海超学号:学号:200807010209专业:专业:计算机科学与技术班级:班级:0802班
f1
f一、实验目的
通过设计调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能力。
二、词法分析器的实现
1、词法分析过程的考虑、词法分析器的任务是将程序源代码看做一个字符串,只需从中分离出一个个具有独立意义的单词(包括标识符,符号和常量)即可,而无需考虑其在上下文环境中的正确性。基于此认识,词法分析的过程可如下描述:
词法分析器
初始化
读源程序字符
Y
是字母?
NY
是数字?
N
常数分析程序
其它单词分析程序
关键字和标识符分析程序
输出单词的内部表示
Y
是有字符?
N
结束
本程序中用户源程序存储在文件“Eprogtxt”文件中,程序首先调用readFromFile函数将源程序代码从文件中读出,放到数组中暂存,然后主函数调用sca
er函数对其进行逐个扫描,分离出的每个独立单词进行分类判断,构成二元组形式,再将其输出的文件“Eresulttxt”中进行保存。2、各种单词符号对应的种别码、0标识符21ret4263
2
f1整型常量2auto3brea4case5char6co
s7co
t8defa9do10dou11els12e
u13ext14flo15for16got17if18i
t19lo
20reg
2223242526272829303132333435363738394041
shosigsizstastrswitypu
iu
svoivolwhi
4344454647484950515253545556575859606162
64656667686970717273747576777879808182
3、关键数据结构的描述、计数器cou
t:将二元组写入文件时通过cou
t判断是否是首次写入,若是则清空文件,否则追加写入;字符串常量e
dStr:其值为“e
d”,在分析判断每一单词的种类时,该字符串作为rwtab表的结束标志;数组prog200:暂存从文件中读取的源程序代码,该词法分析器约定源代码长度不超过199;数组toke
20:暂存每次分离出的单个具有独立意义的单词,该词法分析器约定每个单词的长度不超过19;结构体result:存放一个单词的种别码和单词本身的值,在写入文件时以结构体中的元素为单位依次写入;4、程序结构的描述、本程序采用结构化设计方法,共有两个文件,六个模块,分别介绍如下:rwtabh文件包含一个模块,即各种单词符号对应的种别码,作为外部文件被mai
cpp文件引用。mai
cpp文件包含以下五个平行模块:1mai
函数:程序入口,控制整个程序的执行流程;2r