Navrhnite deterministický konečnostavový automat (DFA) pre jazyk špecifikovaný nasledujúcim regulárnym výrazom využitím metódy tokenov a naprogramujte jeho iteratívnu implementáciu:
{o|(o|qC)q}
Pri riešení zadania sa riaďte nasledujúcimi technickými pokynmi k jeho vypracovaniu a odovzdaniu. Stiahnite si a dekomprimujte kostru riešenia, ktorá má nasledujúcu štruktúru:
- specification.fsa – súbor s formálnou špecifikáciou výsledného DFA. Súbor musí obsahovať abecedu automatu, stavy vrátane ich anotácií, prechody, počiatočný stav a akceptačné stavy zapísané v doménovo-špecifickom jazyku predstavenom na prednáškach. Samotný postup návrhu automatu je nutné taktiež písomne zdokumentovať na priloženom pomocnom hárku papiera.
- automaton.py – skript s definíciou triedy DFA, ktorú je potrebné implementovať. Táto trieda musí obsahovať verejnú metódu check s parametrom reprezentujúcim vstupný reťazec a návratovou (pravdivostnou) hodnotou určujúcou, či daný reťazec patrí alebo nepatrí do jazyka špecifikovaného zadaným regulárnym výrazom. V tomto skripte nie je povolené využívať žiadnu rekurziu.
- main.py – skript na manuálne testovanie implementácie. Tento skript spustíte v adresári so súbormi riešenia príkazom
py main.py. - check_fsa_syntax.py – skript na overenie syntaxe súboru specification.fsa. Tento skript spustíte v adresári so súbormi riešenia príkazom
py check_fsa_syntax.py.
Pri riešení nie je povolené pridávať žiadne dodatočné importy, meniť názvy jednotlivých súborov, tried alebo metód ani štruktúru riešenia. Po doplnení formálnej špecifikácie automatu a požadovanej funkcionality jeho implementácie skomprimujte vaše riešenie (súbory specification.fsa, automaton.py, main.py a check_fsa_syntax.py) do zip archívu bez akýchkoľvek podadresárov a nahrajte ho ako odpoveď. Na pomenovaní archívu nezáleží.