Скажем, у меня есть две детерминированные конечные автоматы, представленные следующими схемами перехода:Как слить два автомата с конечным состоянием?
FSA для ключевого слова ЕСЛИ: ЕСЛИ
___ ___ _
/ \ I / \ F // \\
>| 0 |----->| 1 |----->||2||
\___/ \___/ \\_//
FSA для ID: [AZ] [А-Z0 -9] *
------------
___ | _ LET |
/ \ LET // \\<------
>| 0 |----->||1||
\___/ \\_//<------
| NUM |
------------
Какой алгоритм может использовать, чтобы объединить их в единый детерминированных конечных автоматов состояния с тремя конечными состояниями, респ негодовали по следующей диаграмме переходов:
-----------------------
| LETTER BUT F OR NUM | --------
___ | _ _ LET v _ | LET |
/ \ I // \\ F // \\----->// \\<------
>| 0 |----->||1||----->||2|| ||3||<--------
\___/ \\_// \\_//----->\\_//<------ |
| NUM | NUM | |
| ANY LETTER OTHER THAN I ------------ |
---------------------------------------------
1: ID
2: IF (IT'S ALSO AN ID, BUT THE KEYWORD IF HAS A HIGHER PRECEDENCE)
3: ID
Где переход «NUM» между состоянием 2 и 3 происходит из комбинированной машины? В противном случае, похоже, вы хотите объединить машины и добавить переход из состояния в нуль. –
Забыл добавить их в спешке. –
Вы вручную рисовали эти искусства ascii или использовали инструмент? Очень аккуратно в любом случае. – Loax