- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 词法分析器作为独立子程序 把词法分析设计成一个独立程序,每当语法分析器需要一个单词符号时就调用这个子程序。 每一次调用,词法分析器从源程序字符串中识别出一个单词符号,并把它的内部表示二元组交给
您可能关注的文档
- 线性代数1–习题课.ppt
- 纺织材料课件〔PPT20页〕.ppt
- 线性代数复习〔矩阵〕.ppt
- 纳象立方对白云字幕系统简易教程〔中文〕.ppt
- 线性代数实践〔教师班第8讲〕.ppt
- 线性代数schmidt正交化方程组求解﹒do.ppt
- 线性代数与空间解析几何〔哈工大〕3.ppt
- 线性空间一〔1–3〕.ppt
- 线性代数非齐次方程求解3–4.ppt
- 线性电阻网络解析.ppt
- 初中地理课堂中媒体教学的应用教学研究课题报告.docx
- 以成果为导向的学习评价机制构建探讨教学研究课题报告.docx
- 小学体育课程与学生心理健康的关系探究教学研究课题报告.docx
- 教师评价对学生学习态度的影响研究教学研究课题报告.docx
- 高中历史批判性思维培养的研究教学研究课题报告.docx
- 高中学习策略与学业成就的关系研究教学研究课题报告.docx
- 启发式教学在高中德育中的应用探索教学研究课题报告.docx
- 数学趣味课堂教学实践探索教学研究课题报告.docx
- 初中物理实验教学创新研究教学研究课题报告.docx
- 幼小衔接中家校合作的重要性教学研究开题报告教学研究开题报告教学研究课题报告.docx
文档评论(0)