下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编译技术实验报告实验题目:词法分析学院:信息学院专业:计算机科学和技术学号:姓名:一、实验目的(1)理解词法分析的功能;(2)理解词法分析的实现方法;二、实验内容PLO的文法如下为非终结符。:=该符号的左部由右部定义,可读作 定义为”。 表示或为左部可由多个右部定义。 表示花括号内的语法成分可以重复。 在不加上下界时可重复o到任意次 数,有上下界时可重复次数的限制。表示方括号内的成分为任选项。()表示圆括号内的成分优先。上述符号为 元符号”,文法用上述符号作为文法符号时需要用引号括起。程序工=分程序.分程序工=变量说明部分过程说明部分语句变量说明部分工=VAR标识符,标识符:INTEGER;无
2、符号整数工=数字数字标识符工=字母字母|数字过程说明部分工=过程首部分程序;过程说明部分;过程首部工=PROCEDURE标识符;语句工=赋值语句|条件语句|过程调用语句|读语句|写语 句|复合语句|空赋值语句工=标识符:=表达式复合语句工=BEGIN语句;语句END条件二=表达式关系运算符表达式表达式工=项加法运算符项项工=因子乘法运算符因子因子工=标识符|无符号整数|(表达式)加法运算符二=+|-乘法运算符工=*关系运算符二=|=|=条件语句工=IF条件THEN语句字母工=a|b|X|Y|Z数字工=0|1|2|8|9实现PL0的词法分析三、实验分析和设计PL0词法分析程序是一个独立的过程,其
3、功能是为语法语义分析提供单词, 把输入的字符串形式的源程序分割成一个个单词符号传递给语法语义分析。其主要方法步骤为从源程序扫描下一个字符,忽略空格、换行、 释并识别单词,再将不同类别的单词归类输出。四、实验的实现TAB和注#i nclude #i nclude各个字符/norw-1个关键字/最长的关键字的长度/字符数组用来依次存放单词词文的/以TOKEN字符串查保留字表/报告程序中的词法错误判断接收字符是否为字母判断接收字符是否为字母或者数字判断接收字符是否为数字bool isannotation(char);判断接收字符是否为注释externchar letter(char c); /用来将
4、大写字母转化成小写字母FILE* fin;FILE* fout;void sca nner()/词法分析的主体程序,对输入的文本文件进行词法分析char ch;int i,c;int error=0;/记录文件中词法错误的个数ch=fgetc(fi n);从输入文件中读取一个字符while(ch!=EOF)/当从输入文件接收的字符不是文件结束符时,执行循环if(isalpha(ch)/如果从输入文件接收的第一个字符是字母ch=letter(ch);TOKEN0=ch;ch=fgetc(fi n);i=1;while(isa Inu m(ch) ch=letter(ch);TOKENi=ch;i
5、+;ch=fgetc(fi n);TOKENi=0;c=lookup(TOKEN);/查保留字表if(c=0) fprin tf(fout,(%d,%s)n, ID,TOKEN); /输出标识符else fprintf(fout,(%d,%s)n, c,TOKEN);输出接收单词为保留字if(isdigit(ch)如果从输入文件接收的第一个字符是数字in t cdot=0;/统计小数点个数TOKEN0=ch;ch=fgetc(fi n);i=1;while(isdigit(ch)|ch=.)/从第二个接收字符开始,当是数字或者是小数点时,执行循环if(ch=.)cdot+;TOKENi=ch;
6、i+;ch=fgetc(fi n);重复接收字符,直到接收到非数字if(cdot=2)error+;TOKENi=0;prin tf(%s is errorn, TOKEN);break;if(isalpha(ch) /如果第二个字符是字母while(isalpha(ch) /接收完所有的字母,跳出循环TOKENi=ch;i+;ch=fgetc(fi n);TOKENi=0;erro叶+;prin tf(%s is errorn, TOKEN);else if(cdot=0)/当接收的字符为整型单词时fseek(fi n,-1,1);TOKENi=0;int a,temp=0,c;for(c=
7、0;ci;c+)a=TOKENc - 0;if(c!=0)temp=temp*10;temp=temp+a;elsetemp=a;fprin tf(fout,(%d,%d)n, INT, temp);/输出接收单词为整数else if(cdot=1)fseek(fi n,-1,1);TOKENi=0;int a,part1=0,jc,b=0;b用来确定小数点所在的位置float c=0.1,part2=0.0;while(TOKENb!=.)b=b+1;for(jc=0;jcb;jc+)a=TOKENjc - 0;if(jc!=0)part1=part1*10; part1=part1+a;e
8、lsepart仁a;for(jc=b+1;jc|e8jq!(|i-|niAI,.uG1,P%)111noj)u!Jdj:118seo!(uij)oi86j=qo(L)9|!MM :.aseo!|e8jq I+4-J0JJ8!(.UJ0JJ8 SI /.touud esp !(uij)oi86j=qo (1u1=iqo)8|iqM (./.=M0)!WyW|e8jq:(19,.u(11,P%)111noj)u!Jdj esp:(39,.u(1=1,P%)111noj)U!Jdj(1=1=qo)j! (u #)6。6j=qo:,|e8jq!(O3,11u(1=1,p%)11,inoj)u!Jdj:
9、1=18seo !|e8jq二(丄1,.u(11,P%)111noj)u!Jdj esp:(3N,.u(11,P%)111noj)U!Jdj(11,P%)111noj)U!Jdj(1=1=qo)j! (u #)6。6j=qo:1,8seo用嗨用嗨/甫用嗨昜土用嗨甫用嗨if(ch=) break;if(ch=EOF) fseek(fi n,-1,1); prin tf(is error n);error+;break; break;default:pri ntf(%c is error n, ch);序报告词法错误error+;break;ch=fgetc(fi n);文件中读取下一个单词,直到
10、文件结束/while循环结束printf(共发现%d个词法错误!,error); return;int lookup(char *toke n)int j;char word no rwal;strcpy(&(word10), begi n);strcpy(&(word20), e nd);strcpy(&(word30), var);strcpy(&(word40), i nteger);strcpy(&(word 5 0), while);strcpy(&(word 6 0), do);strcpy(&(word70), if);st
11、rcpy(&(word80), the n);strcpy(&(word90), procedure);strcpy(&(word100), else); for(j=1;j=a&c=A&c=a&c=A&c=0&c=0&c=A&c=Z)c=c+32;return c;int main()char file name20;printf(请输入文件名:);sca nf(%s,file name);if(fin=fopen(filename,r)=NULL) /打开要读取的文本文件printf(不能打开文件.n); ex
12、it(0);printf(请输入保存分析结果的文件名:);sca nf(%s,file name);if(fout=fope n(file name,w)=NULL)printf(不能打开文件.n);exit(0);scann er();调用词法分析程序/getchar();getchar();fclose(fi n);fclose(fout);return 0;五、运行的结果3 D:扁译原理实验实验 1 词法分析Starter Fileslex.exel冃彳刖八又件占:a.txt请给入保存分析结果的文件名3abc is error& iserror/ iserpop iserror5.8.iw error iserror is error共发现9个词法错误?Process returned 0 0 x0) execut ion t ime : 8.009 s Press anp Vey tocontinue.Jl si-记芋本文件(月精(D恰式(O)查看(V (3var)(11,y) (13/)(11, z)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 循环测试题护考题及答案
- 2025企业解除劳动合同范本格式
- 2025年高中原创历史试卷及答案
- 物流仓储中心调度员初级工作流程与排班
- 智能建筑控制系统工程师的工作计划手册
- 数据助理用户行为分析计划与洞察报告
- 道路客运驾驶员从业资格年度考核报告
- 变电站设备运行情况季度分析总结
- 初一温州科学试卷及答案
- 中班拼音声调测试题及答案
- 2025年粮食岗考试题库及答案
- 2025重庆市地质矿产勘查开发集团有限公司招聘16人考试笔试参考题库附答案解析
- 工程测量无人机作业指导书
- 2025年汽车驾照考试科目一题库及答案(包过版)
- 供水管道工岗位职业健康及安全技术规程
- 自动化生产线运行维护方案及记录表
- 高三试卷:辽宁省沈阳市郊联体2024-2025学年高三上学期11月期中化学+答案
- 2025年中国聚氨酯分散体行业市场分析及投资价值评估前景预测报告
- 2025年等保测评初级测评师考试题库及答案
- 电焊烟尘安全培训课件
- 乌鲁木齐冬季施工方案
评论
0/150
提交评论