- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
四、正规文法和有限自动机 2、右线性文法转换为等价自动机 设有右线性文法: G=(VN,VT,P,S),将其转换为自动机M=(Q,∑,f,q0,Z)。 转换步骤如下: 1)将VN中的每个非终结符视为状态符号,并增加一个新的终结状态符号T,即令Q=VN∪{T}; 同时,令∑=VT,q0=S;若P中含有S e ,则令Z={S,T}, 否则令Z={T}; 第三章 词法分析程序(62) 四、正规文法和有限自动机 2、右线性文法转换为等价自动机 2)P中的产生式用如下映射f来代替 a)对于P中每一条形如A1 aA2的产生式,M中设为f(A1,a)=A2. b)对于P中每一条形如A1 a的产生式,M中设为f(A1,a)=T. c)对∑上的所有a,取f(T,a)= Φ,即在终态下有限自动机无动作 第三章 词法分析程序(63) 例:有文法G=({S,A,B},{a,b,c},P,S} 其中产生式P: ------S aS|aB ------B bB|bA ------A cA|c 构造与之等价的FA 解:构造自动机M=(Q,∑,f,q0,Z) 1)增加一个新的终结状态符号T,Q={S,B,A,T} ∑={a,b,c},q0=S,Z={T} 第三章 词法分析程序(64) 2) f: f(S,a)=S, f(S,a)=B f(B,b)=B, f(B,b)=A f(A,c)=A, f(A,c)=T 显然,这是一个NFA. 其状态转换图为: S B A T a a b b c c 第三章 词法分析程序(65) 四、正规文法和有限自动机 3、有限自动机向右线性文法的转换 设有限自动机M=(S,∑,f,s0,Z),右线性文法Rg=(VN,VT,P,s0), 1)若s0∈Z,则P是由以下规则定义的产生式集合: a)若M中有映射f(Ai,a)=Aj,则P中有Ai aAj; b)若Aj ∈Z,则P中增加产生式Ai a,即Ai a|aAj; 2)若s0∈Z,除了上述映射所构成产生式之外, 还有映射f(s0,e)=s0,此时需要在P中增加产生式: s0’ e|s0, 以s0‘代替s0作为开始符号 第三章 词法分析程序(66) 例:写出DFA M=({A,B,C,D},{0,1},f,A,{B}}相应的右线性 文法Rg A B D C 1 0 1 0 1 0 0|1 解:Rg=({A,B,C,D},{0,1},P,A} A 0B|1D|0 B 1C|0D C 0B|1D|0 D 0D|1D L(Rg)=L(M)=0(10)* 第三章 词法分析程序(67) 四、正规文法和有限自动机 4、左线性文法转换为等价自动机 设有左线性文法: G=(VN,VT,P,S),将其转换为自动机M=(Q,∑,f,q0,Z)。 将G转换为M的步骤如下: 1)令Q=VN∪{q0},q0是M中新增的状态;∑=VT;S对应于M中的Z;若P中含有 S e.则令Z={S,q0}, 否则,令Z={S}; 2)P中的产生式用如下映射f来代替: --a)对于P中每一条形如A1 A2a的产生式,在M中设映射式f(A2,a)=A1. --b)对于P中每一条形如A1 a的产生式,在M中设映射式f(q0,a)=A1. 第三章 词法分析程序(68) 第二节 词法分析程序 一、任务 从左至右扫描源程序的字符串,按照词法规则识别出一个个正确的单词,并转换为相应的二元式(类号,内码)形式,交给语法分析使用 输入缓冲区 预处理程序 扫描缓冲区 扫描器 列表 控制信号 源程序输入 第三章 词法分析程序(69) 1、预处理原因: 1)源程序中包含注解部份,还有无用的空格、跳格、回车换行等编辑字符,它们与词法分析无关。 2)一行语句结束应配上一个特殊字符说明。 3)有些语言应识别标号区,区分标号语句,找出续行符连接成完整语句等。 4)输出原程序清单以便复核。 第二节 词法分析程序二、预处理与超前搜索 第三章 词法分析程序(70) 第二节 词法分析程序二、预处理与超前搜索 2、预处理子程序任务: 1)从输入缓冲区读入源程序,预处理后扫描缓冲区。此时,输入缓冲区中的字符都是有效字符。 2)词法分析程序这时可以再对扫描缓冲区进行扫描。 第三章 词法分析程序(71) 第二节 词法分析程序二、预处理与超前搜索 3、超前搜索 注:一般的高级语言不必超前搜索,但有些对关键字
文档评论(0)