Изменения

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

Регулярная аппроксимация КС-языков

5 байт добавлено, 20:15, 19 января 2014
Идея алгоритма
'''if''' !IsLeftType(<tex>N_i</tex>) && !IsRihtType(<tex>N_i</tex>)
return cyclic;
Заметим, что <tex> \forall i </tex> <tex>recursive(N_i) \neq self </tex>, т.к грамматика не самоприменима.<br \>
В основе алгоритма будет рекурсивный обход грамматики во все стороны. Спускаемся по грамматике до тех пор не приходим в терминал или символ алфавита:
# символ алфавит или <tex> /varepsilon </tex> {{---}} добовляем новое правило в автомат
# нерекурсивный нетерминал {{---}} запускаемся от всех правых частей правил, который терминал порождает
# рекурсивный терминал {{---}} в зависимости от типа рекурсивного нетерминала, продолжаем рекурсию (будет ясно из пседокода)
===Псевдокод===
50
правок

Навигация