实验一 词法分析.doc

实验一 词法分析.doc

ID:56748211

大小:81.50 KB

页数:8页

时间:2020-07-07

实验一 词法分析.doc_第1页
实验一 词法分析.doc_第2页
实验一 词法分析.doc_第3页
实验一 词法分析.doc_第4页
实验一 词法分析.doc_第5页
资源描述:

《实验一 词法分析.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验一词法分析一、实验目的:通过本实验理解词法分析的整个过程,处理对象和处理的结果,了解词法分析在整个编译过程中的作用。二、实验学时:2学时。三、实验内容根据给出的简单语言的词法构成规则和单词集合,编制词法分析程序,要求能用给定的简单语言书写的源程序进行词法分析,同时建立相应的符号表文件存放正确的单词。输出分析结果于文件中,包括:(1)正确的单词符号及其单词种类的序对二元组。具体输出形式为:二元组:(单词种类,单词内码值)单词种类见五。四、实验方法构造识别单词集的自动机,编写程序实现。五、实验的处理单词集(注:单词种类统一分类如下:)单词符号单词种类任意变量名(以

2、字母开头由字母和数字组成的符号串)0(1)2{3}4;5=6+7*8>9<10,11‘12整型常数(由数字组成的符号串)30main26int21if22then23else24return25其它100六、处理程序例和处理结果例例1:源程序:main(){y=x-1;}处理结果:(26,"main")(1,"(")(2,")")(3,"{")(0,"y")(6,"=")(0,"x")(100,"-")(20,"1")(5,";")(4,")")例2:源程序main(){inta,b;b!=a-1;}处理结果:(26,"main")(1,"(")(2,")")(3

3、,"{"})(21,”int”)(0,"a")(11,",")(0,"b")(5,”;”)(0,"b")(100,"!")(6,"=")(0,"a")(100,"-")(30,"1")(5,”;”)(4,”}”)七、实验报告要求给出单词识别的状态转换图;带有注释(简单说明)的源程序。程序运行截图,要求运行结果内有输出自己的名字和学号.源程序:#include#include//strcmp函数所需usingnamespacestd;chartoken[8];//关键字比较临时存储空间charch;//每次输入字符存储char

4、prog[100]={0};//所有的输入存入intp=0;//计数变量intsyn;//关键字或其他代码的数字标号intn,i;char*keyword[6]={"int","if","then","else","return","main"};voidscaner();voidmain(){intselect=-1;//选择变量p=0;printf("输入需要分析的语句,以'#'结尾!");do//将所有字符存入prog数组中{ch=getchar();prog[p++]=ch;}while(ch!='#');p=0;while(select!=2){pr

5、intf("请输入1或21.开始词法分析2.退出");scanf("%d",&select);if(select==1){do{scaner();switch(syn){case-1:printf("词法分析出错");break;default:{if(syn==-2){printf("语句结束!");break;}printf("<%d,%s>",syn,token);break;}}}while(syn!=-2);printf("词法分析成功");}elsecontinue;}}voidscaner(){for(n=0;n<10;n

6、++)token[n]='';n=0;ch=prog[p++];while((ch=='')

7、

8、(ch==int(13))

9、

10、(ch==int(10)))//排除空格和回车ch=prog[p++];if((ch>='a'&&ch<='z')

11、

12、(ch>='A'&&ch<='Z')){do{token[n++]=ch;ch=prog[p++];}while((ch>='a'&&ch<='z')

13、

14、(ch>='A'&&ch<='Z')

15、

16、(ch>='0'&&ch<='9'));syn=0;for(n=0;n<6;n++){if(strcmp(token,keywo

17、rd[n])==0)//对输入字符和关键字进行比较{syn=n+21;//对关键字标号进行输出}}p--;}elseif(ch>='0'&&ch<='9'){p--;do{token[n++]=prog[p++];ch=prog[p];}while(ch>='0'&&ch<='9');syn=20;}else{//ch=prog[p++];switch(ch){case'(':syn=1;token[0]=ch;break;case')':syn=2;token[0]=ch;break;case'{':syn=3;token[0]=ch;break;case'}'

18、:syn=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。