终结符一般为大写字母,非终结符一般为小写字母
BNF范式规定<终结符>,非终结符
最左推导,最右推导
语法分析树:
二义性文法:
自顶向下分析:
相关算法:
用前看符号避免回溯。
递归下降分析算法:
LL(1)分析算法:
文法先去除左递归,再提取左公因子,求FIRST集,NULLABLE集,FOLLOW集
FIRST集:
把FIRST集推广到任意串上:
如果LL(1)分析表存在冲突则该文法不属于LL(1)文法
FIRST集的完整算法:
一般计算LL(1)分析表注意:
NULLABLE集:
NULLABLE集计算过程:
FOLLOW集的计算:
求LL(1)分析表的过程:求FIRST集----->求NULLABLE集------->求FOLLOW集------->求FIRST_S集——>求LL(1)分析表(可能会得到冲突)
构建LL(1)分析表:
用LL(1)分析表进行LL(1)文法分析
解决LL(1)分析表的冲突:
1,消除左递归,变为右递归
消除间接左递归:
2,提取左公因子。
自底向上分析方法,也称移进-归约分析法(自顶向下最右推导的逆过程):
LR(0)分析:
分析步骤:
LR(0)分析算法出现的问题:可能会延时报出现的错误,可能会出现移进,归约冲突情况。
SLR分析算法:
LR(1)分析算法:
*缩小SLR算法中FOLLOW集的范围
------------恢复内容结束------------
终结符一般为大写字母,非终结符一般为小写字母
BNF范式规定<终结符>,非终结符
最左推导,最右推导
语法分析树:
二义性文法:
自顶向下分析:
相关算法:
用前看符号避免回溯。
递归下降分析算法:
LL(1)分析算法:
文法先去除左递归,再提取左公因子,求FIRST集,NULLABLE集,FOLLOW集
FIRST集:
把FIRST集推广到任意串上:
如果LL(1)分析表存在冲突则该文法不属于LL(1)文法
FIRST集的完整算法:
一般计算LL(1)分析表注意:
NULLABLE集:
NULLABLE集计算过程:
FOLLOW集的计算:
求LL(1)分析表的过程:求FIRST集----->求NULLABLE集------->求FOLLOW集------->求FIRST_S集——>求LL(1)分析表(可能会得到冲突)
构建LL(1)分析表:
用LL(1)分析表进行LL(1)文法分析
解决LL(1)分析表的冲突:
1,消除左递归,变为右递归
消除间接左递归:
2,提取左公因子。
自底向上分析方法,也称移进-归约分析法(自顶向下最右推导的逆过程):
分析步骤: