- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 有限自动机与词法分析器 任课教师 王养廷 主要内容 正则表达式到有穷自动机的转换 有穷自动机到正则表达式的转换 实例 1 正则表达式到有穷自动机 正则定理 对任意正则表达式RE,均可构造出一个有穷自动机FA,使得FA所接受的字符串等价于RE所定义的正则集。 正则表达式RE与有穷自动机FA等价 1 正则表达式到有穷自动机 正则表达式到有穷自动机的转换 正则表达式到NFA NFA到DFA转换 DFA极小化 DFA等价性 1 正则表达式到有穷自动机 结构化自动机 RE = ε RE = a 1 正则表达式到有穷自动机 结构化自动机 RE = A | B RE = AB 1 正则表达式到有穷自动机 结构化自动机 RE = A* 1 正则表达式到有穷自动机 结构化自动机举例 a a | b ab a* a(b|c) (a|b)(a|c) (a|b)c* 2 有穷自动机到正则表达式 举例 Φ ε a a* 2 有穷自动机到正则表达式 举例 2 有穷自动机到正则表达式 举例 3 实例 正则表达式到有穷自动机 示例 ((a|bc)*d)+ ((0|1)* (2|3)+)|0011 练习 P60 2(1,2), 3(1,2),4(1) PL/0编译程序 PL/0程序示例 CONST A=10; (* 常量说明部分 *) VAR B,C; (* 变量说明部分 *) PROCEDURE P; (* 过程说明部分 *) VAR D; PROCEDURE Q; VAR X; BEGIN READ(X); D:=X; WHILE X#0 DO CALL P; END; BEGIN WRITE(D); CALL Q; END; BEGIN CALL P; END. PL/0编译程序的结构 PL/0编译程序的总体设计 其编译过程采用一趟扫描方式 以语法、语义分析程序为核心 词法分析程序和代码生成程序都作为一个过程,当语法分析需要读单词时就调用词法分析程序,而当语法、语义分析正确,需要生成相应的目标代码时,则调用代码生成程序。 表格管理程序实现变量,常量和过程标识符的信息的登录与查找。 出错处理程序,对词法和语法、语义分析遇到的错误给出在源程序中出错的位置和与错误 性质有关的编号,并进行错误恢复。 PL/0编译程序词法分析的设计与实现 识别的单词: 保留字或关键字:如:BEGIN、 END、 IF、 THEN等 运算符: 如:+、-、*、/、:=、#、=、=等 标识符: 用户定义的变量名、常数名、过程名 常数: 如:10、25、100等整数 界符: 如:‘,’、‘.’ 、‘;’ 、‘(’ 、‘)’等 词法分析过程GETSYM所要完成的任务: 读源程序(getch) 滤空格 识别保留字 识别标识符 拼数 识别单字符单词 拼双字符单词 实验报告格式 格式 实验目的 主要软件 分析过程(算法、重点语句、对应书中的原理) 实验的结论、建议与设想 要求 使用FTP上传:36:26 wang/wang 总结 总结 NFA NFA到DFA转换 重点 NFA到DFA转换 * * PL/0编译程序 PL/0 语言程序 类 pcode 代吗 源语言(PL/0) 目标语言(类 pcode) 实现语言(pascal) PL/0 类 pcode pascal PL/0编译程序 类 pcode解释程序 类 pcode代码 PL/0源程序 输入 输出 PL/0编译系统的结构框架 Q的过程体 p的过程体 主程序体 程序 分程序 . 内的文字表示非终结符 或 内的文字或符号表示终结符 const ident number = , ; var ident , ; ; procedure ident ; 分程序 语句 分程序 词法分析程序 语法语义分析程序 代码生成程序 表格管理程序 出错处理程序 PL/0源程序 目标程序 *
文档评论(0)