问题
单项选择题
在下述的编译方法中,自底向上的方法有 (52) ,自顶向下的分析方法有 (53) 。
①简单优先分析 ②算符优先分析 ③递归下降分析 ④预测分析技术
⑤LR(K)分析 ⑥SLR(k)分析 ⑦LL(k)分析 ⑧LALR(K)分析
A.③④⑦
B.③④⑧
C.③④⑤⑥⑦
D.①②⑤⑥⑧
答案
参考答案:A
解析:[试题52~53分析]
本题考查语法分析中自底向上与自顶向下这两种分析方法。
语法分析是编译过程的核心部分,它的主要任务是在词法分析识别出单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则。语法分析的方法有自底向上分析和自顶向下分析。
自底向上分析法是一种移进一归约法,它用一个寄存符号的先进后出栈,把输入符号从左向右一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,就把栈顶的这一部分替换成(归约为)该产生式的左部符号。其典型的分析法有:算符优先分析、简单优先分析、LR(K)分析、SLR(k)分析和LALR(K)分析等。
自顶向下的分析方法,顾名思义,是从文法的开始符号出发,自上而下地为输入串建立一棵语法树,或者说,为输入串寻找一个最左推导。这种方法要求文法不含有左递归,因为含有左递归的文法将使自项向下的分析过程陷入一个无限循环。其典型的分析法有:递归下降分析、预测分析技术与LL(k)分析等。