- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章词法分析编译原理
第四章 词法分析 4.1 词法分析程序的设计 词法分析(lexical analysis)功能: 逐个读入源程序字符,输出“单词符号” ,供语法分析使用。 主要任务: 读源程序,产生单词符号 其他任务: 滤掉空格,跳过注释、换行符 追踪换行标志,复制出错源程序 宏展开,…… 单词符号 一般可分为下列五种: 基本字(关键字):begin, end, if, while 标识符:各种名称,如常量名、变量名、过程名 常数(量):25, 3.1415, TRUE, “ABC”等 运算符:如 + - * / =等 界符:逗号,分号,括号等 词法分析程序与语法分析程序的接口方式 方式一(常用): 词法分析程序与语法分析程序的接口方式 方式二(PL/0采用): 4.2 单词的描述工具 单词的描述工具和识别工具: 正规文法(正则文法、3型文法) 正规式(正则式) 有穷自动机(NFA、DFA) 三者之间可以相互转换 正规文法 文法的每个产生式的形式都为: A→aB 或 A→a —— 右线性 A→Ba 或 A→a —— 左线性 其中 A,B∈VN ,a∈VT* 正规式(regular expression) 正规式:是描述单词符号串规则的工具 设字母表?={a,…,z, A,…,Z, 0,…,9 } 辅助字母表?‘={?,?,? ,?,?,?,?} “?”表示“闭包”,即任意有限次的自重复连接 “?”表示“连接”,有时可以省略 “?”表示“或” 优先顺序为“( )”、“?”、“?”、“?” “?”、“?”和“?” 都是左结合的 正规式为 ?,? ,? ,(e) ,e1|e2 ,e1 ?e2 , e* 中的符号。 (其中e表示任一正规式) 正规式举例 例1:令?={0,1}, ?上正规式和相应正规集的例子有: 正规式 正规集 0 {0} 0?1 {0,1} 01 {01} (0?1)(0?1)(中间省略连接号) {00,01,10,11} 0 ? {? ,0,00, ……任意个0的串} (0?1)? {? ,0,1,00,01 ……所有由0 和1组成的串} (0?1)?(00?11)(0?1)? {??上所有含有两个相继 的0或两个相继的1组成 的串} 两个正规式等价 若两个正规式 e1 和 e2 所表示的正规集相同, 则说 e1 和 e2 等价。 记作 e1 = e2 例如: 0?1 = 1?0 1(01)? = (10)?1 (0?1)? = (0??1?)? 正规式的代数运算 设r,s,t为正规式,则有: r?s=s?r “或”的交换律 r?(s?t)=(r?s)?t “或”的结合律 (rs)t=r(st) “连接”的可结合律 r(s?t)=rs?rt (s?t)r=sr?tr 分配律 ?r=r r?=r ?是“连接”的恒等元素 有穷自动机(FA,Finite Automata) 有穷自动机 FA: 是一个识别装置,用于识别“所有句子”。 引入FA的目的: 为词法分析程序的自动构造寻找特殊的方法和工具 类型: 确定的有穷自动机 DFA 不确定的有穷自动机 NFA 转换 正规文法?正规式 ① 等价转换的规则 ② 不断用上述规则进行变换,直到最后只剩一个开始符号为止。 正规文法?正规式 举例 正规式?正规文法 ① 任何正规式 r:定义S为开始符号 S?r ② 转换规则 ③ 不断用上述规则进行变换,直到每个产生式的右部只含一个VT为止。 正规式?正规文法 举例 4.3 有穷自动机(FA) FA ( Finite AutoMata ) : 是一个识别装置,用于识别“所有句子”。 引入FA的目的: 为词法分析程序的自动构造寻找特殊的方法和工具 类型: 确定的有穷自动机 DFA 不确定的有穷自动机 NFA NFA ? DFA(子集法) DFA的化简(最小化 DFA) 确定的有穷自动机(DFA) 1. 定义:一个DFA是一个五元组 M=(K ,? ,f ,S ,Z ) K:有穷的状态集 ?:有穷的字母表(即输入字符的集合) f:转换函数 K×??K 上的映像 S:初态(初态唯一) Z:终态集(终态不唯一) 确定的有穷自动机(DFA) 2. DFA的“直观”表示: 状态图(状态转换图) 每个状态用结点表示 若f( Ki , a ) = Kj,则 初态用“=” 或 “-”标出 终态用双圈 或 “+”标出 矩阵 列标题:输出符号(VT) 行标题:状态 若f( Ki , a ) = Kj,则Ki和a的交汇处是
文档评论(0)