全球旧事资料 分类
sca
er函数:词法扫描程序;3pri
t函数:由mai
函数调用,判别每一个已识别单词的种类,并将其以结构体形式标准化;4readFromFile函数:由mai
函数调用,将源程序代码读出,并暂存至数组prog200中;
3
f5writeToFile函数:由mai
函数调用,把标准的二元组写入文件中。
三、程序运行截屏
1、待扫描的程序源代码(progtxt文件)、待扫描的程序源代码(文件)
2、程序执行过程、
3、程序执行结果(resulttxt文件)、程序执行结果(文件)
4
f四、源代码
由于源代码较长,故附于文档最后。
五、心得体会
这个词法分析器,加深了我对有穷自动机的理解,在编写词法分析器的过程中,我不断将程序算法和自动机的概念相对比,逐步理解了初态、终态、状态转换、接受、拒绝等概念在实际编程中的应用。这个词法分析程序,能识别大部分的C语言单词,并能指出错误的位置。对分析出的单词也能够以二元组的形式存储到文件中。但该程序依然存在一些问题,比如,不能对字符串常量进行有效识别,不能识别汉字等。词法分析器是编译器与外部交互的接口,是进行后续工作的基础,因此,词法分析程序健壮性和正确性十分重要,掌握词法分析程序的设计技术是学好编译技术的第一步,也是极为重要的一步。
六、附录(程序源代码,仅扫描函数)附录(程序源代码,仅扫描函数)
voidsca
eri
tijcharchi
tle
strle
progi
tsca
edChars1暂存源程序代码中的一个字符源程序代码长度已扫描过的字符不包括本行的下标,计算列数时使用已扫描过的字符不包括本行的下标不包括本行的下标,
5
fi
tli
e1i
trow1
记录当前行数初始化为1记录当前行数记录当前列数初始化为1记录当前列数
fori0ile
ichprogij0ifchcht空格或水平制表(即tab键)空格或水平制表(co
ti
ueifch
li
esca
edCharsico
ti
ueifisalphachch是字母whileisalphaprogiisdigitprogitoke
jprogiitoke
j0ipri
ttoke
co
ti
ueelseifisdigitchch是数字whileisdigitprogitoke
jprogiitoke
j0ipri
ttoke
co
ti
ueelsech是符号
1
fchartswitchchcasetoke
jchtprogiifttoke
jtelseitoke
j0pri
ttoke
break
casetoke
jchtprogiifttoke
jtelseift双斜杠注释符whileprogi
co
ti
ueelseiftr
好听全球资料 返回顶部