- 1、本文档共39页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《编译原理》第章自上而下语法分析
编译原理
武汉大学计算机学院
编译原理课程组
第5章 自上而下语法分析
· 基本思想
· 存在的问题
· 解决方法
· LL(1)方法
· 递归子程序法
5.0 语法分析的功能及基本思想
1. 语法分析的功能
依据语法规则,逐一分析词法分析时得到的单词,把单词串
分解成各类语法单位,即确定它们是怎样组成说明和语句,以及
说明和语句又是怎样组成程序的。分析时如发现有不合语法规则
的地方,便将出错的位置及出错性质打印报告给程序员;如无语
法错误,则用另一种中间形式给出正确的语法结构,供下一阶段
分析使用。
5.0 语法分析的功能及基本思想
2. 自上而下语法分析的基本思想
从识别符号出发,不断建立直接推导,试图构造一个最左推导
序列,最终由它推导出与输入符号串相同的符号串。从语法树的角
度看,自顶向下分析过程将以识别符号为根结点,试图向下构造一
棵语法树,其末端结点符号串正好与输入符号串相同。
相应于高级语言的编译过程,自上而下语法分析就是从该高
级语言文法的开始符号——程序 出发,试图推导得到该文法的
句子—— 源程序或与其等价的单词串。
5.0 语法分析的功能及基本思想
3. 自上而下语法分析遇到的问题
如果文法中存在如下形式的产生式
A →α | α |…| α
1 2 n
那么在自上而下的语法分析过程中,当要对A展开时,应按哪
一个后选式展开呢?即如何确定替换A的αi 。如果选择错误,
将导致回溯。
在分析的过程中,匹配失败后,必须退回到出错点,选择
其它可能的产生式重新推导,这个过程称为回溯。
5.0 语法分析的功能及基本思想
3. 自上而下语法分析遇到的问题
当文法中出现左递归时(存在非终结符号U ,对于它有
U →U…或U + U… ),会使分析过程陷入无限循环。
⇒
例如对文法G[S]:
S →AB
A →bB|Aa
B →Sb|a
5.0 语法分析的功能及基本思想
4.自上而下语法分析中问题的解决方法
· 避免回溯
· 消除左递归
5.1 消除左递归的方法
1.直接左递归的消除
•采用扩充BNF表示
[x]——x可以出现零次或一次
{x}——x可以出现零次到多次
x(y|z)——等价于 xy 或 xz
5.1 消除左递归的方法
1.直接左递归的消除
•采用扩充BNF表示
•引进新的非终结符号,将左递归改写为右递归。
设有产生式 U →Ux |Ux |…|Ux |y |y |…|y
1 2 m 1 2 n
其中y (i=1 ,2 ,…,n)均不以符号U为首,增加新非终结符号U′,
i
将上述产生式变换为
U →y U′|y U′|…|y U′
1 2 n
U′→x U′|x U′|…|x U′| ε
1 2 m
5.1 消除左递归的方法
2.间接左递归的消除
⑵执行循环语句:
FOR i:=1 TO n DO
BEGIN
①FOR j:=1 TO i-1 DO
将产生式规则P →P γ改写
文档评论(0)