Есть вопросы по правильности построения детерминированного конечного автомата по регулярному выражению
(где
- позиции символов) из алфавита
:
1) Корень синтаксического дерева это его самая верхняя вершина (если пользоваться алгоритмами построения синтаксического дерева из книг Ахо-Ульмана и Серебрякова по компиляторам)?
2) Возможен ли случай, когда переход к следующему состоянию возможен только при вводе одного символа из алфавита выше?
Например в случае с моим регулярным выражением, первым символом может быть только символ
. Т.е. правильно ли я понимаю, что функция перехода
, где
- начальное состояние автомата?
И если да, то как это изобразить на графе автомата? Я думаю, что нужно просто не рисовать стрелку от первого состояния для символа
, а рисовать только для
, но не уверен...
Таблица
:
где на слово height в таблицах не обращайте внимания (глюк какой-то)
Таблица переходов:
Граф детерминированного конечного автомата (где от позиции
к позиции
пропущенный переход осуществляется по символу
?;двойные кружки есть состояния остановки F):
Правильно ли я его построил?