- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8.1 词法分析器的构造 词法分析器的构造一般有以下几大步骤:用正规式对模式进行描述;由正规式构造NFA;将NFA转化为DFA且最小化;根据最小DFA编写程序并进行测试。 8.1.1 记号的设计 源程序实际上是一个字符序列,词法分析器读取该序列并根据构词规则将其转换为记号流。函数绘图语言的词法分析器至少需完成以下三个任务: (1) 滤掉源程序中的注释和无用成分(空格、TAB等); (2) 输出记号, 供语法分析器使用; (3) 识别非法输入,并将非法输入作为出错记号提供给语法分析器,以便进行出错处理。 记号一般由两部分组成:记号的类别和记号的属性。根据函数绘图语言的特点,可以为记号设计如下的数据结构,其中记号的类别和第一个属性是每个记号都必须有的信息,而后两个属性,则分别是为常数和函数设计的。 struct Token // 记号的数据结构 { Token_Type type; // 类别 char * lexeme; // 属性,原始输入的字符串 double value; // 属性,若记号是常数则是常数的值 double (* FuncPtr)(double); // 属性,若记号是函数则是函数的指针 }; 根据上节对记号的分析,可以将函数绘图语言的记号类别进行如下划分,且用枚举类型表示它们。 enum Token_Type // 记号的类别 { ORIGIN, SCALE, ROT, IS, // 保留字 TO, STEP, DRAW, FOR, FROM, // 保留字 T, // 参数 SEMICO, L_BRACKET, R_BRACKET, COMMA, // 分隔符 PLUS, MINUS, MUL, DIV, POWER, // 运算符 FUNC, // 函数 CONST_ID, // 常数 NONTOKEN, // 空记号 ERRTOKEN // 出错记号 }; 对于源程序中出现的保留字、参数、分隔符和运算符等,采用“一字一码”的形式,即一个记号仅有一个实例;函数和常数的记号可以有多于一个的实例,如FUNC的实例可以是sin,也可以是cos等;空记号用于标记源程序文件的结束,即遇到文件结束符,词法分析器就返回一个空记号,以通知语法分析器所分析的源程序已经结束;出错记号用于标记非法输入,当分析到非法字符或字符串时,词法分析器就返回一个出错记号,以便语法分析器进行相应的语法错误处理。 8.1.2 模式的正规式表示 函数绘图语言的词法可用下述正规式集合表示,其中的letter和digit是辅助定义。 描述词法的正规式 ---------------------------------------------------------------------- letter = [a–zA–Z] digit = [0–9] COMMENT = //|-- WHITE_SPACE = ( |\t|\n)+ SEMICO = ; L_BRACKET = ( R_BRACKET = ) COMMA = , PLUS = + MINUS = – MUL = * DIV = / POWER = ** CONST_ID = digit+(. digit*)? ID = letter+(letter|digit)* ---------------------------------------------------------------------- 正规式COMMENT和WHITE_SPACE用于过滤源程序中的注释和白空(空格、Tab、回车等),由于注释和白空并不需要出现在语法分析以后的部分,因此仅在词法分析器中处理它们,没有对应的记号供语法分析器使用;从SEMICO到POWER的正规式规定了分隔符和运算符; CONST_ID描述了字面量形式的常数;而ID给出了函数绘图语言中所有的标识符的模式。 特别值得提出的是CONST_ID和ID的设计。由于我们是手工构造词法分析器,而正规式个数越少越便于程序的编写,因此设计上采用相同模式的记号共用一个正规式的方法。常数的字面量部分设计为CONST_ID,而常量名则
您可能关注的文档
- 毕业设计指导课件作者电类高职课件作者董锦凤第1-4章节第4章节.ppt
- 汽车电气设备维修课件作者郑烨珺6-10项目七项目七情景三.ppt
- 毕业设计指导课件作者电类高职课件作者董锦凤第5-7章节第5章节.ppt
- 汽车电气设备维修课件作者郑烨珺6-10项目七项目七情景一.ppt
- 汽车电气设备维修课件作者郑烨珺6-10项目七项目七项目概述.ppt
- 汽车电气设备维修课件作者郑烨珺6-10项目十项目十情景二.ppt
- 汽车电气设备维修课件作者郑烨珺6-10项目十项目十情景三.ppt
- 毕业设计指导课件作者电类高职课件作者董锦凤第5-7章节第6章节.ppt
- 汽车电气设备维修课件作者郑烨珺6-10项目十项目十情景一.ppt
- 汽车电气设备维修课件作者郑烨珺6-10项目十项目十项目概述.ppt
- 汽车电气系统结构与维修图解教程课件作者谭本忠6第六章节电动附件.ppt
- 编译原理基础——习题与上机题解答课件作者刘坚第6-10章节第9章节.ppt
- 汽车电器检测与维修实训课件作者董继明胡勇阴丽华操作步骤.ppt
- 编译原理基础——习题与上机题解答课件作者刘坚第6-10章节第10章节.ppt
- 编译原理教程第二版课件作者胡元义第6-8章节第6章节.ppt
- 汽车电器检测与维修实训课件作者董继明胡勇阴丽华模块八整车电路的检修.ppt
- 编译原理教程第二版课件作者胡元义第6-8章节第7章节.ppt
- 编译原理教程第二版课件作者胡元义第6-8章节第8章节.ppt
- 汽车电器检测与维修实训课件作者董继明胡勇阴丽华模块二汽车电源系统的检修.ppt
- 汽车电器检测与维修实训课件作者董继明胡勇阴丽华模块六汽车辅助电器的检修.ppt
最近下载
- 分流职员申请表标准模板.docx VIP
- 人教版(2024年新教材)七年级上册英语Unit 2 We're Family 单元整体教学设计.docx VIP
- 急诊手术患者围术期肺保护管理策略专家共识解读PPT课件.pptx VIP
- 基于临床实践出血性疾病动态危急值专家共识2024版解读.pptx VIP
- 绘本《我家是动物园》.ppt VIP
- 广州数控GSK928TF 车床数控系统 使用手册 速印版2009-5-13.pdf
- 江苏省海安高级中学2024-2025学年高一上学期9月月考英语试题(解析版).docx VIP
- 一例重症肺炎患儿的个案护理.pptx VIP
- 局长在全市基础教育教学教研工作会议上的讲话.docx VIP
- 西双版纳林驰再生资源回收利用有限公司年回收5000吨废铅酸蓄电池项目突发环境事件应急预案.docx VIP
文档评论(0)