c语言编程nfa确定化.docx

NFA 确定化为 DFA 1.实验目的 设计并实现将 NFA 确定化为 DFA 的子集构造算法, 从而更好地理解有限自动机之间的 等价性,掌握词法分析器自动产生器的构造技术。该算法也是构造 LR 分析器的基础。 2.实验要求 设计并实现计算状态集合 I的£闭包的算法 _Closure(l)和转换函数 Move(l,a),并 在此基础上实现子集构造算法 Subset_Construction 。利用该从 NFA 到 DFA 的转换程序 Subset_Construction ,任意输入一个 NFA N= (S,工,S ,s0,F ),输出一个接收同一语言的 DFA M=(S,工,S ,s0 ,F )。 3.实验内容 (1)令I是NFA N的状态集S的一个子集,I的£闭包的 _Closure(I)构造规则如下: 若 s€ I,贝U s€ _Closure(I); 若 s € _Closure(I) 且 S (s, )=s 而 s ? _Closure(I) ,贝U s € _Closure(I) 根据上面的规则,下面给出了一个计算 I 的闭包的算法 _Closure(I) 。 SET S; SET _Closure(input) SET *input; { S=input; /* 初始化 */ push(); /* 把输入状态集中的全部状态压入栈中 */ while( 栈非空

文档评论(0)

1亿VIP精品文档

相关文档