在前面可以看出,可以根据当前文法不满足LL(1)时,则不能用确定的自顶向下分析,但在这种情况下,可用不确定自顶向下的分析法,也就是说带回溯的自顶向下的分析法。引起回溯的原因是在文法中当关于某个非终结符的产生式有很多时,当面临当前的输入符无法确定选用唯一的产生式,从而引起回溯,下面说明三个简单的例子。
1,由于相同的左部的产生式的右部first集交集不为空而引起回溯。
2,由于相同的左部非终结符的右部存在能推导出空串的产生式,且该非终结符的FOLLOW集中含有其他产生式右部的first集的元素。
3,由于文法含有左递归而引起回溯。
由以上的例子可以看出,带回溯的自顶向下的分析是一个试探过程,当分析不成功时退回到适当位置再重新试探其他的候选的可能的推导,这样需要记录已选过的产生式,直到把所有的推导序列都试完仍不能确定该输入串不是该文法的句子而报销,由于在编译的程序真正实现时往往是边分析边插入语义分析动作,因此带回溯分析代价会很高,效率很低,在实用编译程序中几乎不用,因此对他实现的详细算法不再进行介绍。