编译原理(第四章)——首符号集和后继符号集的求法

一、首符号集的求法
编译原理(第四章)——首符号集和后继符号集的求法_第1张图片
注:(1)ay是由x经过0到多步推出来的 且a是终结符号,若x是终结符号,First( x ) = { x };
举例:
编译原理(第四章)——首符号集和后继符号集的求法_第2张图片

二、后继符号集的求法
(1)定义
编译原理(第四章)——首符号集和后继符号集的求法_第3张图片
1.例如:再求FOLLOW( T )的时候,在产生式右边寻找含有T的产生式,并且把它的右边的终结符号写入集合中。

例题:
编译原理(第四章)——首符号集和后继符号集的求法_第4张图片
注解:对于文法开始符号,#都要加进去。

三、构造首符号集
构造符号的FIRST集步骤:编译原理(第四章)——首符号集和后继符号集的求法_第5张图片
构造文法符号穿的FIRST的步骤
编译原理(第四章)——首符号集和后继符号集的求法_第6张图片
注:步骤2的j, 1<=j 例题:
编译原理(第四章)——首符号集和后继符号集的求法_第7张图片

四、构造非终结符号的FOLLOW集

编译原理(第四章)——首符号集和后继符号集的求法_第8张图片
说明:比如求FOLLOW(E) ,
1. 从产生式右侧找E,在第5个产生式。
2. 注意形式F -> ( E ) | i,满足形式2,)加入集合中。

求FOLLOW( F ) :
1.找到3式:根据步骤2,FIRST( T , )加入结合 ,(*)
2.找到4式:因为空串在FIRST( T , ),所以FOLLOW(T , )加入集合中,(*,),#,+);

你可能感兴趣的:(编译原理)