3-1-第三章词法分析.ppt

  1. 1、本文档共77页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 词法分析 §3.1 对词法分析器的要求 1. 词法分析器的工作 2.词法分析器的执行方式 3.单词符号的种类 4. 单词符号的内部表示形式 §3.2 词法分析器的设计 5. 用状态图分析(识别)字符串 §3.3 某简单语言的词法分析程序 4. 变量、子程序 6. 其它 § 3.4 正规表达式与有限自动机 § 3.4.1 理论基础 3. 正规式 4. 正规集 DFA映射δ的扩充定义 3、?NFA DFA M 两个状态s和t等价:满足 同是“终态”,或同是“非终态”; 对某个字α,若从s出发能读出α而停于终态,则从t出发也能读出α而停于终态;若从t出发能读出α而停于终态,则从s出发也能读出α而停于终态。 如果两个状态不等价,则称这两个状态是: 可区别的。 扩充语言时,词法分析改动内容: 单词种别定义 状态图 Reserve函数,保留字表 词法分析程序主程序(状态多) 1. 正规语言 是满足下述相互等价的一组条件的一类形式语言: 可以被确定有限状态自动机(DFA)识别; 可以被非确定有限状态自动机(NFA)识别; 可以用正规表达式描述; 可以用正规文法生成。 例:关于标识符的正规产生式规则:(左线性文法) 标识符 ? 字母|标识符字母|标识符数字 字母表示任意英文字母,数字表示任意数字 左线性文法:产生式形如 A ? a 或 A ? Ba 的文法; 右线性文法:产生式形如 A ? a 或 A ? aB 的文法; 其中:A、B∈VN ;a∈VT∪{?} (单个终结符或?) 2. 正规文法(正则文法) 通过正规产生式规则描述的文法。可以有多种等价的定义形式,常用的有:左线性文法或右线性文法。 设Σ是非空的有限字母表,则 ?,? 都是正规式; (? — 空串,? — 空集 ) 任何a ∈Σ,a 是正规式; 若U、V是正规式,则U|V 、 U?V 、U* 也是正规式。 |(或) ? (连接) * (闭包) 正规式只能通过有限次使用1、2、3规则获得。 例: ? ={a,b}, 则 b?a* 、a?(a|b)* 是?上的正规式 说明:*) | 也可写作为 “+” ; *) ? 也可以省略不写 ; *) U* 表示n个U,n≥0; U+ 表示n个U ,n≥1 ; 运算优先级: |(或) ? (连接) * (闭包) 低 高 例: ? ={a,b}, ba* 的运算顺序是: b(a*) (先做*,再做?) a(a|b)* 的运算顺序是: a((a|b)* ) (| 、* 、?) 若有字母表Σ,仅由Σ上的正规式U所组成的语言称作 正规集,记作L(U); ① 正规式?,? 所表示的正规集分别为{ε}、Φ; ② 正规式 a 所表示的正规集为 {a}; ③ 若U、V是正规式,所表示的正规集记为L(U)、L(V) 含义 正规集 含义 正规式 集合的闭包 集合的乘积 集合的并 (L(U))* 闭包 (U)* L(U)L(V) 连接 (U·V) L(U)∪L(V) 或 (U|V) 若正规式U、V表示的正规集相同,则称U、V等价,记为 U=V 含义 正规集 含义 正规式 集合的闭包 集合的乘积 集合的并 (L(U))* 闭包 (U)* L(U)L(V) 连接 (U·V) L(U)∪L(V) 或 (U|V) 例:? ={a,b}, 则 R=a(a|b)* 是Σ上的正规式,R表示的正规集: L(R)=L(a(a|b)*)=L(a)L((a|b)*)={a}L((a|b)*) ={a}(L(a|b))*={a}(L(a)∪L(b))* ={a}({a}∪{b})*={a}{a,b}* ={a}{ε,a,b,aa,ab,ba,bb,aaa,…} ={a,aa,ab,aaa,aba,abb,aaaa,…} 即:Σ上所有以a开头的字符串集 例: ? ={a,b} 正规式 正规集 ba* Σ上所有以b为首后跟任意多个a的字 a(a|b)* Σ上所有以a为首的字 (a|b)*(aa|bb)(a|b)* Σ上所有含有两个相继的a或两个 相继的b的字 等价的正规式 : b(ab)* =(ba)*b Σ上所有以b为首,后跟任意多个 相继的a

文档评论(0)

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

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

1亿VIP精品文档

相关文档