编译原理-词法分析.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 正规式的等价 若两个正规式U和V所表示的正规集相同,即L(U) =L(V) ,则认为二者等价,记为U=V 。 例1 :b(ab)*=(ba)*b 因为: b(ab)*和 (ba)*b表示的正规集分别是: {b}{ab}* {ba}*{b} = {b}{ε,ab,abab,…} ={ε,ba,baba,…}{b} = {b,bab,babab,…} ={b,bab,babab,…} 例2 :00*=0*00*0* 正规集为 { 0n |n≥1} 例3 : (a|b)*=(a*b*)* 正规集为 {ε,a,b,aa,ab,ba,bb,aaa,…} * 正规表达式的代数性质 注: 上述恒等式都表示两个正规式等价。 证明两个正规式等价: U=V ? L(U)=L(V) 恒等式 说明 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 ε 是连接的单位元素 r*=(r|ε)* “*”和ε之间的关系 r**=r* “*”是幂等的 * 正规式等价的证明 例1. 证明 (V|W)U=VU|WU ∵ L((V|W)U) =L(V|W)L(U) = (L(V)∪L(W))L(U) = L(V)L(U)∪L(W)L(U) = L(VU)∪L(WU) = L(VU|WU) 例2. 证明 A*=ε|AA* ∵ L(ε|AA*)=L(ε)∪L(A)L(A*) =L(ε)∪L(A)(L(A))* =L(ε)∪L(A)((L(A))0∪(L(A))1∪(L(A))2∪…) =L(ε)∪(L(A))1∪(L(A))2∪(L(A))3∪… =((L(A))*=L(A*) * 写正规表达式: 例 给出下列在字母表{0, 1}上的正规集的正规式 1. 所有以00结束的串的集合。 解: (0|1)*00 方法:分析符号串的结构, 试着写出正规式, 验证是否能表示正规集, 不断调整直到正确。 2. 所有具有三个0的串的集合。 解: 1*01*01*01* * * 本章在编译程序中的地位 表 格 管 理 词法分析器 语法分析器 语义分析与中间代码产生 优化器 目标代码生成器 源程序 单词符号 语法单位 中间代码 中间代码 目标代码 出 错 处 理 * 词法分析 任务:从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词符号。 逻辑上紧密相连的一组字符,这些字符具有集体含义。 单词:标识符,保留字,常数,算符,界符 词法分析阶段的工作所依循的是语言的词法规则。描述词法规则的有效工具是正规式和有限自动机。 * 3.1 对词法分析器的要求 3.1.1 词法分析器的功能和输出形式 输入源程序,扫描识别, 输出单词符号 程序语言的单词符号一般分为五种: 关键字(保留字或基本字):如 begin,end,if,then,else,while,do等 标识符:用来表示各种名字,如 X1 字面常数:如 256,3.14,true,‘abc’ 运算符:如 +、-、*、/ 等等 分界符:如 逗号,分号,冒号等 * 单词符号的内部表示是二元式: (词类种别编码, 单词符号自身的属性值) 1. 词类种别编码提供给语法分析程序使用; 2.单词自身的属性值提供给语义分析程序使用。 3. 具体的分类设计方法以方便语法分析程序使用为原则。 单词符号的内部表示 * 例子 考虑下述C语言代码段: while (i=j) i- -; 经词法分析器处理后,它将转换为如下的单词符号序列: while, - ( , - id ,指向i的符号表项的指针 〉 = , - id ,指向j的符号表项的指针 ) , - id ,指向i的符号表项的指针 - - , - ; , - … … 100 i … … 地址 类型 名字 符号表 10 如标识符单词 i 对应的二元组(6, 10) * 3.1.2 词法分析器作为独立子程序 把词法分析设计成一个独立程序,每当语法分析器需要一个单词符号时就调用这个子程序。 每一次调用,词法分析器从源程序字符串中识别出一个单词符号,并把它的内部表示二元组交给

文档评论(0)

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

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

1亿VIP精品文档

相关文档