语法分析是编译过程的核心部分,它的任务是在词法分析识别出单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则;
判断一个输入串是否符合语法规则的方法:1.从文法的起始符出发进行句子的推导,即自上而下的分析
2.从句子本身出发,进行归约,看能否把句子规约为到起始符,即自下而上的规约;
消除回溯的要求:
对文法的任何非终结符,当要它去匹配输入串时,能够根据该非终结符所面临的输入符号准确地指派它的一个候选式去匹配,并且此候选式匹配后得到的工作结果应该是确信无疑的,即:
(1)若该候选式匹配成功,那么该匹配不是虚假匹配
(2)若该候选式无法完成最终的匹配任务,则其他任何候选式肯定也无法完成
当一个文法满足LL(1)条件时,我们就可以构造一个不带回溯的自上而下分析程序,这个分析程序由一组(可能的)递归程序组成,每个过程对应文法的一个非终结符。这样一个分析程序称为递归下降分析器;具体做法:
对文法的每一个非终结符都编一个分析程序
当根据文法和当时的输入符号预测到要用某个非终结符去匹配输入串时,就调用该非终结符的分析程序。
预测分析表的构造——FIRST(X):
1.若X终结符,则FIRST(X)={X}
2.若X为非终结符,且有X->a …的产生式,则把a加入到FIRST(X)中;
3.若X->