编译原理 —— SELECT集

SELECT集

  • 产生式 AαA → α 的可选集是指可以选用该产生式进行推导的输入符号的集合,记为SELECTAαSELECT(A→α)
  • 同一非终结符的各个产生式的可选集互不相交(否则依然无法确定使用哪一个产生式)

以LL(1)为例:
编译原理 —— SELECT集


计算产生式的SELECT集

编译原理 —— SELECT集

  1. 对于产生式①,FIRST(TE)={(id}(TE')=\{ (,id \}εε∉ FIRST(TE)(TE'),故 SELECT(1) = FIRST(TE)={(id}(TE')=\{ (,id \}
  2. 对于产生式②,FIRST(+TE)={+}(+TE')=\{+ \}εε∉ FIRST(+TE)(+TE'),故 SELECT(2) = FIRST(+TE)={+}(+TE')=\{ + \}
  3. 对于产生式③,FIRST(ε)={ε}(ε)=\{ε \}εε∈ FIRST(ε)(ε),故 SELECT(3) = FIRST(ε){ε}+(ε)-\{ ε \}+FOLLOW(E)(E')
  4. 对于产生式④,FIRST(FT)={(id}(FT')=\{ (,id \}εε∉ FIRST(FT)(FT'),故 SELECT(4) = FIRST(FT)={(id}(FT')=\{ (,id \}

计算预测分析表

编译原理 —— SELECT集
由预测分析表可知,同一非终结符的各个产生式的可选集互不相交(如非终结符 TT' ,一个可选符号对应一个产生式)