网站大量收购独家精品文档,联系QQ:2885784924

第3章 词法分析和词法分析程序.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.4.1正规表达式及正规集的定义 举例 定义 设?是一字母表,则?上的正规表达式(正则表达式,正规式)及其表示的正规集可递归定义如下: (1) ?是一正则表达式, 相应的正规集为?; (2) ?是一正则表达式, 相应的正规集为{?}; (3) ?a??, a 是一正则表达式, 相应的正规集为{a}; (4) 设r, s是正则表达式, 且它们所表示的正规集为Lr, Ls,则 1. (r) ?(s)是正则表达式, 相应的正规集为Lr?Ls; 2. (r)|(s)是正则表达式, 相应的正规集为Lr ∪ Ls; 3. (r)*是正则表达式, 相应的正规集为Lr* 有限地使用上面的规则(4),所得的表达式均是正规表达式 例子 a*, aa*, a|ba*, (a|b) (a|b) (a|b)* 正规集1:n正规式 正规式r =正规式s ? Lr=Ls 正规式的基本等价关系(公理) A1. r|s=s|r A2. r|r=r A3. r|?=r A4. (r|s)|t=r|(s|t) A5. (rs)t=r(st) A6. r(s|t)=rs|rt A7. (s|t)r=sr|st A8. r?=?r=? A9. r?=?r=r A10. r*=(?|r)*=?|rr* 3.4.2 由正规文法构造相应的正规式 例: S?aS | bA | b,A?aS 则所产生的正规集为 论断3.1 方程x= rx + t 有解 x= r*t 例 S?bS|aA A?aA|bB B?aA|bC|b C?bS|aA 左线性文法:x=xr+t的方程,有解x=tr* 3.4.3 正规式构造FA?Thompson法 对运算符个数n进行递归 算法: 1、n=0时: r=? r=? r=a?? s f f s f a 2、设当n=1,2,…,k-1时,M均可构造,当n=k时,根据正规式的定义,r只能是 r1|r2, r1?r2, r1*这三种形式之一.其中, r1,r2 中最多含k-1个运算符,且设相应的自动机为 M1=(K1, ?,f1,S01,{Sf1}) L(M1)=Lr1 M2=(K2, ?,f2,S02,{Sf2}) L(M2)=Lr2 K1∩K2=? Thmopson 法(续) (1) r= r1|r2 ,引入新开始状态S0,终态Sf,将M1,M2并联: S01 Sf1 S02 Sf2 s Sf ? ? ? ? (2) r=r1?r2 , 将M1,M2串联 S01 Sf1 S02 Sf2 ? (3) r=r*,引入新开始状态S0,终态Sf,令原M1构成循环 S01 Sf1 S Sf ? ? ? ? 在实际的构造中,我们可省略一些?矢线。 习题 构造识别正规式a(b|aa)*b的DFA 构造识别正规式(b|aa*bb)*的最小DFA A B C ε ε ε ε S 1 0 Z winniewan@dhu.edu.cn 编 译 原 理 第三章 词法分析和词法分析程序 3.1 设计扫描器时应考虑的问题 词法分析程序亦称为扫描器 任务:扫描程序,识别单词 扫描器的输出是语法分析程序的输入 3.1.1 词法分析的必要性 描述单词的结构比其它语法结构简单,仅用3型文法就够了; 将单词识别从语法分析识别分离出来,可采用更有效的工具实现; 有些语言的单词识别与前后文相关,不宜将其与语法分析合并; 使编译程序各部分独立出来,有利于设计、调试和维护 3.1.2 单词符号的内部表示 常用的内部表示方法: (class,value) 为便于阅读,常用助记符(或常量标识符、宏定义等)表示class。 在识别出变量名、函数(过程)名时,还应进行查填符号表的工作。 3.1.3 识别标识符的若干约定和策略 在允许长度下,应按最长匹配原则进行识别 有时需要超前扫描来进行单词识别。 3.2.1 由正规文法构造状态转换图 例:正规文法如下: 3.2 正规文法和状态转换图 无符号数 → d.余留无符号数 无符号数 → .十进小数 无符号数 → E指数部分 余留无符号数 → d余留无符号数 余留无符号数 → .十进小数 余留无符号数 → E指数部分 余留无符号数 → ? 十进小数 → d余留十进小数 余留十进小数 → d余留十进小数 余留十进小数 → E指数部分 余留十进小数 → ? 指数部分 → d余留整指数 指数部分 → +整指数 指数部分 → -整指数 整指数 → d余留整指数 余留整指数 → d余留整指数 余留整指数 → ? 由正规文法构造状态转换图 所对应的状态转换图 0 1 2 3 4 5 6 d d ? ? d d d d d E E + | - 无符号数的状态转换图 3.2

文档评论(0)

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

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

1亿VIP精品文档

相关文档