442
правки
Изменения
→Построение НКА
<tex>\mathrm{list1}</tex> создает новый список указателей состоящий из одного указателя <tex>\mathrm{outp}</tex>. <tex>\mathrm{append}</tex> конкатенирует два списка указателей, возвращая результат. <tex>\mathrm{patch}</tex> связывает повисшую стрелку в списке <tex>\mathrm{l}</tex> с состоянием <tex>\mathrm{s}</tex>.
Используя данные примитивы и стек фрагментов можно реализовать построение НКА.
'''fun''' post2nfa('''charstring''' *postfix): '''state*''' '''char''' *p
'''frag''' stack[1000], e1, e2, e
'''state''' s
stackp = stack
'''for''' (p i = 1 '''to''' postfix; *p; p++).length - 1 '''switch'''(*ppostfix[i])
'''defaul'''t: <span style="color:#008000">// символ</span>
s = state(*ppostfix[i], NULL, NULL)
push(frag(s, list1(s.out))
'''break'''