- 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,而常量名则
您可能关注的文档
最近下载
- 发电机空载特性曲线测录试验报告.pdf VIP
- 济南版八年级下册生物教案全册.doc VIP
- 医学课件-《中国老年骨质疏松症诊疗指南(2025)》.pptx
- 6.2《学会依法办事》教学设计 2025-2026学年统编版道德与法治 八年级上册 .docx VIP
- GJ B 5881-2006 技术文件版本标识及管理要求.pdf VIP
- 剑阁县清江河桅杆水电站增效扩容工程环境影响报告.docx VIP
- GJ B 5873-2006 模压硫化橡胶线性收缩率的测定.pdf VIP
- 国家及行业标准-G-J-B 5882-2006.pdf VIP
- G-J-B 5186.6-2005 数字式时分制指令响应型多路传输数据总线测试方法 第6部分.pdf VIP
- 肾上腺疾病的外科治疗课件.ppt VIP
原创力文档


文档评论(0)