早教吧 育儿知识 作业答案 考试题库 百科 知识分享

LL(1)文法一定是2型文法或3型文法吗?属于0型或1型文法但不属于2、3型文法的可能是LL(1)文法吗?怎么消除左递归?

题目详情
LL(1)文法一定是2型文法或3型文法吗?
属于0型或1型文法但不属于2、3型文法的可能是LL(1)文法吗?怎么消除左递归?
▼优质解答
答案和解析
LL文法一定是无二义性文法,但是二义性文法却不一定是LL文法.LL文法比较简单,解决的范围有限.消除做递归的方法:
对所有的形如Ai->α,排序.{A1,A2,A3,A4.An}
for(从1到n的每一个i){
for(从1到i-1的每一个j){
将形如Ai->Ajα的产生式替换为产生组Ai->γ1α|γ2α.|γkα,
其中Aj->γ1|γ2.|γk
}
消除立即做递归
}