消除左递归
步骤一、
直接改写
先将产生式格式转换到合并
然后直接改写
步骤二、
循环替换 将间接递归改为直接递归
然后改写,注意 必须先做完直接改写然后做间接改写
然后在改写的某一个循环中,从第一个替换后第二个去替换··············。
消除回溯
回溯产生的原因
FIRST集里面有空
LL1文法的FISRT FOLLOW集定义
FIRST集求法
Follow集求法
FISRT集中的非空元素
若空则找父亲的follow集
将非LL1文法改造为LL1
递归子程序法
例子
在写子程序的时候,如果当前的是 非终结则 询问 是否in Y
N
如果当前是终结符号则写 是否等于
在进入P之前要考虑已经read了 就是子程序在退出前要read下一位
$ 不用在子程序里考虑,而是结束后外部程序考虑