词法分析程序的构造剖析.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
词法分析程序的构造剖析

通达学院 专业课程设计II 题 目: 词法分析程序的构造 专 业 计 算 机 通 信 学 生 姓 名 班 级 学 号 28班 指 导 教 师 徐 佳 指 导 单 位 计算机学院计算机科学与技术系 日 期 2012.11.12-2012.11.23 教师评语 同学出勤率(满勤、较高、一般,较低),学习态度(端正、较端正、一般、较差),程序设计基础(好、较好、一般、较差),演示程序(已经、没有)达到了基本要求,算法设计(好、较好、一般),界面友好程度(好、较好、一般),答辩过程中回答问题(准确、较准确、错误率较高),撰写报告格式(规范、一般)、内容(丰满、简单)、表述(清晰、一般、不清楚),(圆满、较好、基本)完成了课题任务。 教师签名: 年 月 日 成绩评定 备 注 词法分析程序的构造 课题内容和要求 通过状态转换图构造C或者PASCAL语言子集的词法分析程序。 原理解析:选取语言,例如选取了C语言,选取其中一个子集,例如包含了部分关键字main、float、if、for等等,特殊符号( 、、=、+等等,特殊定义的标识符变量以及部分常量等,采用《编译原理》词法分析中有穷自动机的思想构建出该语言子集的状态转换图,并编码实现。 基本要求:(1)将选取的语言子集编写一个简单程序,放在一个文本文件中; (2)要将一个个单词区分清楚并归类(例如for属于关键字)。 char cbuffer; char*keyword[14]={if,else,for,while,do,float,return,break,continue,int,void,main,const,printf}; //关键字 char *border[8]={ , , ; , { , } , ( , ) ,:=,.}; //分隔符 char *arithmetic[6]={+ , - , * , / , ++ , --}; //运算符 char *relation[7]={ , = , = , , = , == ,!=}; //关系运算符 char *lableconst[80]; //标识符 2)函数调用: search(char searchchar[],int wordtype)//查找类型 alphaprocess(char buffer) //字符处理过程 digitprocess(char buffer) //数字处理过程 otherprocess(char buffer) //分隔符、运算符、逻辑运算符等 main()//主函数 3状态转换图的形式: ■每个状态对应一个带标号的case语句 ■转向边对应goto语句switch (wordtype) { case 1: { for (i=0;i=13;i++) //关键字 { if (strcmp(keyword[i],searchchar)==0) return(i+1); } return(0);} case 2: { for (i=0;i=7;i++) //分隔符 { if (strcmp(border[i],searchchar)==0) return(i+1); } return(0); } case 3: { for (i=0;i=5;i++) //运算符 { if (strcmp(arithmetic[i],searchchar)==0) return(i+1); } return(0); } case 4: { for (i=0;i=6

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档