




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机编译原理实验班级:计算机科学与技术113班 姓名:学号:南昌大学信息工程学院计算机系实验1词法分析程序的设计一、实验目的掌握计算机语言的词法分析程序的开发方法。二、实验内容编制一个能够分析三种整数、标识符、主要运算符和主要关键字的词法分析程序。三、实验要求根据以下的正规式,编制正规文法,画岀状态图;标识符 十进制整数字母 ( 字母|数字字符)*0| (糊4|5剛8|9) (0|糊4|5剛8|9) *如有余力,则进一步分析八进制和十六进制整数,其规式如下:八进制整数0 (1|2|3|4|5|6|7) (0|1|习3|4|5|6|7) *十六进制整数ox (0|u2|3|4|5|6|7|8|
2、9|a|b|c|d|e|f) (0|u2|3|4|5|6|7|8|9|a|b|c|d|e|f) *运算符和界符 关键字+ -*/<=<= ( ) ; main if then else while do int(可根据需要添加)2、根据状态图,设计词法分析函数intscano,完成以下功能:1)从文本文件中读入测试源代码,根据状态转换图,分析出一个单词,2)以二元式形式输出单词单词种类,单词属性其中单词种类用整数表示:0:标识符 1:十进制整数 2:八进制整数 3:十六进制整数运算符和界符,关键字采用一字一符,不编码 其屮单词属性表示如下:标识符,整数由于采用一类一符,属性用单词表
3、示 运算符和界符,关键字采用一字一符,属性为空3、编写测试程序,反复调用函数scano,输出单词种別和属性。ui实验环境pc微机dos操作系统或windows操作系统turbo c程序集成环境或visual c+程序集成环境五、实验步賴1、根据正规式,画出状态转换图;2、根据状态图,设计词法分析算法;3、采用c或c+语言,设计函数scan(),实现该算法;4、编制测试程序(主函数main);5、调试程序:读入文本文件program.txt,运行程序得到输出结果result.txt,并检查输出结果是否正确。六、测试数据输入数据:编楫一个文本文件program.txt,在文件屮输入一段程序代码,如
4、:if data+920x3f then data=data+01;elsedata=data-01;将输出结果存放在result.txt文件屮,输出格如下:<if,-<0, data<+,-<1 ,92<,-<3,3f>then,-<0,data<=,-<0,data<+,-<2,1<,-><else,-<0,data<=,-<0, data<-,-<2,-><,-七、实验报告要求实验报告应包括以下几个部分:1、词法的正规式描述;2、变换后的状态图;3、词法分析
5、程序的数据结构与算法。【源程序】#includeiostream#include<$tring> using namespace std;#define length 5char ch =' ;string key5= nif,nthen*,"else",”while","don;int iskey(string c)/关键字判断int i;for(i=0;i<length;i+) if(pare(c)=0) return 1;return 0;int isletter(char c) /判断是否为字母if(c&
6、lt;='z)&&(c='a)|(c<='z.)&&(c=a) return 1; else return 0;int isletterl(chare) /判断是否为af字母if(c<='f)&&(c>=,a')|(c<-f,)&&(c>='a') return 1; else return 0;int isnum(charc)/判断是否为数字if(c>=,0,&&c<=,9,) return 1; else retu
7、rn 0;void scan(file *fpin)string arr=""while(ch=fgetc(fpin)!=eof)if(ch=' |ch=,t,|ch='n,)else if(isletter(ch)|ch='_')arr=arr+ch;ch=fgetc(fjpin);while(isletter(ch)|isnum(ch)if(ch<=z.)&&(ch=,a.) ch=ch+32;ait=an+ch;ch=fgetc(fpin);fseek(fpin,-l l,seek_cur);if(iskey(ar
8、r)cout«”<"<<arr<<",关键字"endl; else cout««arr«”,普通标识符"«endl;else if(isnum(ch)int flag=o; if(ch=,o,)arr=arr+ch;ch=fgetc(fpin);if(ch=*0&&ch<=7)while(ch>=,0,&&ch<=,7')flag: 1;arr=arr+ch;ch=fgetc(fpin);else if(ch=|ch=
9、x)flag=2;arr=arr+ch;ch=fgetc(fpin);while(isnum(ch)|isletterl(ch)arr=arr+ch;ch=fgetc(fpin);else if(ch=, |ch=,,,|ch=,)cout«"<"<<arr<<,整数 o”endl;fseek(fpin,-1 l,seek_cur);if(flag=l) cout<<n<arr<<",八进制整数"endl; else if(flag=2)cout<<"<n&
10、lt;<arr<<",十六进制整数n«endl;elsearr=arr+ch;ch=fgetc(fpin);while(isnum(ch)arr=arr+ch;ch=fgetc(fpin);fseek(fpin,-l l, seek一cur); cout<<"<n«arr<<n,十进制整数n«endl;else switch(ch) case+: case- : case*:case-1case/cout<<<<<ch<<",运算符"e
11、ndl;break;casecasecaser;case1.case1, case :case:cout«<"<<ch<<",界符<<endl;break; case: ch=fgetc(fpin);if(ch=,=,) cout<<"<"<<":="<<",运算符n«endl; else cout<<"<n<<":"<<",界符"
12、endl;fseek(fpin,-l l,seek_cur); break;case: ch=fgetc(fpin);if(ch=,=,) cout<<"<"<<"="<<",运算符"endl;,输入控制符”endl;else cout<<n<"<<">n<<",运算符:>n«endl; fseek(fpin,-1 l,seek_cur); break;case: ch=fgetc(fpin);&qu
13、ot;,运算符"endl;else 1价11=|<|)(:0以<<"<”|<<|'输出控制符*611北 else if(ch=,>,) cout<<"<"<<"<n<<",运算符"endl; elsecout<<"<"<<"<m«,运算符 >"«endl;fseek(fpin,-1 l,seek_cur); break;default: cout«<"«ch«",无法识别字符>”endl;void main()char in_fn3o;file* fpin;cmu<< ”请输入文件路径及文件名:”; for(;)cin»in_fn;if(fpin=fopen(in_fn,nru)!=null) break;e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 亲子教育居间劳务协议
- 2025年度北京市社区医疗服务合作协议范本
- 化妆品生产质量管理体系手册
- 垃圾处理厂工程居间协议
- 季度销售成绩回顾与未来展望报告
- 烟叶项目可行性研究报告
- 循环经济产业园项目可行性报告
- 电子杂志制作与推广手册
- 智能家居行业运营指南
- 个人学习成长计划表之阶段性目标
- 新概念英语第一册Lesson67-(共69张课件)
- 医学实验室与临床交流与沟通的方式和意义
- 《5G时代万物皆智联》演讲课件
- 造型的表现力 课件 2024-2025学年人教版初中美术八年级上册
- 生态学专业英语词汇
- 胸腔闭式引流护理-中华护理学会团体标准
- 《公安机关人民警察内务条令》知识题库
- 中东及非洲战术高频无线电行业现状及发展机遇分析2024-2030
- 2024风电场集电线路电缆敷设施工方案
- 中医拔罐课件
- TD/T 1075-2023 光伏发电站工程项目用地控制指标(正式版)
评论
0/150
提交评论