Knowledge Discovery nella Diagnosi di Sistemi Attivi

23
Analisi Lessicale Ruolo primario = processo di astrazione: [caratteri] [simboli] Ruolo secondario Vantaggi nella separazione tra analisi sintattica e analisi lessicale: 1. Semplicità di progetto (la sintassi non si preoccupa di spaziatura, commenti, ...) 2. Efficienza 3. Portabilità Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 1 Analizzatore Lessicale programm a sorgente simbolo next() Analizzatore Sintattico Symbol Table rimozione spaziatura rimozione commenti collegamento tra errori e linee sorgente (chiarezza dei messaggi di errore) (funzione ausiliaria) pseudo-simboli

Transcript of Knowledge Discovery nella Diagnosi di Sistemi Attivi

Page 1: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Analisi Lessicale Ruolo primario = processo di astrazione: [caratteri] [simboli]

Ruolo secondario

Vantaggi nella separazione tra analisi sintattica e analisi lessicale:

1. Semplicità di progetto (la sintassi non si preoccupa di spaziatura, commenti, ...)

2. Efficienza

3. Portabilità

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 1

AnalizzatoreLessicale

programma sorgente

simbolo

next()

AnalizzatoreSintattico

SymbolTable

rimozione spaziatura

rimozione commenti

collegamento tra errori e linee sorgente (chiarezza dei messaggi di errore)

(funzione ausiliaria)

pseudo-simboli

Page 2: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Specifica dei Simboli

Stringa lessicale: sequenza significativa di caratteri (lexeme)

Simbolo: astrazione di una classe di stringhe lessicali

Pattern: regola per descrivere le istanze di un simbolo (espressione regolare)

Attributo lessicale: quando il simbolo è astrazione di più stringhe lessicali

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 2

alfa = (beta * 3) ⟨id, alfa⟩ ⟨assign, ⟩ ⟨left, ⟩ ⟨id, beta⟩ ⟨times, ⟩ ⟨num, 3⟩ ⟨right, ⟩

Page 3: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Automi Finiti Formalismo per descrivere certi tipi di algoritmi (“macchine”)

In particolare: per controllare l'appartenenza di una stringa a un linguaggio regolare (matching stringa – expreg)

Forte correlazione tra

Processo di riconoscimento di un id definito dalla sequenza delle transizioni coinvolte

Linguaggio regolare riconosciuto = { cammini nell'automa }

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 3

automi finiti

espressioni regolari

id lettera (lettera | cifra) processo di riconoscimento di un id mediante un diagramma

1 lettera 2

lettera

cifra

Stati: cosa è già stato riconosciuto

Transizioni: cambiamento di stato causato dal matching di un carattere

12222a l f a

un cammino che genera la stringa "alfa"

Page 4: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Automi Finiti Deterministici

Def: Un DFA è una quintupla M = (, S, T, s0, F), dove:

= alfabeto

S = insieme degli stati

T: S S = funzione di transizione (deterministica)

s0 = stato iniziale (unico)

F S = insieme degli stati finali (non vuoto)

L riconosciuto da M L(M) = { stringhe generate da un percorso che termina in uno stato finale }

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 4

Page 5: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Automi Finiti Deterministici (ii)Note : comparazione della definizione formale di DFA con l'esempio diagrammatico (id)

1. Stati identificabili con qualsiasi etichetta (numeri, lettere, stringhe, ...)

2. Fattorizzazione (astrazione) di n transizioni, una lettera/cifra, mediante la transizione lettera/cifra

3. Def T: S S = funzione T(s, c) deve avere un valore (s, c) transizioni mancanti!

Stato di errore: doppio significato

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 5

transizioni mancanti transizioni di errore

1 lettera

lettera

cifra

errore

altroaltro

qualsiasi

lettera (lettera|cifra)

altro c ( - { caratteri coinvolti nelle altre transizioni uscenti dallo stesso stato })

significato sensibile al contesto

non è un identificatore (da stato non-finale)

identificatore seguito da separatore (da stato finale) maximal munch

possibili caratteri di input

2

Page 6: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Esempi di DFA in Forma Diagrammatica

1. L = { x | x include esattamente un b }

2. L = { x | x include al più un b }

3. L = { x | x = costanti numeriche in notazione scientifica }

4. L = { x | x = commento Pascal }

5. L = { x | x = commento C }

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 6

b

notbnotb

b

notbnotb

+

cifra

cifra

cifra

. cifra

cifra

E+

cifra

cifra

cifra

{

altro

}

1 2 3 4 5

altro */ /

altro

cifra [0-9]

nat cifra

snat (|) ? nat

num snat (“.”nat) ? (E snat) ?E

**

Page 7: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Aumento della Semantica nei DFA

Rappresentazione non descrive ogni aspetto algoritmico del riconoscimento

Errore backtracking o return(ERROR) ?

Stato finale ?

Matching del carattere ? (accumulazione nel lexeme)

Maximal munch ?

E sempio : identificatore Pascal

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 7

start lettera [altro]inside

lettera

cifra

return(id)

transizioni non-lettera

carattere di lookahead (non consumabile)

Inoltre: esprime il maximal munch

end

diagrammaticaformale

Page 8: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Problema dello Stato Iniziale Poiché diversi token in un LP combinazione (fusione) di diversi automi

1. Caso “predittivo”: :=, <=, = (senza ambiguità)

2. Caso ambiguo: <=, <>, < (dovremmo)

In t eoria : combinazione manuale di tutti i token in un grosso DFA complesso!Meglio: estendere DFA a NFA + algoritmo: NFA DFA equivalente (approccio modulare)

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale

<

<

8

:

<

=

=

=

return(ASSIGN)

return(LE)

return(EQ)

<=

>

return(LE)

return(NE)

return(LT)>

return(LE)

return(NE)

return(LT)

=

[altro]

<

Page 9: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Transizione Vuota

-transizione

Vantaggio: semplice e sistematica combinazione dei riconoscitore dei simboli ("colla" per gli NFA)

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 9

formalmente: matching della stringa vuota ()

intuitivamente: effettuata “spontaneamente” (senza consumo del carattere)

:

<

=

=

=

Page 10: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Automi Finiti Nondeterministici

Def: Un NFA è una quintupla M = (, S, T, s0, F), dove:

= alfabeto

S = insieme degli stati

T: S ( {}) 2S = funzione di transizione 2 cause di nondeterminismo

s0 = stato iniziale

F S = insieme degli stati finali

L riconosciuto da M L(M) = { x | x = c1c2...cn, ci ( {}), ed s1 T(s0, c1), s2 T(s1, c2), ... sn T(sn-1, cn), sn F }

Note:

1. x = c1c2...cn, in effetti |x| n

2. Nondeterminismo nella scelta di si T(si-1, ci)

3. Formalmente, NFA non rappresenta un algoritmo, ma può essere simulato da un algoritmo con backtracking ( problema di efficienza)

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 10

-transizioni

stesso c per diverse transizioni

Page 11: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Esempi di NFA in Forma Diagrammatica

Riconoscimento di abb

Riconoscimento di L((a | )b) in particolare: , a, b

DFA equivalente:

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 11

1

2

3

4

a b

a

1 2 4 2 4 a b b

1 3 4 2 4 2 4a b b

a

bb

b

diversi cammini per la stessa stringa

Page 12: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Esempi di NFA in Forma Diagrammatica (ii)

acab (a | c)b

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale

c

12

2

3

5

7

1

4

6

8 9 10

a

b

Page 13: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Automi Specificati da Tabelle delle Transizioni

Assunzioni:

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 13

Codice generico verdetto

stringa in inputDFA

1lettera

2

lettera

cifra

[altro]3

c

lettera cifra altro F

1 2

2 2 2 [3]

3

1 2 3 4 5

altro *

/ /

altro

c

/ * altro F

1 2

2 3

3 4 3

4 5 4 3

5

Caselle vuote transizioni non specificate

s0 = primo della lista

Estensione informativa stati Fconsumo di c

* *

Page 14: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Automi Specificati da Tabelle delle Transizioni (ii)

Codice generico 3 strutture dati(semplice, eppure universale)

Algoritmo table-driven:

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 14

T[stato,c] transizioni interi

Cons[stato,c] Booleani true: avanti (consumo)

F[stato] Booleani true: stato finale

stato := 1; c := next();while not F[stato] and not error(stato) do begin nuovo_stato := T[stato,c]; if Cons[stato, c] then c := next(); stato := nuovo_stato end;if F[stato] then accetta.

ex: stato = -1

Page 15: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Automi Specificati da Tabelle delle Transizioni (iii)

Note sugli algoritmi table-driven:

1. Vantaggi:

2. Svantaggi: spreco di memoria (tabelle sparse compressione)

3. Tecnica estendibile ai NFA

Problema di fondo: Expreg DFA in due passi (automatici nei generatori):

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 15

Codice generico

Ridotta dimensione del codice

Facile manutenzione del codice

backtracking inefficiente: meglio trasformare NFA DFA

Codice generico verdetto

stringa in input

DFANFAExpreg1 2

T[stato,c] = { stati }

Page 16: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Expreg NFA (Costruzione di Thompson)

Metodo:

1. Expreg atomica: x =

2. Concatenazione: xy

3. Alternativa: x | y

4. Ripetizione: x*

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 16

Costruzione incrementale partendo dagli automi (a, )-transizioni: per incollare insieme sotto-automiAutoma finale = riconoscitore di L(r)

lettera *

|

lettera cifra

a

a

in generale

(automi standardizzati)

x y

x

y

x

5. Parentesi: (x) automa invariato

Page 17: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Expreg NFA (Costruzione di Thompson) (ii) Note :

nuovo stato nuovo nome

Proprietà dell'NFA finale (per costruzione):

1. NFA riconosce L(r)

2. Numero-stati(NFA) 2 * (simboli in r)

3. NFA ha

4. stato NFA: possibile uno fra due casi

Costruzione non unica (semplificazione):

xy:

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 17

1 stato iniziale (nessuna transizione entrante)

1 stato finale (nessuna transizione uscente)

1 transizione uscente marcata da c al più 2 transizioni uscenti marcate da

x y x y

Page 18: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Costruzione di Thompson: Esempi

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 18

a b

a b

a b

a

ab | aa b

ab

ab | a

|

a

a b

Page 19: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Costruzione di Thompson: Esempi (ii)

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 19

lettera cifra

letteralettera (lettera | cifra)*

lettera *

|

lettera cifra

cifra

lettera | cifra

lettera

cifra

lettera

cifra

(lettera | cifra)*

lettera lettera (lettera | cifra)*

Page 20: Knowledge Discovery nella Diagnosi di Sistemi Attivi

NFA DFA

Rimozione di transizioni

Def di -closure:

1. Stato singolo: s -closure(s) { s’ | s ... s’ in M } { s }

2. Insieme di stati: S -closure(S)

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 20

empty (-transizioni) -closure = { stati raggiungibili da -transizioni }multiple (su singolo c) { stati raggiungibili con stesso c }

a

= costruzione di Thompson per a*

1 = { 1, 2, 4 }2 = { 2 }3 = { 2, 3, 4 }4 = { 4 }

U ss S

{1,3} = 1 3 = {1,2,4} {2,3,4} = {1,2,3,4}

1 2 3 4

(cause di nondeterminismo)

Page 21: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Subset Construction

M M’

Computazione di S’, T’, F’:

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 21

NFA DFA M = (, S, T, s0, F)

M’ = (, S’, T’, s’0, F’), dove

S’ := { s’0 }; T’ := ∅;

repeat

Scegli un nodo non marcato AS’;

for each c che marca una transizione di M uscente da un nodo in A do

begin

A’c := { z | sA, sz T };

A’c := -closure(A’c);

if A’c S’ then S’ := S’ { A’c };

T’ := T’ { A A’c }

end;

Marca A

until tutti i nodi in S’ sono marcati;

F’ := { A | AS’, A F ∅ }.

c

ccc

AA’c A’c

S’ 2S T’: S’ S’s’0 = s0

F’ S’

c

Page 22: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Esempi NFA DFA

1.

2.

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 22

a

1 2 3 4

s’0 = s0 = 1 = {1, 2, 4 }

{1,2,4} a{2,3,4}

a

ab | a

a b

a

s’0 = 1 = {1, 2, 6 }

1

2 3 4 5

6 7

8 {1,2,6} a {3,4,7,8} {5,8}b

a*

Page 23: Knowledge Discovery nella Diagnosi di Sistemi Attivi

Esempi NFA DFA (ii)

3.

Tecnologie dei Linguaggi Artificiali 2. Analisi lessicale 23

lettera (lettera | cifra)*

lettera

cifra

lettera 1 2 3 4

5 6

7 8

9 10

{1}lettera

{2,3,4,5,7,10}

s’0 = { 1 }

lettera

{4,5,6,7,9,10}

{4,5,7,8,9,10}cifra

lettera

cifra lettera

cifra