编译原理(二)语法分析

 

 终结符一般为大写字母,非终结符一般为小写字母

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,提取左公因子。

 

 

自底向上分析方法,也称移进-归约分析法(自顶向下最右推导的逆过程):

      

分析步骤:

      

猜你喜欢

转载自www.cnblogs.com/lq13035130506/p/12048784.html