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

编译原理简明教程(第3版)-课件 第6章 语法分析-自底向上.pptx

编译原理简明教程(第3版)-课件 第6章 语法分析-自底向上.pptx

  1. 1、本文档共112页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

新工科建设·计算机类系列教材;6;自下而上语法分析的基本思想

自下而上语法分析面临的问题及解决方法

简单优先分析法

算符优先分析法

LR(K)四种语法分析方法;;;例6.1

G[S]:S→aAbB

A→c|Ac

B→d|dB

分析符号串accbdd

;表6.1自底向上分析法对输入串accbdd的分析过程;分析符号串#accbdd#

分析过程见表6.1,共用了12步,其中”移进7步”,归约5步。

规范归约序列:

accbddaAcbddaAbddaAbdBaAbBS

构造语法树过程见图

;1.如何确定句柄

例:表6.1中第5步栈内符号aAc

栈顶c或Ac可选规则A→c或A→Ac,选择了A→Ac,

同样,在第8步栈顶是d,可用B→d归约但没用,而

是在第9步用A→d归约。

∵第5步c不是句柄,第8步d也不是句柄。

∴但不可能依靠事先给出句子的最右推导或语法树来寻找

句柄。;2.文法中出现两条以上规则右部相同的规???

例:A→e

B→e

C→e

如何确定选择哪条规则?

例:G[S]:

S→AB|c

A→bA|a

B→aSb|c

分析bbaacb

S→c

B→c;步骤;在第8步,a出现在栈顶,能否用A→a归约?

在第9步,c出现在栈顶,能否用B→c归约?

;6.2自底向上优先分析方法;1.简单优先关系;三种优先关系的定义:

设A、B是文法G中任意两个符号;2、简单优先文法;;上述关系也可用语法树结构表示

SSSS

bAbbAbbAbbAb

(Ba(B(B

Aa)Aa)

(Ba

Aa)

Bbab)a,Ba,aa

b(bab(,((,(A(a;把文法符号之间的关系用矩阵表示

——优先关系矩阵;20;21;22;3、简单优先分析算法;④符号串…即为当前句型的句柄,查找规则右部…的产生式,若找到则将…归约为左部,若找不到则为出错。

⑤重复②~④步,直到分析完所有输入符号,栈中只剩文法的开始符号,则分析成功,否则分析失败。;例:分析#aeb#;6.2.2算符优先分析法;1.逆波兰式;2.逆波兰式的生成;运算符优先关系矩阵;;表达式(a+b)*c/d→ab+c*d/;3.算符优先文法;②ab,当且仅当文法中含有形如

“A→…aB…”的产生式,其中Bb…或BCb…。

③ab,当且仅当文法中含有形如

“A→…Bb…”的产生式,其中B…a或B…aC。

;

;4.算符优先关系矩阵的构造方法;=关系,逐个查看产生式,由A→…ab…或A→…aBb…,找到a=b。;例:G[E]

E→E+T|T

T→T*F|F

F→(E)|i

计算FIRSTVT、LASTVT集

FIRSTVT(E)={(,i,+,*}

FIRSTVT(T)={(,i,*}

FIRSTVT(F)={(,i}

LASTVT(E)={+,*,),i}

LASTVT(T)={*,),i}

LASTVT(F)={),i}

=关系

由F→(E)得(=);关系

由E→E+T+FIRSTVT(T)即+{*,(,i}

由T→T*F*FIRSTVT(F)即*{(,i}

由F→(E)(FIRSTVT(E)即({+,*,(,i};G[E]的算符优先关系矩阵;5.算符优先分析算法;;;设:…最左素短语中包含,非终结符。

这种分析方法起主导作用的是终结符之间的优先关系,非

终结符的名字无所谓,且单个非终结符也不是素短语。

所以,归约过程得到一个语法树的树架。

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档