所有章节视频讲解和例题讲解链接: link(非本人b站视频)
1、NFA转DFA和DFA的化简
空-closure闭包
经空转换后到达的状态集合(如closure(s),结果包含s本身状态)
move(s,a)
s状态集经过a转换后的状态集(结果不包含s本身,只包含转换后的状态)
dtrans = closure(move(s))
设开始符号的closure()闭包A为初始状态集,不断进行dtrans操作直至没有新的状态集
2、求first()和follow()并构建ll(1)分析表
增广文法
当开始符号即在产生式左侧出现也在右侧出现,新增符号S‘,并增加产生式S’->S
消除左递归
形如 T->T+s|a的产生式,新增符号T变为如下形式(可以先分析出存在左递归的产生式的正则表达式分析语义后新增符号消除左递归):
T->aT’
T’->+sT’| 空
first()
形如 T->+Sa的产生式(+,a为终结符):
first(T)+= {+}
形如T->Sa的产生式(a为终结符)
first(T)+ = first(S)
follow()
形如T->+Sa的产生式(+,a为终结符):
follow(S)+={a}
形如T->+SK的产生式(+为终结符):
follow(S)+= first(K)- 空
形如T->