Как было указано ранее, КА является хорошей математической моделью для представления алгоритмов распознавания лексем в ЛА, в особенности для лексем из бесконечных классов. При этом источником, по которому строится КА, является регулярная грамматика.
Пусть задана регулярная грамматика G = <N, Т, Р, S>, правила которой имеют вид:
Аi аj Аk или Аi
аj., где Аi, Аk
N и аj
Т.
Тогда конечный автомат А = <V, Q, , q0, F>, допускающий тот же самый язык, что порождает регулярная грамматика G, строится следующим образом:
1) V = T;
2) Q = N {Z}, Z
N, Z
T, Z – заключительное состояние КА;
3) q0 = {S};
4) F = {Z};
5) отображение строится в виде:
а) каждому правилу подстановки в грамматике G вида Аi аjАk ставится в соответствие команда (Ai, aj)
Ak;
б) каждому правилу подстановки вида Аi аj ставится в соответствие команда (Ai, aj)
Z.
Пример 2.2.2. Построить КА для грамматики из примера 2.2.1. Имеем А=<V,Q,, q0, F>,
1) где V = T = {б, ц}
2) Q = N {Z} = {I, K, Z}
3) q0 = {S} = {I}
4) F = {Z}
1) :
a) в виде совокупности команд:
(I, б) Z
(I, б) К
(К, б) К
(К, ц) К
(К, б) Z
(К, ц) Z
б) в виде диаграммы состояний (рис. 2.2)
Рис. 2.2. Диаграмма состояний КА для идентификаторов
Допустим и обратный переход. Так конечному автомату А = <V, Q, , q0, F> можно поставить в соответствие регулярную грамматику G = <N, Т, Р, S>, у которой:
1) T = V;
2) N = Q;
3) S = {q0};
4) множество правил подстановки Р строится следующим образом:
каждой команде автомата (qi,аj)qk ставится в соответствие правило подстановки qi
ajqk, если qk
Q, либо еще одно правило qi
аj, если qk
F.