资 源 简 介
FIRST(α)的构造实现代码
FIRST(α)的构造算法
要构造FIRST(α),根据定义:
α=X1?Xn
那么对于从前到后的Xi我们进行分类讨论:
如果Xi∈Vt,那么FIRST(α)=FIRST(Xi)={Xi}
如果Xi∈Vn,因为不存在左递归,所以Xi=a.......|?,那么FIRST(Xi)={a,?,FIRST(Xi+1)}
只要Xi?1不包含?,那么Xi不可能影响FIRST(α)
那么我们通过记录每个a∈V,然后进行深度优先记忆化搜索,将所有的状态填满,因为LL(1)文法使不会回溯的,所以能够保证在O(n)的时间完成,采取递归的形式实现