Manuale d'uso del programma Automi

- A cura del Prof. Stefano Salvi -


Simulatore di automi:

Il simulatore legge un file che descrive un automa e costruisce un'interfaccia grafica per l'automa, che consente di provarlo e verificarne la correttezza.

Il simulatore riconosce automi di mealy e di moore.

Per quanto riguarda il funzionamento, ci sono tre possibilità:

Automa regolare:
per ogni ingresso viene indicata una serie di bottoni di scelta (radio button) con i valori leciti, ad ogni pressione del tasto 'Passo' vengono valutati i valori degli ingressi e vengono aggiornati lo stato e le uscite, oppure premendo il pulsante 'Avvia' lo stato e le uscite vengono aggiornati una volta al secondo.
Automa immediato:
se l'automa ha un solo ingresso, si può scegliere la modalità immediata. In questa modalità al posto dei bottoni di scelta verranno usati dei bottoni normali e non si avranno il bottone 'Passo' ne il bottone 'Avanza'. Ogni volta che si premerà il bottone relativo ad un valore dell'ingresso, l'automa avanzerà nello stato, aggiornando l'uscita
Automa riconoscitore:
in questo caso invece degli ingressi indicheremo un alfabeto. L'ingresso sarà dato dal carattere corrente di una stringa di ingresso, che potremo immettere. L'avanzamento si otterrà coi i bottoni 'Passo' o 'Avanza'.

LINGUAGGIO DI DEFINIZIONE DELL'AUTOMA

Prima di tutto alcune precisazioni:

Per definire l'automa si usa il seguente linguaggio:

<programma> ::= <autore> <automa>
<autore> ::= autore { <stringa> }
<stringa> (come definita più sopra)
<automa> ::= <mealy> | <moore>
<mealy> ::= mealy { <ingressi> [immediato] <uscite> <stati> <tab-transizione> <tab-uscite-mealy> }
<moore> ::= moore { <ingressi> <uscite> <stati> <tab-transizione> <tab-uscite-moore> }
<ingressi> ::= input { <ingresso> ... } | alfabeto { <stringa> }
<ingresso> ::= <simbolo> { <simbolo> <simbolo> ... }
<uscite> ::= output { <uscita> ... }
<uscita> ::= <simbolo> { <val-uscita> <val-uscita> ... }
<val-uscita> ::= <simbolo> | { <simbolo> <stringa> }
<stati> ::= stati { <simbolo> <simbolo> ... }
<simbolo> (come definito più sopra)
<tab-transizione> ::= transizione { <riga-transizione> ... }
<riga-transizione> ::= { <simbolo> ... }
<tab-uscite-mealy> ::= uscite { <riga-uscite-mealy> ... }
<riga-uscite-mealy> := { <valori-uscita> ... }
<valori-uscita> ::= { <simbolo> ... }
<tab-uscite-moore> ::= uscite { <valori-uscita> ... }

Note:

Prof. Stefano Salvi