"词法分析实验报告"
本实验报告的目的是设计、编制和调试一个词法分析程序,从中加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。
一、实验目的:
通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。
二、实验要求:
使用一符一种的分法关键字、运算符和分界符可以每一个均为一种标识符和常数仍然一类一种。
三、实验内容功能描述:
1. 待分析的简单语言的词法:
- 关键字:begin、if、then、while、do、end
- 运算符和界符:=、+、-、*、/、<、<=、<>、>、>=、=、;、(、)
- 其他单词是标识符(ID)和整型常数(NUM)
2. 空格由空白、制表符和换行符组成。空格一般用来分隔ID、NUM、运算符、界符和关键字,词法分析阶段通常被忽略。
四、实验结果:
输入begin x:=9: if x>9 then x:=2*x+1/3; end #经词法分析输出如下序列:(begin 1)(x 10)(:17)(= 18)(9 11)(;26)(if 2)...
五、词法分析程序的C语言程序源代码:
void scanner(){
/* 共分为三大块,分别是标示符、数字、符号,对应下面的if else if和else */
if ((ch>= 'a' &&ch<='z')||(ch>='A' &&ch<='Z' ))
{
// 可能是标示符或者变量名
...
}
elseif ((ch>= '0' &&ch<='9'))
{
// 数字
...
}
else
{
// 其他字符
...
}
}
六、词法分析程序的实现:
在上述C语言程序源代码中,我们可以看到,词法分析程序可以分为三大块:标示符、数字和符号。标示符是通过比较已定义的标示符来识别的,而数字则是通过判断字符是否是数字来识别的。其他字符则是通过switch语句来识别的。
七、实验结果分析:
通过对实验结果的分析,我们可以看到,词法分析程序可以正确地识别出关键字、标示符、数字和符号等单词,并将其转换为相应的种别码。但是,在实验结果中,我们也可以看到有一些错误的识别结果,例如private被识别成了标示符。这是因为在图1中没有定义private关键字的种别码所致。
八、结论:
通过本实验,我们可以加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。同时,我们也可以看到词法分析程序的实现细节和实验结果的分析。