一、知识点
语法分析器在编译程序中的地位
语法分析是编译过程的核心部分,它的任务是在词法分析识别出单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则。实现这种自上而下的带回溯试探法的一个简单途径是让每个非终结符对应一个递归子程序。每个这种子程序可对应一个布尔过程。
自上而下分析法存在的困难和缺点:
(1)文法的左递归问题
(2)回溯的不确定性,要求我们将已经完成工作推倒从来
(3)虚假匹配的问题
(4)不能准确地确定输入串中出错的位置
(5)效率低
LL(1)分析法,针对左递归的消除,分为直接左递归的消除与间接左递归的消除。
消除文法左递归:
按任意顺序对非终结符排序,P1,P2,P3……,然后作如下工作
FOR i=1 TO N{
FOR j=1 TO i-1{
对PiàPjγ的产生式,改写成
Piàδ1 γ| δ2 γ|…| δk γ