




免费预览已结束,剩余5页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
b2a3fdebdafb4953e416061301ac9dcc.pdf 2008-06-12周宏C语言词法分析器一,实验目的 1加强对词法分析原理、方法和基本实现技术的理解;2.灵活运用这学期所学的知识对词法分析,语法分析有进一步的理解;3强化对系统软件综合工程实现能力的训练;二实验内容 用C语言(或 C+ )作为宿主语言完成: C语言(win-TC , ANSI C或turbo C 2.0)词法分析器的设计和实现。 三实验要求1. 编写C语言词法分析器的源程序并调试通过; 2. 通过测试程序的验收; 3. 提交简明扼要的书面实验报告,内容包括:属性字设计;源程序主要流程;主要数据结构设计,程序。四,程序流程图(1) main主程序图处理每个字符 开始结束是否结束判断并输出每个单词类型属性。Scan()函数,分析并返回每个单词的属性Run=1?初始化数组Program,words提示输入程序字符串输入并读取程序字符初始化 是(2) Scan()函数流程图初始化数组,标志符判断并标志是否为关键字判断并标志为运算符或标点符号判断并标志为其它类型Return返回sign数值1五,原程序代码#include#includeint i,j,k,sign,number,flag,run,sum,autuor;/*flag which is use to judge the string is keywords or not!*/char ch;char words10 = ;char program500;int Scan(char program) char * keywords39 = auto,default,do, extern,goto, int,short,static,struct,switch, typedef,void,break,case,char, const,continue,double,else, enum, float,for,if,long, register, return,signed,zhouhong,sizeof,union, unsigned,volatile,while,main,printf, scanf,include,define,string ; number = 0; flag = 0; j = 0; ch = programi+; /* To handle the lettle space ands tab*/ while (ch = ) | (ch = t) | (ch = r)|(ch=n) ch=programi+; /* 跳过不理睬 */ /*handle letters*/ if (ch = a) & (ch = a) & (ch = z ) wordsj+=ch; ch=programi+; i-; wordsj+ = 0; for (k = 0; k = 0) & (ch = 0 ) & (ch : if (ch = ) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; sign = 403; /* = */ else if(ch=) wordsj+ =ch; wordsj =0; sign =419; /* */ else i-;sign = 404; /* */ break; case: if (ch = ) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; sign = 405; else if(ch= 0) & (ch = 0) & (ch = 9) ) wordsj+ = ch; ch = programi+; wordsj = 0; sign = 1000; /* 标志为1000 */ /* 负数 */ i-; break; else i-;sign = 414; break; case*: if (ch = *) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; sign = 415; else i-; sign = 416; break;case/: if (ch = /) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; sign = 417; else i-; sign = 418; break;case:if(ch=) wordsj+ = ch; wordsj = 0; sign =421; break; case;: wordsj = ch; wordsj+1 = 0; sign = 501; break;case(: wordsj = ch; wordsj+1 = 0; sign = 502; break;case): wordsj = ch; wordsj+1 = 0; sign = 503; break;case: wordsj = ch; wordsj+1 = 0; sign = 504; break;case: wordsj = ch; wordsj+1 = 0; sign = 505; break;case: wordsj = ch; wordsj+1 = 0; sign = 506; break;case: wordsj = ch; wordsj+1 = 0; sign = 507; break;case: wordsj = ch; wordsj+1 = 0; sign = 508; break;case: wordsj = ch; wordsj+1 = 0; sign = 509; break;case%: if (ch = %) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; sign = 510; else i-; sign = 511; break;case,:wordsj = ch;wordsj+1 = 0;sign = 512;break;case#:wordsj = ch;wordsj+1 = 0;sign = 513;break;case:wordsj = #;wordsj+1 = 0;sign = 0;break;default: sign = -1; /* 错误 */break; return sign;void display()printf(Autuor: zhouhongn); printf(calss: computer 0502n); printf(time: 2008-06-10n); printf(Email: n); printf(QQ: 454350734n);int main() i=0; run=1; while(run) int ent; int j; ent=autuor=sum=0; for( j = 0; j 500; j+) programj = ; for( j = 0; j =1&sign=401&sign=501&sign=513) printf(symbol , %8s, %5d) ,words,sign); sum+; ent=1; if(sum%2=0&ent=1) puts(r),ent=0; while (sign != 0); puts(n); if(autuor=1)display(), puts(n); printf(continue?(Y or N):); getchar(); ch=getchar(); if(ch=N|ch=n) run=0; return 0; getchar();六,程序运行截图(1) 当程序开始时会出现程序输入界面,如下面图(一)所示: 图(一)(2) 接着输入C语言原程序,如下面图(二)所示: 图(二)(3)按回车键后,程序就会运行并输出结果,如下面图(三)所示: 图(三)(4)此程序另外还加入了一个身体标志,当程序输入的单词中包含“zhouhong” 的字符串是,运行程序后,会在正常输出的最后面出现几行关于个人身份信息。如下面图(四)所示: 图(四)七,个人体会和经验总结(1)刚开始,这个程序是先看了网上的一个类似程序之后,在他的基础上面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学融合教育专业题库- 大学融合教育的教师角色转变
- 2025年统计学期末考试:正态分布检验在统计推断中的关键步骤试题
- 2025年资产评估师职业资格考试备考与模拟试题
- 2025年大学特殊教育专业题库- 特殊教育未来发展趋势研究
- 2025年大学社会体育指导与管理专业题库- 社会体育指导的创新教学方法与实践案例
- 2025年大学人文教育专业题库- 大学人文教育专业的实验教育资源
- 2025年大学华文教育专业题库- 文学素养对大学语文教学的启示
- 2025年大学人文教育专业题库- 大学人文教育专业的学术论文
- 2025年大学国内安全保卫专业题库- 安全保卫专业的课程设置与发展方向
- 2025年统计学专业期末考试:分析与决策制定应用案例分析试题型
- 监理工程师题库检测试题打印含答案详解【完整版】
- 2025年江西省高考生物试卷真题(含标准答案及解析)
- 2025年辅警笔试题库行测及答案指导
- 运维7×24小时服务保障方案
- 单招临床医学试题及答案2025年版
- 2025年辽宁省中考语文真题卷含答案解析
- 2《归园田居》任务式公开课一等奖创新教案(表格式)统编版高中语文必修上册
- 银行文明礼仪课件
- 儿童抽动障碍的诊断与评估(2025年)解读课件
- 甘露醇治疗颅内压增高中国专家共识解读 4
- 美容院设备维护管理规章
评论
0/150
提交评论