




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告词法分析程序设计【实验项目】1、 了解词法分析的主要任务。2、熟悉编译程序的编制。【实验要求】1、构造一个小语言的文法;2、设计单词的输出形式,单词的种类和值的表示方法;3、编写词法分析程序cffx.c;4、生成并输出单词符号表。【实验内容】根据某文法,构造一个基本词法分析程序。找出该语言的关键字、标识符、整数以及其他一些特殊符号,给出单词表(内容包括单词种类和值),构造符号表(内容包括name、kind、value和address等)。【实验步骤】1. 类C语言子集的文法G:program :;|int | double | llint | lldouble|,scanf(,)|printf(,)=|for(;)|while()|if()|else|;=|=|#|=|+|-|+|-|*|/|%()|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z0|1|2|3|4|5|6|7|8|92.单词分类1 、keyword (关键字):program | int | double | llint | lldouble | scanf | printf | for | while | if |else 2 、identification (标识符): a|b|c|3 、digit(数据):0|1|2|3|4|4 、operatorsign (运算符):=|=|#|=|+ +|- -|+|-|*|/|%5、 boundarysign(界符): |( )| :| ;| ,3. 词法分析源程序/*头文件*/#include #include #include #include /*全局变量*/char word20;/*暂存单词*/char test500,*p;int count=1;char Keyword1110=program,int,double,llint,lldouble,scanf,printf,for,while,if,else;/关键字数组char Operatorsign1410=,=,#,=,+,-,+,-,*,/,%;/运算符数组/*函数1:关键字、标识符识别*/char alpha()int i=0,j=0;/*j=0是标识符,j=1是关键字*/ char *opp; while(isalnum(*p)/*检查是字母还是数字,如果是字母返回1,是数字返回2*/wordi=*p;p+;i+; opp=word; for(i=0;i11;i+)/*把字母与关键字表核对,如果是关键字就设置j=1*/if(!(strcmp(opp,Keywordi)/*比较两个字符串*/printf( %d Keyword %sn,count,opp); /*识别关键字*/j=1; if(j=0) printf( %d Identification %sn,count,opp); /*识别标识符*/ p-; /*回退多读进的字符*/ return 0;/*函数2:数据识别*/char digit()int i=0;while(isdigit(*p)/*如果是数字,返回1,否则返回0*/wordi=*p;i+;p+; printf( %d Digit %sn,count,word); p-; /*回退多读进的字符*/ return 0;/*函数3:运算符识别*/char operatorsign()int i=0; char *opp; while(!isalnum(*p)/*检查是否是符号*/if(*p=|*p=|*p=(|*p=)|*p=:|*p=;|*p=,) break;wordi=*p;p+;i+; opp=word; for(i=0;i=1)n n j=i+2;n n elsen n j+;n nn); printf(The test program is:n); puts(test); p=test; while(*p!=0)/*检查源程序是否结束*/ memset(word,0,20); while(*p= |*p=n|*p=t) p+;/*检查是否是空白字符,如果是直接跳过*/ if(isalpha(*p)/*识别关键字或标识符*/alpha();if(isdigit(*p)/*识别整数*/digit();if(*p=|*p=|*p=(|*p=)|*p=:|*p=;|*p=,)/*识别界符*/printf( %d Boundarysign %cn,count,*p); if(*p=|*p=#|*p=|*p=+|*p=-|*p=*|*p=/|*p=%)/*识别运算符*/operatorsign();count=count+1;/*准备识别下一个单词*/p+; getch(); return 0;4. 程序运行结果5. 流程图6. 状态转换图【实验分析】 通过本次实验,我更加清晰透彻的了解词法分析程序的工作原理,也对编译原理这门课程有了进一步的理解与体会。最重要的是,从这次实验中,我的动手实践能力得到了极大的提高,更加熟练的掌握了Microsoft Office的运用,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中多普勒效应课件
- 高中友谊开头课件
- GIL行业市场前景及投资研究报告:输电产品放量契机
- 高一必修三红楼梦课件
- 房屋买卖合同物业管理与入住指导服务协议
- 特色小镇建设用地租赁与综合运营管理协议
- 离婚协议男方放弃抚养费支付及子女抚养权协议书
- 农业科技创新预案
- 快乐拼图:拼出快乐的每一天
- 水产养殖业技术推广方案
- 基础课程改革试题及答案
- 塔吊前臂临近高压线处理方案
- 某卫生院员工手册
- T∕CACM 008-2018 中医药单用联合抗生素治疗常见感染性疾病临床实践指南 急性咽炎
- 消防设施操作员自测试题及答案
- 2025年上半年湖北十堰竹山招募三支一扶高校毕业生聘用为事业单位人员12人易考易错模拟试题(共500题)试卷后附参考答案
- 职业暴露的预防及处理课件
- 餐饮服务明厨亮灶建设工作方案
- 私人二手摩托车转让合同范本
- 企业形象策划服务合同范本
- 2025年家庭照护者、健康照护师岗位专业技能资格知识考试题(附答案)
评论
0/150
提交评论