Изменения

Перейти к: навигация, поиск

Автоматы в современном мире

54 байта добавлено, 23:24, 14 марта 2018
Построение НКА
'''break'''
'''case''' '.': <span style="color:#008000">// конкатенация</span>
e2 = stack.pop() e1 = stack.pop()
patch(e1.out, e2.start)
push(frag(e1.start, e2.out))
'''break'''
'''case''' '|': <span style="color:#008000">// альтернатива</span>
e2 = stack.pop() e1 = stack.pop()
s = state(Split, e1.start, e2.start)
push(frag(s, append(e1.out, e2.out)))
'''break'''
'''case''' '?': <span style="color:#008000">// ноль или один</span>
e = stack.pop()
s = state(Split, e.start, NULL)
push(frag(s, append(e.out, list1(&s->out1))))
'''break'''
'''case''' '*': <span style="color:#008000">// ноль или больше</span>
e = stack.pop()
s = state(Split, e.start, NULL)
patch(e.out, s)
'''break'''
'''case''' '+': <span style="color:#008000">// один или больше</span>
e = stack.pop()
s = state(Split, e.start, NULL)
patch(e.out, s)
stack.push(frag(e.start, list1(&s->out1)))
'''break'''
e = stack.pop()
patch(e.out, matchState)
'''return''' e.start
442
правки

Навигация