Analisi Lessicale: esercizi Sia data la seguente tabella definente la funzione move di un automa a b {2} {1} 1 {0,1} 2 {0,2} Esercizio: Si calcoli: Clos({0}), Clos({1}), Clos({0,2}).
Esercizio1 Si calcolino i seguenti linguaggi: L0 = { | ,0 * ,0} Sol: aiutiamoci con la rappresentazione grafica e calcoliamo le etichette dei cammini:
Esercizio2 Si utilizzi il driver NFA nel riconoscimento della stringa abba mostrando l’evoluzione dello stack di controllo states Sol: states contiene coppie (stato-puntatore). Inizialmente, tali coppie hanno puntatore settato a 0 e come stato ciascuno degli stati di Clos({0})={0,1}. Quindi: [(0,0)(1,0)] => [(1,0)] => [(,1)(1,0)] => [(1,0)] => [] =>…
Esercizio3 Si utilizzi il driver move1Star nel riconoscimento della stringa abba mostrando l’evoluzione della variabile di controllo S Sol: S contiene un insieme di stati del nondeterministico, emulando tutte le possibili transizioni: S={0,1} S=move1({0,1},a)={0,1} S=move1({01,},b)={2} S=move1({2},b}={}
Esercizio4 Si trasformi l’automa nondeterministico in uno deterministico applicando la trasformazione movestar, mostrando l’evoluzione della variabile list Sol: La trasformazione è basata sul merge delle righe di insiemi di stati equivalenti: la variabile list contiene la lista degli insiemi trovati ma non ancora considerati. List=Clos({0})={0,1} => list={2} => list {0,1,2} e corrispondentemente: a b {01} {2} {0,1,2} ---- a b {01} {2} a b {01} {2} {0,1,2} ---- => =>