自顶向下语法分析概述

自顶向下分析方法也称为面向目标的分析方法,也就是从文法的开始符号出发企图推导出与输入单词符号串完全相匹配的句子

按照分析树的构造方向,我们可以把语法分析分为两类

  • 第一类就是从顶部的根节点向底部的叶节点方向构造分析树,这种方法就是自顶向下的语法分析

  • 第二类就是从底部的叶节点向顶部的根节点构造分析树,这种方法就是自底向上的分析方法

这里写图片描述

给定一棵分析树,对应的推导可能不是唯一的,因为在推导的每一步我们可以选择句型当中的任意一个非终结符进行替换,但是每棵分析树对应的最左推导和最右推导都是唯一的

因为在推导的每一步当前句型中的最左非终结符和最右非终结符都是唯一的
这里写图片描述
这里写图片描述
这里写图片描述

再看下一个例子

这里写图片描述

虽然我们根据输入符号来选择产生式,但是我们仍然会遇到一些不确定的情况,比如说对于当前的输入符号A存在多个以终结符A打头的候选式的时候,我们就不能确定去选择哪一个,所以我们就要按照一定的顺序逐个尝试,如果尝试失败的时候就要退回到上一步,然后看看A是否还具有其他的候选式

这个退回到上一步来重新尝试的过程就称为是回溯的过程,回溯会影响分析器的效率,需要回溯的分析器叫做不确定的分析器,带回溯的分析方法实际上是一种穷举的试探方法,效率低,代价高,所以极少使用
这里写图片描述

如果在分析的过程中我们能预测出正确的产生式,那么就不需要回溯,这种分析要做预测分析

这里写图片描述

猜你喜欢

转载自blog.csdn.net/zcmuczx/article/details/80599486