【直接NFA->DFA】

来源:互联网 发布:mac创建文件夹 编辑:程序博客网 时间:2024/06/16 03:09

1.为什么要加#?

比如

(a|b)*a b b #
 1  2  3 4 5 6

因为对于每个NFA的状态集,比如{1} 表示的是分析到了1对应的位置之前。 

所以如果不加#的话, 对于{5} 表示的是分析到了b之前, 但这个时候并没有结束。

那把{1}  表示的是分析到了1对应的位置之前 改成 分析到了1对应的位置之后,

又会发现一个问题,那怎么表示start,最开始的状态呢? 可以在(a|b) * a b b之前加个 ^符号。

但是觉得还是放在#后面比较好些。


2.为什么计算followpos的时候只需要那2条规则(cat和star)?

因为对于 | 来说无法推导出follow关系
0 0