版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
词法分析试验词法分析试验词法分析试验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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度云服务合同服务内容与系统维护
- 2024年度工程监理合同服务内容
- 2024年度C型钢损害赔偿合同
- 2024年度文化传媒推广合同
- 2024年度建筑工程施工用彩钢房租赁合同
- 记录机用纸市场发展现状调查及供需格局分析预测报告
- 2024年度版权转让合同标的为音乐专辑制作
- 2024年度保温板施工风险管理与控制合同
- 2024年度店面租赁合同:甲方出租店面乙方承租并支付租金的协议
- 2024年度办公楼维修基金管理合同:某物业管理公司与某办公楼业主委员会就维修基金管理的合同
- 高中英语外研版高中选修7Scopeandsequence-英语长难句教学反思
- 内部控制案例第06章案例18 乐视
- 图形创意(第二版)教材课件汇总完整版ppt全套课件最全教学教程整本书电子教案全书教案合集最新课件汇编
- 四年级上册数学说课稿-价格问题 人教版
- 四年级上册美术课件-第11课 漫画与生活丨浙美版 (18张PPT)
- 新企业会计准则2022年(原文+指南+说明)企业会计准则指南2022
- 29 名著阅读 《西游记》 2022暑假小升初衔接精品导学导练(原卷版+解析版)
- 教科版三年级上册科学试题-第二单元 空气 测试题 【含答案】
- 人音版 三年级上册音乐教案 -8 《浏阳河》
- 环境艺术设计手绘表现技法课件
- 蓝色插画风护理部工作总结PPT通用模板
评论
0/150
提交评论