一、 实验目的:
了解词法分析的基本思想,
二、 实验内容:词法分析
三、所用仪器、材料:
DELL3000,在VC++6.0环境下运行。
四、 实验流程
根据分析的相应动作就可以构造出词法分析程序算法流程图,如下图示,在程序开始时,首先读入一个字符,若为空字符,则继续读,直到读进一个非空字符,读进字符有如下6种情况,要进行不同的处理
(1) 字母。继续读,直到遇见空格、分界符,文件尾或非数字字符。组合标识符;查保留字表。若为保留字,输出相应单词记号;若不是,输出标识符的单词记号及其单词值。
(2) 数字。继续读,直到遇见空格、或非数字字符出现或文件尾。输出无符号整数的单词记号及数字串。
(3) =、〈、〉、!。读下一个字符,判断是否为双字符分界符,若是,组成双字符分界符;若不是,输出单分界符记号。
(4) 非=、〈、〉、/等与双分界符首字符不同的单分界符。输出相应的单词记号及单分界符。
(5) /。读下一个字符。若不是‘*’,输出/的单词记号;若 ‘*’进行注释处理。词法分析不输出“/*“并要跳过注释内容直到遇到”*/“为止,然后返回开始状态,继续识别下一个单词符号。
(6) 非法字符。如果读进的字符不属于上面任意一种情况则说明词法分析程序从源程序读入了一个不法的字符,即该字符不属于程序语言所定义的所有单词符号的首字符的集合。词法分析程序在遇到不合法字符时要进行错误处理,报告错误信息,跳过这个字符,然后转入开始状态,继续识别下一个单词符号。
开 始
词法分析
结束
是否为空字
是否为字母
是否为数字
是否为纯单分符
是否为<,>,!,=
是否为/
错误处理
结 束
组合标示符
组合整数
输出单分符
读字符
读字符
查保留字
读字符
输出整数
是否为
保留字
输出标识
符
是否为=
输出双分符
读字符
输出单分符
是否为/
输出单分符/
注释处理
六、小结:通过这次实验,对词法分析的过程有了全面的理解。但对一些细节问题还有点模糊,在以后的学习中会注意。