一、自上而下分析法
从根部开始构造语法树
自上而下分析法不能因为左递归存在而陷入死循环,不能产生回溯,即每一步推导的产生式必须是唯一的
1.消除左递归
左递归
形如A->Aa |b ,这种在创建分析树时一直在左子树死循环,因为推导的结果中最左还是A
或者多个推到式共同作用的间接左递归
消除直接左递归
如上式最终结果是以b开头的无数个a的串,因此改写成
A ->bA‘
A'-> a A’ | e
再比如
A -> A+B | B
B -> int
从根部开始构造语法树
自上而下分析法不能因为左递归存在而陷入死循环,不能产生回溯,即每一步推导的产生式必须是唯一的
形如A->Aa |b ,这种在创建分析树时一直在左子树死循环,因为推导的结果中最左还是A
或者多个推到式共同作用的间接左递归
如上式最终结果是以b开头的无数个a的串,因此改写成
A ->bA‘
A'-> a A’ | e
再比如
A -> A+B | B
B -> int