版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
词法分析试验词法分析试验词法分析试验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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 指数运算题目及答案解析
- AI在资产评估与管理中的应用
- 医院会议纪律管理制度
- 2026年黑龙江、吉林、辽宁、内蒙古高考化学试卷(含答案解析)
- 2026智慧园区智能化设计解决方案
- 2026年译林版(三起)版(新教材)小学英语三年级下册期末综合测试卷及答案(2套)
- 东至县主城区微改造精提升(一期)项目水土保持方案报告表
- 简阳市2025年第一批财政衔接推进乡村振兴补助资金(中央、省级、成都市级、本级)平泉街道特色产业发展项目水土保持报告表
- 税务申报税务筹划咨询合同
- 2026辅警面试题步骤及答案
- 2026重庆市合川区渭沱镇招聘农村基层本土人才13人考试参考试题及答案解析
- 期末复习课件2025-2026学年统编版八年级历史下册
- GB/T 11765-2026油茶籽油
- 2026河北邯郸市劳动就业服务局招聘公益性岗位人员考试参考题库及答案解析
- 2025四川省成都市中考物理试题(解析版)
- 2026年哈三中高三下学期三模数学试卷及答案
- 安徽省检察院书记员笔试真题
- 医院教育委员会工作制度
- 南京南京师范大学2025年招聘48人(第一批)笔试历年参考题库附带答案详解(5卷)
- 境外投资培训课件
- 《传染病防治法》学习
评论
0/150
提交评论