商软三班 倪伟锐 201506110225
一、 实验目的
通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进
行扫描过程中将其分解为各类单词的词法分析方法。
二、 实验内容和要求
编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。
三、 实验方法、步骤及结果测试
1. 源程序名:
词法分析.rar中
源程序名:词法分析.c
可执行程序名:词法分析.exe
2. 原理分析及流程图
主要总体设计问题:
定义字符串类型Words[],不断向其中录入单词,先判断录入是否为数字,若不是则通过函数strcmp()比较其与种码表中各种码是否相同来判断其是否为关键字或者界符,若不是则为标识符。
3. 主要程序段及其解释:
int JdugeNumber(char Words[],int i,int N)
//判断是否为数字,是返回1,否则返回0
{
if(i==N)
return 1;
if(Words[i]>47&&Words[i]<58)
{
JdugeNumber(Words,i+1,N);
}
else
return 0;
}
int JdujeKeywords(char Words[])
//判断是否为关键字,是根据种别码返回相应数字,否则返回-1
{
int i;
for(i=0;i<23;i++)
{
if(strcmp(Words,table[i][1])==0)
return i;
}
return -1;
}
4. 运行结果及分析
四、 实验总结
这个实验给了我许多启迪,首先是写代码时不应该局限于课本,许多复杂的步骤其实都能在数据库中找到相应的解决方法从而化简工作。第二是应该先理清程序的思路再进行编写,有时候一个好的开头往往会带来意想不到的简单过程与结束。