LL(1)分析法,就是指从左到右扫描输入串(源程序),同时采用最左推导,且对每次直接推导只需向前看一个输入符号,便可确定当前所应当选择的规则。实现LL(1)分析的程序又称为LL(1)分析程序或LL(1)分析器。 一个文法要能进行LL(1)分析,那么这个文法应该满足:无二义性,无左递归,无左公因子。当文法满足条件后,再分别构造文法每个非终结符的FIRST和FOLLOW集合,然后根据FIRST和FOLLOW集合构造LL(1)分析表,最后利用分析表,根据LL(1)语法分析构造一个分析器。 LL(1)的语法分析程序包含了三个部分:控制程序,预测分析表函数,先进先出的语法分析栈。 LL(1)预测分析程序的总控程序在判断STACK栈顶符号X和当前的输入符号a做哪种过程的。对于任何(X,a),总控程序每次都执行下述三种可能的动作之一: (1)若X = a =‘#’,则宣布分析成功,停止分析过程。 (2)若X = a !=‘#’,则把X从STACK栈顶弹出,让a指向下一个输入符号。 (3)若X是一个非终结符,则查看预测分析表M。若M[A,a]中存放着关于X的一个产生式,那么,首先把X弹出STACK栈顶,然后,把产生式的右部符号串按反序一一弹出STACK栈(若右部符号为ε,则不推什么东西进STACK栈)。若M[A,a]中存放着“出错标志”,则调用出错诊断程序ERROR。 1 LL(1)分析法 LL(1)分析法又称预测分析法,是一种不带回溯的非递归自顶向下分析法。 LL(1)的含义是:第一个 L 表明自顶向下分析是从左至右扫描输入串的;第二个 L 表明分析过程中将用最左推导;“1”表明只需向右查看一个符号就可以决定如 何推导(即可知用哪一个产生式进行推导)。 报告下载地址:https://documents.hubaoquan.cn/1408010120.doc