《实验一-词法分析.doc》由会员分享,可在线阅读,更多相关《实验一-词法分析.doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流实验一-词法分析【精品文档】第 7 页实验一 词法分析 一、实验目的: 通过本实验理解词法分析的整个过程,处理对象和处理的结果,了解词法分析在整个编译过程中的作用。 二、实验学时: 2学时。 三、实验内容 根据给出的简单语言的词法构成规则和单词集合,编制词法分析程序,要求能用给定的简单语言书写的源程序进行词法分析,同时建立相应的符号表文件存放正确的单词。输出分析结果于文件中,包括: (1) 正确的单词符号及其单词种类的序对二元组。 具体输出形式为:二元组:(单词种类,单词内码值)单词种类见五。 四、实验方法 构造识别单词集的自动机,编写程序实现。 五、实
2、验的处理单词集 (注:单词种类统一分类如下:) 单词符号单词种类任意变量名(以字母开头由字母和数字组成的符号串)0(1)234;5=6+7*8910,1112整型常数(由数字组成的符号串)30main26int21if22then23else24return25其它100六、处理程序例和处理结果例 例1:源程序: main() y=x-1; 处理结果: (26,main) (1,() (2,) (3,) (0,y) (6,=) (0,x) (100,-) (20,1) (5,;) (4,) 例2:源程序 main() int a,b; b!=a-1; 处理结果: (26,main) (1,()
3、 (2,) (3, )(21,”int”) (0,a) (11,) (0,b) (5,”;”) (0,b)(100,! ) (6,=) (0,a) (100,-) (30,1) (5,”;”) (4,”)七、实验报告要求给出单词识别的状态转换图;带有注释(简单说明)的源程序。程序运行截图,要求运行结果内有输出自己的名字和学号.源程序:#include #include /strcmp函数所需using namespace std;char token8;/关键字比较临时存储空间char ch;/每次输入字符存储char prog100=0;/所有的输入存入int p=0;/计数变量int sy
4、n;/关键字或其他代码的数字标号int n,i;char *keyword6=int,if,then,else,return,main;void scaner();void main()int select=-1;/选择变量p=0;printf(输入需要分析的语句, 以#结尾!n);do/将所有字符存入prog数组中ch=getchar();progp+=ch;while(ch!=#);p=0;while (select!=2)printf(请输入1 或 2 n 1.开始词法分析n 2.退出n);scanf(%d,&select);if(select=1)doscaner();switch(s
5、yn)case -1:printf(词法分析 出错n);break;default :if (syn=-2)printf(语句结束!n);break;printf(n,syn,token);break;while(syn!=-2);printf(词法分析 成功n);else continue;void scaner()for(n=0;n=a&ch=A&ch=a&ch=A&ch=0&ch=9);syn=0;for(n=0;n=0&ch=0&ch:syn=9;token0=ch;ch=progp;/退格操作break;case ,12其他八、实验小结通过本实验理解词法分析的整个过程,处理对象和处理的结果,了解词法分析在整个编译过程中的作用。这个实验的大体思路根据状态转换图,根据词法分析原理,编写程序,主要用的是switch语句,凡是不符合语法的就报错,经过不断地改错,以及思路加深了课堂知识的了解。
限制150内