- 1
- 0
- 约1.76万字
- 约 7页
- 2019-04-20 发布于江苏
- 举报
第四章 自顶向下语法分析方法
语法分析是编译过程的核心部分。语法分析的任务是:按照文法,从源程序符号串中识别出各类语法成份,同时进行语法检查,为语义分析和代码生成作准备。执行语法分析任务的程序称为分析程序。也称为语法分析器,它是编译程序的主要子程序之一。
在第二章中我们已经介绍过。通过语法分析可建立起相应的语法树。按语法树的建立方法,我们将语法分析方法分成两大类,即自顶向下分析和自底向上分析。下面,我们先介绍自顶向下分析。
本章重点:自顶向下分析、LL(1)分析,然后再介绍自底向上分析。
第一节 自顶向下分析方法
一、带回溯的自顶向下分析算法
这是自顶向下分析的一般方法,即对任一输入符号串,试图用一切可能的方法,从识别符号出发,根据文法自上而下地为输入串建立一棵语法树。
下面用一个简单例子来说明这种过程:
假定有文法G[S]:
S→cAd
A→ab|a 以及输入串w=cad
为了自上而下地构造w的语法树,我们首先按文法的识别符号产生根结点S,并让指示器IP指
adcASb
a
d
c
A
S
b
a
d
c
A
S
d
c
A
S
( a)
(b) (c)
图3-1-1
图3-1-1a图。我们希望用S的子结从左至右匹配整个输入串w。首先,此树的最左子结是终结符c为标志的子结,它和输入串的第一个符号相匹配。于是,我们就把IP调整为指向下一输入符号a,并让第二个子结A去进行匹配,非终结符A有二个选择,我们试着用它的第一个选择去匹配输入串,于是把语法树发展为图3-1-1b图。子树A的最左子结和IP所指的符号相符,然后我们再把IP调为指向下一符号d并让A的第二个子结进入工作。但A的第二个子结为终结符号b,与IP当前指的符号d不一致。因此,A宣告失败。这意味着A的第一个选择此刻不适用于构造w的语法树。这时,我们应该回头(回溯)看A是否还有别的选择。
为了实现回溯,我们一方面应把A的第一个选择所生长的子树注销掉;另一方面,应把IP恢复为进入A时的原值,也就是让它重新指向第二输入符号a。现在我们试探用A的第二个选择,即考虑生成图3-1-1c的语法树。
由于子树A只有一个子结a,而且,它和IP所指的符号相一致,于是,A完成了匹配任务。在A获得匹配后,指示器指向下一个未被触及的符号d。
在S的第二子结A完成匹配后,接着就轮到第三个子结d进行工作。由于这个子结和最后一个输入符号相符,于是,我们完成了构造语法树的任务,证明了w是文法G[ s]的一个句子。
上述自顶向下地为输入符号w建立语法树的过程,实际上也是设法建立一个最左推导序列,以便通过一步步推导将输入串推导出来。很明显,对于输入串w可以通过如下的推导过程将其推导出来:Sc A da b①W
S
c A d
a b
①W:cad
↑
2p指示口
所以用最左推导,是因为我们对输入串是自左向右扫描的,只有使用最左推导,才能保证按扫描顺序去匹配输入串。在上述推出符号串w的过程中,由于出现在符号串中的非终结符号只有一个,因此,未明显地表现出最左推导的性质。
根据以上分析,不难编出程序来实现这种分析的算法。但是,上述这种自顶向下的分析算法存在着一定的困难和缺点。困难表现在不能为左递归文法构造自顶向下的语法分析器(上述所举例子的文法G[s]是不具有在递归性的)。缺点主要表现在存在着回溯问题。当然,应用带回溯的自顶向下的分析算法还必须将文法规则存放于内存。下面将具体介绍这种分析算法所存在的问题及其解决办法。
二、存在问题及解决办法
(一)左递归问题
自顶向下分析法只有规则排列得合适时,才能正确工作。该法的一个基本缺点是不能处理具有左递归的文法。如下所示。
A→AB|BbB→Ac|dA
A→AB|Bb
B→Ac|d
A
a?? ?B
A C
B b
A C
A
A
A
B
A
Cc
B
b
A
Cc
S→S
S→Sa|b
S
S
a
S
a
S
a
S
a
A→aAB|Bb
B→Ac|d
无法确定语法树的终止,
清除直接左递归的较好方法是改
改为右递归
如:S→Sa|b 改为
S→bS′
S′→aS′|Σε
一般情况下,直接左递归的形式可为:消除
A→Aα1|Aα2| … Aαm|β1|β2…βn
清除左递归后改写为:
A→β1A′1|β2A1′ … |βnA1′
A′1→α1A′|α2A1′ … |αmmA′1|Σε
对于间接左递归的消除,需先将间接左递归变为直接左递归,然后再接上述方法消除。
条件是文法中无A→A 的有害规则和
或A→Σε的空产生式
算法:
您可能关注的文档
最近下载
- 2026年重庆市高三学业水平选择性考试高考模拟调研卷(二)数学试卷(含答案解析).doc VIP
- DB43_T 3211-2025 残疾人友好企业建设指南.docx VIP
- 2019年2月-N0N1三基-核心制度.docx VIP
- 缺铁性贫血完整版.ppt VIP
- 《刑事诉讼法》课程教学大纲.pdf VIP
- 高中劳动课全套教案(通用6篇).pdf VIP
- DB63_T 2433-2025 牦牛营养需要量.docx VIP
- 曾国藩家训名言选粹.doc VIP
- 2026年重庆市高三学业水平选择性考试高考模拟调研卷(二)政治试卷(含答案解析).doc VIP
- 办公楼物业服务投标方案(技术方案).doc
原创力文档

文档评论(0)