- 19
- 0
- 约5.16千字
- 约 20页
- 2016-12-14 发布于河南
- 举报
编译原理 主讲教师:于永彦 FIRST集合 引入FIRST集概念是为了在当前输入的条件下,观察哪个产生式的右部能够导出输入符号,进而决定采用哪个产生式来进行推导。 显然,我们关心的是产生式右部符号串的FIRST集,即文法符号串的FIRST。这个符号串可以是任意的终结符和非终结符的组合。 FIRST集合 【定义】 假定?是文法G的任一符号串,即??(VN∪VT)*,则?的首符号集定义为: 可见,所谓符号串?的FIRST,就是指?的所有可能推导的开头终结符或?的集合。 由定义,不难得出下面的结论: 若 ,则; 若?=aA,其中A代表非终结符,则 ; 若?=Aa,则 ; 若,则 。 FIRST集合 一、关系图法求解FIRST 【例】已知文法G[S]如下: S→AB|bC A→b|ε B→aD|ε C→AD|b D→aS|c 求所有非终结符的FIRST。 【解】关系图法求解FIRST集,分为三步进行。 (1)求出能推出ε的非终结符 首先建立一个以文法非终结符为元素的一维数组X,对应每个非终结符设置一个标志位,以记录能否推出ε。其值有三种情况:“未定”、“是”、“否”。 其次,按下述步骤逐步更新标志位: FIRST集合 ① 依次扫描文法每一条产生式 I.删除所有右部含终结符的产生式。若使得以某非终结符为左部的所有产生式都被删除,则置该非终结
原创力文档

文档评论(0)