付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
词法分析试验词法分析试验词法分析试验V:1.0精细整理,仅供参考词法分析试验日期:20xx年X月词法分析程序实验实验题目:手动构造词法分析程序实验目的:掌握手动构造词法分析程序的基本思想实验设备(环境):实验基本要求:根据状态转换图利用C语言手工编写一个词法分析程序,对指定的源程序,给出程序的输出结果。实验内容及步骤:一、内容及要求:1.上机调试一个词法分析程序(程序1,见最后)(1)将单词分为标识符、常数、保留字和分隔符。(2)事先建立一保留字表,以备在识别保留字时进行查询。变量名表及常数表则在词法分析过程中建立。(3)所输出的每一单词,均按形如(CLASS,VALUE)的二元式编码。2.词法分析程序的输入程序1的输入一个PASCAL源程序sourcePROGRAMsource;{thislittlesourceprogramisusedtoillustratecompilingprocedure.}VARx,y,z:integer;a:integer;BEGIN2ab%%#x:=23+5;z:=xDIV-3b;y:=z+18*3;a:=x+(y-2)DIV4;END.3.词法分析程序的输出程序1的输出形如(CLASS,VALUE)的单词串(1,'PROGRAM')(7,'source')(9,';')(2,'VAR')(7,'x')(9,',')(7,'y')(9,',')(7,'z')(9,':')(6,'integer')(9,';')(7,'a')(9,':')(6,'integer')(9,';')(3,'BEGIN')(7,'x')(9,':=')(8,'23')(9,'+')(8,'5')(9,';')(7,'z')(9,':=')(7,'x')(4,'DIV')(9,'-')(9,';')(7,'y')(9,':=')(7,'z')(9,'+')(8,'18')(9,'*')(8,'3')(9,';')(7,'a')(9,':=')(7,'x')(9,'+')(9,'(')(7,'y')(9,'-')(8,'2')(9,')')(4,'DIV')(8,'4')(9,';')(5,'END')(9,'.')4.词法分析程序(程序1)说明附在最后面的词法分析程序(程序1)以“程序1的输入一个PASCAL源程序source”为输入程序,并对该程序进行一些词法检查,最后输出形如(CLASS,VALUE)的单词串作为词法分析程序的结果。二、改写词法分析程序对词法分析程序(程序1)进行改写,使其能对如下的源程序进行词法分析:PROGRAMsource;{thislittlesourceprogramisusedtoillustratecompilingprocedure.}VARx,y,z:integer;a:integer;BEGIN2ab%%#x:=23+5;z:=xDIV-3b;IFx>zTHENy:=z+18*3ELSEa:=x+(y-2)DIV4;END.附:程序1一个词法分析程序: out(u,"."); break; case'-': out(u,"-"); break; case'*': out(u,"*"); break; case'+': out(u,"+"); break; case'(': out(u,"("); break; case')': out(u,")"); break; case':': ch=fgetc(fp); if(ch=='=') out(u,":="); else { fseek(fp,-1,1); out(u,":"); } break; case'{': ch=fgetc(fp); while(ch!='}') {if(ch=='\n') line++; ch=fgetc(fp); } case'': case'\t': break; case'\n': line++; break; default:if(ch!=-1){ report_error(line);//非法字符 cout<<"非法字符:"; TOKEN[0]=ch; TOKEN[1]='\0'; cout<<TOKEN<<endl;}break; } } } }//////////////////////////////////////////////////intlookup(char*b){ inti; //intc; for(i=0;i<6;i++) { if(strcmp(b,s[i])==0) { returni+1;////////////////////////////////////wende } } return0; }/////////////////////////////////////////////voidout(inta,char*token){ FILE*fp; fp=fopen("","a"); fprintf(fp,"(%d,'%s')",a,token);fclose(fp);/* if(a<=6) { cout<<"(关键字"<<","<<token<<")"<<endl; } if(a==7) { cout<<"(标识符"<<","<<token<<")"<<endl; } if(a==8) { cout<<"(整数"<<","<<token<<")"<<endl; } if(a==9) { cout<<"(专用符号"<<","<<token<<")"<<endl; } if(a==10) { cout<<"(非法字符"<<","<<token<<")"<<endl; } if(a==11) { cout<<"(错误符号"<<","<<token<<")"<<endl; }*/}//////////////////////////////////////////////////////voidreport_error(intn){ cout<<"第"<<n<<"行错误!"<<endl;}intmain(intargc,char*argv[]){ FILE*fp; FILE*fq; charch; printf("源程序是:\n"); fp=fopen("","r"); fq=fopen("","w"); while(!feof(fp)) { ch=fgetc(fp); printf("%c",ch); } printf("\n"); printf("词法分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026上半年海南事业单位联考三亚市市场监督管理局下属事业单位招聘3人备考题库 (第1号)附答案详解(黄金题型)
- 2026天津华北地质勘查局及所属事业单位招聘13人备考题库含答案详解(轻巧夺冠)
- 2026广东深圳大学艺术学部刘琨教授团队博士后招聘1人备考题库带答案详解(研优卷)
- 2026中国海峡人才市场南平工作部招聘见习生备考题库带答案详解ab卷
- 2026广西梧州市藤县嘉悦同心食品有限责任公司招聘36人备考题库及答案详解(历年真题)
- 2026年第一季度广西来宾市消防救援支队招聘政府专职消防队员35人备考题库带答案详解(突破训练)
- 2026四川绵阳富达资产经营有限责任公司招聘基建会计岗2人备考题库附参考答案详解(典型题)
- 2026上半年山东菏泽市曹县结合事业单位招聘征集部分普通高等院校本科及以上学历毕业生入伍6人备考题库附答案详解(培优b卷)
- 2026在京全国性宗教团体应届高校毕业生招聘16人备考题库附参考答案详解(达标题)
- 2026年青海省省直事业单位面向社会公开招聘工作人员备考题库带答案详解(能力提升)
- 小麦栽培课件
- 左额颞枕顶急性硬膜下血肿
- 三管三必须考试卷(附答案)
- 国企财务管理制度细则及执行标准
- 2025全国注册监理工程师继续教育考试题库及参考答案
- “无废医院”建设指引
- 绿色能源5万千瓦风力发电项目可行性研究报告
- 医药学术部年终总结
- 篮球比赛应急预案及措施
- 单位内部安全防范培训课件
- 2025年医疗器械收货与验收管理制度培训试题(附答案)
评论
0/150
提交评论