通过完成预测分析法的语法分析程序,了解预测分析法和递归子程序法的区别和联系。使学生了解语法分析的功能,掌握语法分析程序设计的原理和构造方法,训练学生掌握开发应用程序的基本方法。有利于提高学生的专业素质,为培养适应社会多方面需要的能力。
根据某一文法编制调试 LL(1)分析程序,以便对任意输入的符号串进行分析。
构造预测分析表,并利用分析表和一个栈来实现对上述程序设计语言的分析程序。
分析法的功能是利用LL(1)控制程序根据显示栈栈顶内容、向前看符号以及LL(1)分析表,对输入符号串自上而下的分析过程。
对文法 的句子进行不含回溯的自上向下语法分析的充分必要条件是:
(1)文法不含左递归;
(2)对于文法中的每一个非终结符 的各个产生式的候选首符集两两不相交,即,若
Follow集合构造:
对于文法 的每个非终结符 构造 的算法是,连续使用下面的规则,直至每个 不再增大为止:
仅给出核心部分
(1) GrammerSymbol.java
(2) GrammerSymbols.java
(3) Grammer.java
(4) LL1Grammer.java
LL分析方法—自顶向下分析LL(1)是LL(k)的特例,其中的k则表示向前看k个符号.
LL(1)方法和递归下降法属于同一级别的自顶向下分析法,但有一些区别.
递归下降法对每个非终极符产生子程序,而LL(1)方法则产生LL分析表;
递归下降法能判断每个产生式的结束,而LL(1)方法则不能;
递归下降法分析法不用符号栈,而LL(1)方法则用符号栈.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)