




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科实验报告课程名称:程序设计训练 学院:电子信息与电气工程学部 词法分析器程序说明: 此词法分析器是一个能够扫描输入的字符流,并将扫描到的字符按照二元式的形式保存到word.txt文件中的一个程序(也可以通过屏幕输出的方式输出)。通过词法分析可以为完成对应语言的编译程序做准备,同时词法分析器也可以完成对输入流的字符统计。运行环境: WINDOWS7,visualc++6.0。定义语言G={VN,VT,P,S}其中,VN={P,D,S,B,T’,L,L’,E,T,F,NUM,RELOP,ID}VT={int,if,then,else,while,do,read,write,;,&,|,{,},>=,<=,>,<,==,!=,=,+,-,*,/,++,--,(,),a~z,A~Z,0~9,}P={P→{DS}D→intID;{intID;}S→if(B)thenS[elseS]|while(B)doS|{L}|ID=E|write<E>;|readID;L→SL’L’→;L|eB→T’{∨T’}T’→F’{∧F’}F’→IDrelopID|IDE→T{+T|-T}T→F{*F|/F}F→(E)|NUM|IDNUM->0|1|2|3|4|5|6|7|8|9RELOP-><|<=|>|>=|==}S={P}P代表程序,D代表声明语句,S代表语句,L代表语句的表列,B代表布尔表达式,非零代表真。实现的代码如下#include<stdio.h>#include<string.h>#defineMAX80#defineIDMAX8//标识符最大长度为IDMAX个字符,最大输入字符为MAX个字符,类别编码syn,保留字共8个rwtab[8]charprog[MAX],token[IDMAX],ch;intsyn,p,m,n,sum;char*rwtab[8]={"int","if","then","else","while","do","read","write"};//保留字voidscaner();intmain(){FILE*fout;fout=fopen("word.txt","w");//建立单词本 p=0;printf("\npleaseinputastring(endwith'#'):\n");do{scanf("%c",&ch);prog[p++]=ch;}while(ch!='#');p=0;do{scaner();switch(syn){case-1:printf("youhaveinputawrongstring\n");return0;break;default: fprintf(fout,"%d\t%s\n",syn,token);//文件输出和屏幕输出切换 //printf("%s\t%d\n",token,syn);break;}}while(syn!=0);getchar();}voidscaner(void){sum=0;for(m=0;m<8;m++)token[m++]='\0';ch=prog[p++];m=0;while((ch=='')||(ch=='\n'))ch=prog[p++];if(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A'))){while(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A'))||((ch>='0')&&(ch<='9'))){token[m++]=ch;ch=prog[p++];}//匹配为标识符p--;syn=24;for(n=0;n<8;n++)//匹配为保留字if(strcmp(token,rwtab[n])==0){syn=n+1;break;}}elseif((ch>='0')&&(ch<='9')){while((ch>='0')&&(ch<='9')){sum=sum*10+ch-'0';ch=prog[p++];}p--;syn=25;}//匹配为NUMelse{switch(ch){case'&':syn=13;token[m++]=ch;break;case'|':syn=14;token[m++]=ch;break;case'<':token[m++]=ch;ch=prog[p++];if(ch=='='){syn=15;token[m++]=ch;}else{syn=15;p--;}break;case'>':token[m++]=ch;ch=prog[p++];if(ch=='='){syn=15;token[m++]=ch;}else{syn=15;p--;}break;case'+':token[m++]=ch;ch=prog[p++];if(ch=='+'){syn=22;token[m++]=ch;}else{syn=9;p--;}break;case'-':token[m++]=ch;ch=prog[p++];if(ch=='-'){syn=23;token[m++]=ch;}else{syn=10;p--;}break;case'!':ch=prog[p++];if(ch=='='){syn=15;token[m++]=ch;}break;case'=':token[m++]=ch;ch=prog[p++];if(ch=='='){syn=15;token[m++]=ch;}else{syn=21;p--;}break;case'*':syn=11;token[m++]=ch;break;case'/':syn=12;token[m++]=ch;break;case'(':syn=19;token[m++]=ch;break;case')':syn=20;token[m++]=ch;break;case'{':syn=16;token[m++]=ch;break;case'}':syn=17;token[m++]=ch;break;case';':syn=18;token[m++]=ch;break;case'\"':syn=12;token[m++]=ch;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030加工鸡肉行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030全自动洗衣机行业市场深度调研及供需格局与投资前景研究报告
- 2025-2030全球及中国音乐学校软件行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030全球及中国移动BI行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 2025-2030全球及中国汽车直驱电机行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030全球及中国护理点数据管理系统行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030全球及中国化学物流行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030全球及中国人工智能(AIoT)行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 2025-2030全球与中国母素甲行业发展现状及趋势预测分析研究报告
- 2025-2030儿童主题乐园行业深度调研及竞争格局与投资价值研究报告
- JTS-T-272-1-2014沿海港口建设工程投资估算指标
- 智能云服务交付工程师认证考试题库(网大版)-中(多选题)
- 中医医疗技术手册2013普及版
- 景区人员管理制度
- 采矿学课程设计-潘三煤矿1
- MOOC 空中机器人-浙江大学 中国大学慕课答案
- 供电所年度培训计划
- 北师大版数学五年级(下册)长方体(二) 练习四
- DB35T 2082-2022 人民防空疏散基地建设基本要求
- 再生铝商业计划书
- 江苏省苏州市2022-2023学年二年级下学期语文期中调研试卷(含答案)
评论
0/150
提交评论