一、实验目的
从实验功能以及学生能力培养方面陈述实验目的。
二、实验原理
陈述实现词法分析器的基本原理。
三、实验要求
1. 单词分类
明确所分析的代码片段包含的单词种别,以及有限单词的具体内容。比如保留字集合、运算符集合等。
2. 待分析的源程序的输入形式和识别后单词的输出形式
明确输入以文件输入,输出二元组中单词种别码的表述形式。
3. 单词状态转换图
给出各类单词识别的状态转换图。
4. 算法设计
定义实现词法分析程序的每个函数的首部,说明函数的主要功能。
实验一预习报告
实验题目: 词法分析器的设计
一、实验目的
1. 对一个简单的C语言的程序设计并实现一个简单的词法分析器;
2. 掌握利用状态转换图设计词法分析器的基本方法;
3. 利用该词法分析器完成对一个源程序字符串的词法分析;
4. 对于该词法分析器的设计,保证其输出形式是源程序的单词符号是二元式的代码,并可以通过输出界面准确地显示出来;
5. 培养学生自己创建一个词法分析器的思维能力,在设计一个词法分析器时,需要准确地明确各个单词符号和单词中别码。
二、实验原理
1. 词法分析器的主要任务是首先输入源程序,然后扫描源程序,分解各个字符串,识别出所定义的各个单词符号,单词符号主要包括关键字、标识符、运算符、界限符和常数;
2. 词法分析器的实现可以分为两个阶段,第一个阶段是扫描阶段,主要是从左至右扫描输入源程序,删除注释、压缩空白字符。第二个阶段是词法分析阶段,主要是按照语言的词法规则识别各类单词,并产生相应的单词符号。
三、实验要求
1. 单词分类
明确所分析的代码片段包含的单词种别,以及有限单词的具体内容。将具体的单词符号与对应的种别码一一对应如下:
其中erro代表错误的单词符号,#代表结束的单词符号,关键词由具体种别码代表,其中本词法分析器所设计的关键字有begin、if、then、while、end和int六种,标识符为一类种别码代表,整数常数由一类种别码代表,其余的运算符和界符也都是单词符号与单词种别码一一对应。
单词符号 | 单词种别码 | 单词符号 | 单词种别码 |
erro | -1 | / | 12 |
# | 0 | < | 13 |
begin | 1 | <> | 14 |
if | 2 | <= | 15 |
then | 3 | > | 16 |
while | 4 | >= | 17 |
end | 5 | = | 18 |
int | 6 | ; | 19 |
标识符 | 7 | ( | 20 |
常数(整数) | 8 | ) | 21 |
+ | 9 | { | 22 |
- | 10 | } | 23 |
* | 11 |
2. 待分析的源程序的输入形式和识别后单词的输出形式
明确输入以文件输入,输出二元组中单词种别码的表述形式。
3. 单词状态转换图
- 识别关键字和标识符的状态转换图
2. 识别整常数的状态转换图
3. 识别运算符和界限符的状态转换图
4. 算法设计
定义实现词法分析程序的每个函数的首部,说明函数的主要功能。
- 实现词法分析器的主函数
- 对于关键字和标识符的识别处理
- 对于整常数的识别处理
- 对于运算符的识别处理