"语法分析计算文法符号的FIRST集合与规则应用"

需积分: 0 0 下载量 118 浏览量 更新于2024-01-20 收藏 469KB PDF 举报
第5讲中讲到了语法分析的内容,其中涉及到了计算文法符号X的FIRST集合。本文将对这一内容进行总结并详细解释其计算过程。 在语法分析中,计算文法符号X的FIRST集合的目的是找出可以从X推导出的所有串的首终结符构成的集合。计算过程中会不断应用一系列规则,直到没有新的终结符或者ε可以被加入任何FIRST集合中为止。 首先要明确的是,计算FIRST集合的对象可以是终结符,也可以是非终结符。 对于终结符X,其FIRST集合只包含自己,即FIRST(X)={X}。 对于非终结符X,其FIRST集合需要根据推导规则来计算。假设X可以推导出Y1Y2...Yk(k≥1),其中Yi可以是终结符也可以是非终结符。 - 按照规则,如果对于某个i,a在FIRST(Yi)中且ε在所有的FIRST(Y1),...FIRST(Yi-1)中(即Y1...Yi-1可以推导出ε),那么将a加入到FIRST(X)中。 - 重复上述步骤,直到所有的Yi都被考虑到。 需要注意的是,我们将继续应用这些规则直到没有新的终结符或ε可以被加入到任何FIRST集合中为止。这是因为每一次应用规则,可能会有新的终结符或ε被加入到FIRST集合中,这些新加入的元素可能会导致新的非终结符的FIRST集合发生变化。 举个例子来说明计算FIRST集合的过程。假设有以下文法: ① E → TE' ② E' → TE' | ε ③ T → FT' ④ T' → *FT' | ε ⑤ F → (E) | id 首先,我们计算非终结符E的FIRST集合。根据规则①,E可以推导出TE',因此我们需要考虑F的FIRST集合。根据规则③,T可以推导出FT',因此我们需要考虑F和T'的FIRST集合。再根据规则⑤,F可以推导出(E)和id。因此,我们可以得到FIRST(E)={ ( , id }。 接下来,我们计算非终结符E'的FIRST集合。根据规则②,E'可以推导出TE'和ε。其中,规则①已经给出了T的FIRST集合,因此我们只需考虑E'的FIRST集合。根据规则②,我们可以得到FIRST(E')={ ( , id , ε }。 依此类推,我们可以计算出文法中其他非终结符的FIRST集合。 总结起来,计算文法符号X的FIRST集合需要依次考虑X能够推导出的每个符号串,并根据规则判断是否将其加入到FIRST集合中。计算过程中需要重复应用规则,直到没有新的终结符或ε可以被加入到任何FIRST集合中为止。这样,我们可以得到每个文法符号的FIRST集合,用于后续的语法分析工作。