Я пытаюсь создать регулярное выражение из конечного автомата, но обнаружил, что полностью застрял в этом. Используемое регулярное выражение выглядит так:
? = 0 или 1
* = 0 или больше
+ = 1 или более
| = или
_ = пустая строка
@ = пустой набор
() = круглые скобки
Как я понимаю, строки должны быть либо "b *", заканчиваться "a *", либо заканчиваться "a + bb +"
Теперь у меня есть ((b*(a+(bb))*)*)
но это не учитывает строку, заканчивающуюся на «а».
Как уже говорилось, я на 100% застрял с этим и просто не могу понять, как я должен работать с этим.
изображение: http://img593.imageshack.us/img593/2563/28438387.jpg
КОД:
Тип автомата
FA
States
q1
q2
q3
q4
алфавит
а
б
Исходное состояние
q3
Конечные состояния
q3
q4
Переходы
q1 a q2
q1 b q3
q2 a q2
q2 b q2
q3 a q4
q3 b q3
q4 a q4
q4 b q1
Любые решения или советы приветствуются!