数学与软件科学学院实验报告
学期:13至14__ 第_2 学期 2014年3月17 日
课程名称:编译原理专业:2011级5_班
实验编号:01 实验项目:词法分析器指导教师_王开端
姓名:张世镪学号: 2011060566实验成绩:
一、目的
学习编译原理,词法分析就是编译的第一个阶段,其任务就是从左至右挨个字符地对源程序进行扫描,产生一个个单词符号,把字符串形式的源程序改造成单词符号串形式的中间程序。执行词法分析的程序称为词法分析程序,也称为词法分析器或扫描器。词法分析器的功能就是输入源程序,输出单词符号
做一个关于C的词法分析器,C++实现
二、任务及要求
1.词法分析器产生下述C的单词序列
这个C的所有的单词符号,以及它们的种别编码与内部值如下表:
= + - * / & <<=>>===!= && || , : ; { } [ ] ( ) ID与NUM的正规定义式为:
ID→letter(letter | didit)*
NUM→digit digit*
letter→a | … | z | A | … | Z
digit→ 0 | … | 9
如果关键字、标识符与常数之间没有确定的算符或界符作间隔,则至少用一个空格作间隔。空格由空白、制表符与换行符组成。
三、大概设计
1、设计原理
词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号。
理论基础:有限自动机、正规文法、正规式
词法分析器又称扫描器:执行词法分析的程序
2、词法分析器的功能与输出形式
功能:输入源程序、输出单词符号
程序语言的单词符号一般分为以下五种:关键字、标识符、常数、运算符、界符。
3、输出的单词符号的表示形式:
(单词种别,单词符号的属性值) 单词种别用整数编码,关键字一字一种,标识符统归为一种,常数一种,各种符号各一种。
4、状态转换图实现
三、程序设计
1、词法分析器的流程图
2、总体模块设计
/*用来存储目标文件名*/
string file_name;
/*提取文本文件中的信息。*/
string GetText();
/*获得一个单词符号,从位置i开始查找。
//并且有一个引用参数j,用来返回这个单词最后一个字符在str的位置。*/