C PITOLO 2. nalisi Lessicale

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "C PITOLO 2. nalisi Lessicale"

Transcript

1 C PITOLO 2 nlisi Lessicle Il compito dell fse di nlisi lessicle è quello di fornire uno strem di token prtire dll sequenz di crtteri che rppresent il progrmm che si vuole compilre. Lo strem di token prodotto dll nlisi lessicle costituisce l input per le fsi successive (nlisi sintttic). In Figur 2.1 è rppresentto il ruolo dell nlizztore lessicle rispetto lle componenti del compiltore con cui cooper. Il prser invoc l nlizztore lessicle trmite un chimt del metodo get next token(). L nlizztore lessicle legge ed nlizz i crtteri in input fino l riconoscimento di un nuovo token. Se questo è un identifictore, viene cret un entrt corrispondente nell tell dei simoli. Nel cso in cui nessun token veng riconosciuto, l nlizztore lessicle segnl un errore (in un implementzione Jv, d esempio, si potree usre un eccezione pposit). L nlizztore lessicle provvede nche d eliminre dl testo gli spzi Strem di crtteri Lexicl Anlyzer Symle Tle Mnger Token get_next_token() Prser Figur 2.1: Interzioni dell nlizztore lessicle. 16

2 CAPITOLO 2. ANALISI LESSICALE 17 inchi 1, che seprno i token, ed i commenti. Questi ultimi, inftti, sono utili per il progrmmtore, m vengono del tutto ignorti dl compiltore. Un ltro compito importnte è quello di ssocire i giusti numeri di rig con i messggi di errore, in modo tle che il progrmmtore poss trovre fcilmente il punto del progrmm in cui è stto trovto un errore. Si noti come, in line di principio, sree possiile implementre l nlizztore lessicle come un suroutine del prser. Tuttvi un esplicit seprzione delle due fsi h, in generle, i seguenti vntggi: semplicità dell progettzione: seprre le due fsi permette di semplificre notevolmente l scrittur del prser: un prser che non de tener conto degli spzi inchi o dei commenti è più semplice d scrivere. efficienz del processo di compilzione: un nlizztore lessicle come prte distint permette di utilizzre tecniche specifiche per questo tipo di nlisi che migliorno le prestzioni (es. tecniche di ufferizzzione). Inoltre, i formlismi e gli lgoritmi usti per descrivere/riconoscere i token sono più semplici rispetto quelli che sono necessri per riconoscere l struttur del progrmm. Ne consegue un implementzione più semplice ed efficiente. 2.1 Token, pttern e lexeme In quest sezione dimo un significto più preciso dei termini che useremo di seguito. Aimo già visto informlmente cos intendimo per token. In generle d ogni token può corrisponde un insieme (nche infinito) di sottosequenze o sottostringhe dei crtteri in input. Questo insieme viene definito trmite d un regol chimt pttern ssocito l token. Dicimo che un pttern f mtch con ogni string nell insieme ssocito l token. Un lexeme è un sequenz di crtteri nel progrmm sorgente che f mtch con il pttern di un certo token. Ad esempio, nell frse const pi = ; l sottostring pi è un lexeme che f mtch con il token per gli identifictori. In Figur 2.2 imo riportto un serie di token con reltivo pttern (specificto per or in mnier informle) e lcuni esempi di lexeme. I token vengono trttti come simoli terminli dell grmmtic che gener il linguggio sorgente. Come convenzione useremo sempre il grssetto per indicre i token (ed i simoli terminli). Potete pensre d un token come d un ctegori lessicle che rggrupp tutti i lexeme con un significto comune. Il rggruppmento dipende dl tipo di linguggio e dlle scelte del Si considerno spzi inchi i lnk i crtteri di tulzione ed i crtteri di newline.

3 CAPITOLO 2. ANALISI LESSICALE 18 progettist. Ad esempio, si potree scegliere di crere un unic ctegori lessicle che rggrupp tutte le prole riservte del linguggio oppure crere un ctegori lessicle per ogni prol riservt. Il ritorno di un token d prte dell nlizztore lessicle viene implementto trmite l restituzione di un numero intero che corrisponde l token. Noi denoteremo tle numero intero con il nome dell ctegori lessicle in grssetto (es. id). Nel prgrfo 2.2, vedremo come oltre questo numero, in lcuni csi, l nlizztore deve restituire uno o più ttriuti. Un pttern è un regol che descrive l insieme dei lexeme che possono essere riconosciuti come token ll interno del progrmm sorgente. Il pttern per il token const in Figur 2.2 è semplicemente lo spelling crttere per crttere dell unico lexeme dell ctegori lessicle, ovvero l sequenz const. Il pttern per il token reltion è un insieme di sequenze di crtteri (in questo cso gli opertori relzionli del Pscl). Per descrivere precismente pttern più complicti, come d esempio quelli per id o num, utilizzeremo il formlismo delle espressioni regolri, che introdurremo di seguito. 2.2 Attriuti per i token Poichè diversi lexemes possono fre mtch con uno stesso pttern, l nlizztore lessicle deve fornire (oltre l numero identifictivo del corrispondente token) delle ltre informzioni fondmentli per le fsi successive dell compilzione. Ad esempio si il crttere 1 che il crttere 0 fnno mtch con il pttern ssocito num, m è essenzile per il genertore di codice intermedio (fse successiv) conoscere esttmente qule numero er presente nel codice sorgente. Questo tipo di informzioni ggiuntive per i token vengono trttte dll nlizztore lessicle come ttriuti dei token stessi. Si può dire che il token influenz le decisioni del prser, mentre i suoi ttriuti influenzno l trduzione ver e propri dei token. Nell prtic ogni token h l più un TOKEN ESEMPI DI LEXEME DESCR. DEL PATTERN const const const if if if reltion <, <=, =, <>, >, >= < o <= o = id pi, count, D2 letter seguit d cifre e/o lettere num , 0, 6.02E32 Un qulsisi costnte numeric literl Inserire codice: Tutti i crtteri tr e eccetto punt ;, : ( ) } Un crttere di punteggitur Figur 2.2: Esempi di token, pttern e lexeme.

4 CAPITOLO 2. ANALISI LESSICALE 19 ttriuto che è un punttore d un entrt dell tell dei simoli in cui sono memorizzte tutte le informzioni reltive l token. Esempio 1 Considerimo il seguente sttement Fortrn: E = M C 2 I seguenti sono i token che sono generti dll nlizztore lessicle in corrispondenz di quest rig: - id, punttore ll entrt per E nell tell dei simoli - ssign op, - id, punttore ll entrt per M nell tell dei simoli - mult op, - id, punttore ll entrt per C nell tell dei simoli - exp op, - num, numero intero 2 Dll esempio precedente si vede che in lcuni csi non è necessrio specificre nessun ttriuto perché l prim componente dell coppi è sufficiente per identificre il lexeme. Inoltre in questo esempio il vlore dell ttriuto per il settimo token num è il numero intero 2 (cioè l costnte inter corrispondente l lexeme). Equivlentemente l nlizztore lessicle vree potuto inserire il lexeme 2 nell tell dei simoli e mettere come vlore dell ttriuto per num il punttore ll entrt corrispondente. È un scelt del progettist del compiltore. 2.3 Errori lessicli L nlizztore lessicle h un visione molto locle del progrmm sorgente e quindi non h l possiilità di ccorgersi di molti errori. Ad esempio, se in un progrmm C viene incontrt l string fi nel contesto fi (== f(x) ) l nlizztore lessicle non è in grdo di dire se fi è in reltà l string if scritt mle oppure un identifictore non ncor pprso nel progrmm sorgente. Dto che fi è un identifictore vlido, esso viene inserito nell tell dei simoli e l errore verrà riconosciuto più trdi in un delle fsi successive (proilmente l nlisi sintttic). L unic situzione in cui l nlizztore lessicle può riconoscere un errore è qundo nessuno dei suoi pttern f mtch con un prefisso dell input rimnente. In questo cso viene segnlto un errore e l nlizztore può d esempio utilizzre l strtegi pnic mode per ndre vnti e riconoscere il prossimo token.

5 CAPITOLO 2. ANALISI LESSICALE Specificre i pttern Quell delle espressioni regolri è un notzione importnte per specificre i pttern. Le espressioni regolri sono uste in molti contesti, oltre quello che vedremo in questo corso. Esse denotno insiemi di stringhe e possono essere considerte un metlinguggio per specificre linguggi (regolri) Stringhe e linguggi Comincimo d introdurre lcune convenzioni che servirnno d qui in poi. I termini lfeto o clsse di crtteri denotno un qulsisi insieme finito di simoli. Ad esempio l insieme 0 1} è l lfeto inrio. ASCII e Unicode sono esempi di lfeti molto utilizzti nei computer. Un string su un lfeto è un sequenz finit di simoli dell lfeto. Nell mito dell teori dei linguggi i termini prol o frse sono sinonimi di string. Stringhe generiche verrnno nel seguito indicte con le vriili s s s... s 0 s 1 s 2... oppure x y z w... x x... x 0 x 1... L lunghezz di un string s verrà indict con s ed è il numero di simoli che costituiscono l sequenz s. Ad esempio, nn è un string lung 6. L string vuot è denott con e h lunghezz 0. I seguenti sono ltri termini usti in questo contesto con le reltive definizioni: Prefisso di s: un string ottenut togliendo zero o più simoli dll fine di s. Es. n è prefisso di nn. Suffisso di s: un string ottenut togliendo zero o più simoli dll test di e. Es. nn è suffisso di nn. Sottostring di s: un string ottenut togliendo d s si un suo suffisso che un suo prefisso. Es. n è un sottostring di nn. Si noti che ogni prefisso o suffisso di s è nche un sottostring di s (m non è vero il contrrio). Si noti nche che s stess è nche suo prefisso, suffisso e sottostring. Prefisso, suffisso e sottostring propri di s: un qulsisi string non vuot x che si, rispettivmente, un prefisso, un suffisso o un sottostring di s e tle che s = x. Sottosequenz di s: un qulsisi string ottenut cncellndo zero o più crtteri, non necessrimente contigui, d s. Es. è un sottosequenz di nn. Il termine linguggio denot un qulsisi insieme (finito o infinito) di stringhe su un certo lfeto fissto. Quest definizione è molto generle. Ad esempio l insieme vuoto ( o }) è un linguggio (chimto linguggio vuoto) in se quest definizione. Un ltro linguggio prticolre è il linguggio

6 CAPITOLO 2. ANALISI LESSICALE 21 }, che contiene un sol string, l string vuot. Altri esempi possono essere: (1) tutti i progrmmi Pscl sinttticmente en formti o nche (2) tutte le frsi in itlino che sono grmmticlmente corrette. Tuttvi quest ultimo linguggio è molto difficile d definire precismente, mentre ltri linguggi non nli possono essere definiti mtemticmente (come fccimo noi con i linguggi di progrmmzione trmite le grmmtiche). Come ultim cos si noti che l definizione che imo dto non richiede che si ssocito nessun significto prticolre lle stringhe del linguggio. L disciplin che si occup dei metodi per dre significto lle stringhe di un linguggio viene chimt generlmente semntic. Richimimo lcune operzioni di se sulle stringhe. Se x e y sono due stringhe, llor l conctenzione di x ed y, scritt come xy, è un string ottenut ttccndo y in fondo x. Es. x = uon e y = giorno xy = uongiorno. L elemento neutro per l conctenzione è l string vuot: s = s = s per ogni string s. Se pensimo ll conctenzione come d un prodotto, possimo definire l nlogo dell elevmento potenz come segue: s 0 = per ogni string s s i = ss i 1 per ogni string s e per ogni i > 0 Ad esempio otto 0 =, otto 1 = otto, otto 3 = ottoottootto Operzioni sui linguggi Ci sono diverse importnti operzioni che possono essere pplicte i linguggi. Per qunto rigurd l nlisi lessicle ci limiteremo considerre le seguenti: 1. Unione L 1 L 2 = s s L 1 o s L 2 } 2. Conctenzione L 1 L 2 = s 1 s 2 s 1 L 1 e s 2 L 2 } 3. Esponenzizione L 0 = }, L i = LL i 1 se i > 0 4. Chiusur o stell) di Kleene L = L i i=0 5. Chiusur o stell) positiv di Kleene L = L i i=1 Esempio 2 Si L = A B... Z... z} e D = }. L e D possono essere visti in due modi: come lfeti finiti o come linguggi (finiti) composti d prole che sono tutte lunghe un crttere. Vedimo lcuni linguggi che possono essere definiti prtire d L e D trmite le operzioni che imo ppen introdotto:

7 CAPITOLO 2. ANALISI LESSICALE 22 - L D è l insieme delle lettere e delle cifre - LD è l insieme di tutte le stringhe di lunghezz due formte d un letter seguit d un cifr - L 4 contiene tutte le stringhe di lunghezz 4 che sono formte d lettere - L è un insieme infinito di stringhe ognun delle quli h un lunghezz finit ed è compost d lettere. Questo linguggio contiene, per definizione, nche l string vuot. - L(L D) è l insieme di tutte le stringhe di lunghezz strettmente mggiore di 0, che inizino con un letter e sono composte, dopo l prim letter, d cifre o lettere. - D è l insieme di tutte le stringhe di cifre formte d lmeno un cifr Espressioni regolri In quest sezione definimo un formlismo che ci permetterà di definire un certo tipo di linguggi. Ad esempio potremo definire il linguggio che contiene tutte le stringhe che possono essere viste come identifictori nel modo seguente: letter (letter digit) L rr verticle signific or, le prentesi sono uste per rggruppre sottoespressioni, l sterisco indic zero o più occorrenze dell espressione fr prentesi e l giustpposizione di letter con il resto dell espressione signific conctenzione. L insieme delle espressioni regolri su un certo lfeto Σ è definito induttivmente dlle regole specificte nel seguito. Ogni espressione regolre su Σ definisce in mnier univoc un linguggio su Σ. L definizione induttiv specific (usndo l induzione sull struttur delle espressioni) nche come viene formto il linguggio definito d ogni espressione regolre: Definizione Espressioni Regolri) Si consideri un lfeto finito Σ. L insieme delle espressioni regolri su Σ è costituito d tutte e sole le espressioni generte induttivmente come segue. Associmo d ogni espressione nche il linguggio denotto. 1. è un espressione regolre che denot il linguggio } 2. Se Σ llor è un espressione regolre che denot il linguggio } 3. Sino r ed s due espressioni regolri che denotno i linguggi L(r) ed L(s) rispettivmente. Allor:

8 CAPITOLO 2. ANALISI LESSICALE 23 - (r) (s) è un espressione regolre che denot il linguggio L(r) L(s) - (r)(s) è un espressione regolre che denot il linguggio L(r)L(s) - (r) è un espressione regolre che denot il linguggio L(r) - (r) è un espressione regolre che denot il linguggio L(r) Un linguggio denotto d un espressione regolre viene chimto insieme regolre. Se due espressioni regolri denotno lo stesso linguggio dicimo che sono equivlenti. Assegnimo un precedenz ed un regol di ssocitività gli opertori che costruiscono espressioni regolri così d poter scrivere espressioni con meno prentesi, m che ino un significto univoco. L precedenz è l seguente: 1. L opertore unrio leg mggiormente 2. L conctenzione è il secondo opertore che leg mggiormente ed è ssocitiv sinistr (es. c = ()c) 3. L opertore che leg meno di tutti è l or ( ) ed è nch esso ssocitivo sinistr Con queste convenzioni, d esempio, l espressione () (() (c)) può essere scritt come c. Entrme denotno il linguggio delle stringhe che o sono oppure sono un sequenz, eventulmente vuot, di seguite d un c. Esempio 3 Si Σ = }. denot il linguggio } ( )( ) denot il linguggio }; lo stesso linguggio è rppresentto nche dll espressione denot il linguggio...} ( ) denot il linguggio di tutte le stringhe formte dll conctenzione di un numero qulsisi di e messe in un qulsisi ordine, più l string vuot. Ad esempio,,,,,,,,... Le espressioni regolri possono essere viste come un lger i cui termini (sui simoli di Σ e su ) sono formti ttrverso le tre operzioni. Come tipicmente si f per un lger, dimo, in Figur 2.3, delle equzioni che descrivono lcune proprietà degli opertori.

9 CAPITOLO 2. ANALISI LESSICALE 24 ASSIOMA DESCRIZIONE r s = s r è commuttivo r (s t) = (r s) t è ssocitivo (rs)t = r(st) l conctenzione è ssocitiv r(s t) = rs rt (s t)r = sr tr l conctenzione è distriutiv rispetto r = r r = r è l elemento neutro per l conctenzione r = (r ) relzione tr e r = r è idempotente Figur 2.3: Proprietà lgeriche delle espressioni regolri Definizioni regolri Per motivi di chirezz dell notzione molto spesso è utile identificre delle espressioni regolri e dr loro un nome. Questo nome può poi essere usto ll interno di ltre espressioni regolri negli stessi posti in cui puó essere inserito un simolo dell lfeto. Per ottenere l espressione regolre senz queste mcro st rimpizzre ogni nome con l reltiv espressione regolre. Un serie di definizione di nomi di espressioni regolri si chim definizione regolre ed è un sequenz del tipo: d 1 r 1 d 2 r 2 d n r n dove i d i (i = n) sono tutti nomi distinti e ogni r i (i = n) è un espressione regolre sull lfeto Σ d 1... d i 1 }. Si noti che per definire l espressione per un certo nome d i è possiile usre i nomi definiti in precedenz. Per distinguere i nomi definiti di simoli dell lfeto vero e proprio, useremo l convenzione di scrivere i primi in grssetto. Esempio 4 Scrivimo un definizione regolre per gli identifictori e le costnti numeriche Pscl (queste ultime possono essere intere come d esempio 343, rzionli come o con esponente: 6.343E4, E-20). letter digit A B Z z id letter(letter digit) digits digit digit optionl frction.digits optionl exponent (E(+ )digits) num digits optionl frction optionl exponent

10 CAPITOLO 2. ANALISI LESSICALE 25 I nomi id e num, un volt sostituiti ricorsivmente tutti i nomi contenuti ll interno delle loro espressioni regolri ssocite, corrisponde d un definizione regolre che denot il linguggio degli identifictore e delle costnti numeriche Pscl, rispettivmente. 2.5 Automi stti finiti In quest sezione definimo gli utomi stti finiti non deterministici e deterministici. Essi sono dei riconoscitori di stringhe di un certo linguggio. Vedremo che tutti i linguggi regolri, cioè quelli denotili d espressioni regolri, possono essere ccettti nche d un utom stti finiti (è vero nche il vicevers). Dopo l definizione degli utomi vedremo due lgoritmi importnti: l costruzione dei sottoinsiemi per trsformre un utom non deterministico in deterministico e l lgoritmo per minimizzre il numero degli stti di un utom deterministico Automi non deterministici Definimo l clsse degli utomi finiti non deterministici (Non-deteriministic Finite Automt, NFA). Definizione NFA) Un NFA su un lfeto finito Σ è un tupl S Σ move s 0 F dove: S è un insieme finito di stti Σ è l lfeto dei simoli s 0 S è lo stto inizile F S è l insieme degli stti di ccettzione o stti finli move: S (Σ }) (S) è un funzione di trnsizione che specific per ogni stto s e per ogni simolo x Σ } quli sono le trnsizioni etichettte con x dllo stto s d un insieme, nche vuoto, di stti di destinzione (c è un trnsizione per ogni stto di destinzione). Un NFA può essere rppresentto grficmente trmite un digrmm in cui i cerchi sono gli stti, le frecce etichettte sono le trnsizioni, lo stto inizile h un frecci entrnte con scritto strt e gli stti finli hnno un doppi cerchitur. Ogni frecci può essere etichettt d un simolo di Σ o d, l string vuot. Le trnsizioni di quest ultimo tipo si chimno -trnsizioni. Un primo esempio di NFA si trov in Figur 2.4. S è l insieme }, Σ = }, lo stto inizile è 0, l unico stto finle è 3 (F = 3}) e non ci sono -trnsizioni. Le frecce rppresentno le trnsizioni: d esempio le

11 CAPITOLO 2. ANALISI LESSICALE 26 strt Figur 2.4: Un NFA. due frecce etichettte che prtono dllo stto 0 e vnno negli stti 0 e 1 indicno che move(0 ) = 0 1}. Inoltre move(0 ) = 0}, move(1 ) = } ecceter. Un NFA riconosce le stringhe di un certo linguggio. Per chirire in qule modo un NFA può riconoscere un qulche string introducimo l nozione di cmmino etichettto. Definizione Cmmino etichettto) Si consideri un NFA N = S Σ move s 0 F. Un cmmino etichettto di lunghezz k 0 è un sequenz x x 2 x s1 3 x s2 sk dove: s 0 s 0 è lo stto inizile i k}. s i move(s i 1 x i ) L string x 1 x 2 x k è dett string ssocit l cmmino ed è in generle un string di Σ. Se k = 0 llor il cmmino è costituito solo dllo stto inizile e l string ssocit è l string vuot. Si noti che un cmmino di lunghezz k consiste di un sequenz di k + 1 stti dell utom ed h un string ssocit lung l più k. Questo perchè qulcuno (o nche tutti) i simoli x i potreero essere. Definizione String ccettt) Si N = S Σ move s 0 F un NFA. Un string α Σ è ccettt dll utom N se e solo se esiste un cmmino etichettto s 0 x x 2 x s1 3 x s2 sk su N tle che α è l string ssocit l cmmino e lo stto s k è uno stto finle (in formule s k F α = x 1 x 2 x k ). Se lo stto inizile è di ccettzione llor nche l string vuot è ccettt dll utom. Possimo or introdurre l nozione di linguggio ccettto dll utom.

12 CAPITOLO 2. ANALISI LESSICALE strt Figur 2.5: Un NFA contenente nche -trnsizioni. Definizione Linguggio ccettto) Il linguggio ccettto d un NFA N = S Σ move s 0 F è l insieme L(N) = α Σ α è ccettt d N} Esempio 5 Considerimo l utom in Figur è un cmmino etichettto l cui string ssocit è. Lo stto in cui il cmmino termin, 3, è nche uno stto finle e quindi quest string è ccettt dll utom. Poichè l utom è non deterministico, esiste nche un ltro cmmino etichettto con l string : in questo cso lo stto 0 non è finle e quindi questo cmmino non port ll ccettzione dell string. Si noti che, comunque, l definizione richiede che ci si lmeno un cmmino etichettto che termin in uno stto finle per determinre se l string ssocit è ccettt o no. Fcendo ltri esempi e considerndo l struttur dell utom è fcile convincersi che il linguggio ccettto è quello denotto d ( ). L costruzione di un cmmino etichettto per un dt string può essere vist come un lgoritmo di riconoscimento di stringhe. Ad esempio, supponimo che voglimo controllre se l string f prte del linguggio ccettto dll utom di Figur 2.5. Prtimo dllo stto inizile e notimo suito che, senz considerre nessun simolo, possimo effetture delle -trnsizioni. In ltri termini, l insieme degli stti correnti è, l momento, 0 1 3}; questi sono tutti gli stti d cui posso prtire nel tenttivo di costruire un cmmino etichettto per l string. Considerimo or il primo simolo dell string: e cerchimo di cpire quli sono stti che possimo rggiungere con un trnsizione etichettt

13 CAPITOLO 2. ANALISI LESSICALE 28 con uscente d uno qulsisi degli stti correnti. L insieme degli stti che posso rggiungere con l prim è 2} poichè dgli stti 0 e 3 non ci sono trnsizioni uscenti etichettte con, mentre move(1 ) = 2}. Notimo che dllo stto 2 non escono -trnsizioni e quindi nel processo di costruzione del cmmino per, questo stdio, possimo trovrci solmente nello stto 2 (se ci fossero, dovremmo ggiungere gli stti correnti tutti gli stti rggiungiili con -trnsizioni). Eliminimo il primo simolo dll string in esme e considerimo quello seguente:. A prtire d ogni stto in 2} controllimo in quli stti posso ndre seguendo trnsizioni etichettte con. Si h che move(2 ) = } e quindi non possimo più ndre vnti nel riconoscimento dell string. In questo cso dicimo che l utom è loccto e l lgoritmo di riconoscimento dell string termin senz ccettre. Considerimo invece l string. A prtire d uno degli stti in 0 1 3} posso rrivre, con un, nell insieme di stti 4}. Eliminimo l prim e considerimo l seguente. A prtire dllo stto 4 posso, con un, rrivre nello stto 4 (utilizzndo l trnsizione self-loop etichettt con dello stto 4). Il nuovo insieme degli stti correnti è 4}. A questo punto imo esurito l string in esme. L lgoritmo termin. Per dire se termin con ccettzione o senz, st controllre, in generle, se uno degli stti correnti è finle. In questo cso è vero: 4 è uno stto finle e quindi l string è ccettt dll utom. Un cmmino etichettto che port ll ccettzione dell string è il seguente: Fcendo ltre prove non è difficile convincersi che l utom ccett il linguggio denotto d. Formlizzeremo meglio questo lgoritmo di riconoscimento più vnti Automi finiti deterministici L definizione di utom che imo dto è quell più generle, cioè quell di utom non deterministico. Dimo or un crtterizzzione degli utomi deterministici DFA (Deterministic Finite Automt). Definizione Autom deterministico) Un utom stti finiti deterministico (un DFA) è un tupl S Σ move s 0 F dove: S è un insieme finito di stti. Σ è un lfeto finito di simoli. move: (S Σ) (S) è un funzione di trnsizione tle che per ogni stto s S e per ogni simolo x Σ l insieme degli stti move(s x) o è vuoto oppure contiene un solo stto.

14 CAPITOLO 2. ANALISI LESSICALE Figur 2.6: Un utom deterministico. s 0 S è lo stto inizile. F S è l insieme degli stti finli. In ltre prole un utom è deterministico se d ogni stto non escono mi due trnsizioni etichettte con lo stesso simolo e non ci sono trnsizioni. L nozione di cmmino etichettto e di ccettzione per un DFA è nlog quell di un NFA. Dto che in un DFA non ci sono -trnsizioni e, dto uno stto e un simolo è possiile l più un trnsizione etichettt con quel simolo, si h che per ogni string ccettt d un DFA esiste un unico cmmino etichettto con l string e che termin in uno stto finle. L lgoritmo di riconoscimento di un dt string è ugule quello di un NFA, m in questo cso d ogni psso l insieme degli stti correnti contiene uno ed un solo stto. Esempio 6 Considerimo l utom disegnto in Figur 2.6. Esso è un utom deterministico che ccett lo stesso linguggio dell utom di Figur 2.4, cioè ( ). L unico cmmino di ccettzione per l string è Il cmmino di ccettzione per l string è: Un funzione di trnsizione di un NFA o di un DFA può essere rppresentt nche con un tell in cui le righe sono gli stti e le colonne sono i simoli dell lfeto (e nche nel cso non deterministico). L cell d un rig T e d un colonn x dell tell è l insieme di stti che risult d move(t x).

15 CAPITOLO 2. ANALISI LESSICALE Costruzione dei sottoinsiemi Gli utomi deterministici e quelli non deterministici hnno lo stesso potere espressivo. Questo signific che se un linguggio può essere ccettto d un NFA llor esiste nche un DFA che lo ccett, e vicevers. L lgoritmo di riconoscimento di un cert string nel cso di DFA è più immedito poichè non isogn tener trcci di un insieme di stti (il cmmino di ccettzione, se esiste è unico). D ltr prte, d un punto di vist di progettzione, il non determinismo rende più fcile scrivere un utom e/o determinre che tipo di linguggio ccett, oltre permettere di scrivere utomi più concisi. Bst d esempio gurdre i due utomi delle Figure 2.4 e 2.6 che ccettno lo stesso linguggio (ossi, il linguggio denotto dll espressione regolre r = ( ) ). Il primo è non deterministico nello stto 0 e specific in mnier nturle che si possono riconoscere o in qulsisi numero ed ordine prim di pssre d un string finle oligtori. Il secondo invece deve esplicitre un sort di cktrcking negli stti: l prim che incontr potree essere quell dell string finle oligtori e quindi l utom entr nello stto 1. Se il simolo seguente non è un llor l utom continu ciclre nello stto 1. Nello stto 2, se il simolo seguente non è l ultim l utom ritorn nello stto 1 d spettre di leggere un ltr possiile cndidt d essere il primo simolo dell string finle oligtori. Infine nello stto 3 l utom deve ritornre nello stto 0 o 1 se ci sono ncor simoli o, rispettivmente. Questo perchè i simoli letti precedentemente potreero essere il prefisso di un string che poi terminerà con l string finle oligtori. In quest sezione formlizzimo un vrinte dell lgoritmo di cui imo già prlto prole nell Sezione L lgoritmo che scriveremo è noto come costruzione dei sottoinsiemi (suset construction) e serve per costruire, prtire d un NFA dto, un DFA equivlente che simul il non determinismo, m è deterministico. Per specificre gli lgoritmi, nche nel seguito, useremo uno pseudocodice in cui le strutture dti vere e proprie non srnno specificte (in ogni cso non è difficile implementre questi lgoritmi in un linguggio di progrmmzione: st definire le opportune strutture dti e le vrie funzioni/procedure che specifichimo). Algoritmo Suset construction) Costruzione di un DFA prtire d un NFA. Input: Output: Un NFA N = S Σ move s 0 F Un DFA D = Dsttes Σ Dtrn s 0 F equivlente N e tle che Dsttes (S).

16 CAPITOLO 2. ANALISI LESSICALE 31 Metodo: Costruimo l funzione di trnsizione Dtrn simulndo, ttrverso insiemi di stti di N, i comportmenti di N in prllelo dovuti l non determinismo. L lgoritmo è uno dei clssici lgoritmi di clcolo di un punto fisso. In prtic prtimo d un insieme di stti Dsttes contentente solo uno stto inizile non mrcto. Ad ogni psso selezionimo uno stto non mrcto d Dsttes e ne clcolimo le trnsizioni uscenti ggiungendo DSttes, non mrcti, eventuli nuovi stti trovti. Prim o poi, dto che il numero di possiili stti è finito (il numero di elementi di (S)) non ci srnno più stti non mrcti d considerre e l lgoritmo terminerà. Operzioni utilizzte: -closure : S (S) tle che -closure(s) è un insieme composto dllo stto s più eventuli stti rggiungiili, in N, d s e seguendo solo sequenze di (un o più) -trnsizioni. -closure : (S) (S) tle che -closure(t ) è un insieme composto dgli elementi di T stesso più eventuli stti rggiungiili, in N, prtendo d un qulsisi stto s di T e seguendo solo sequenze di -trnsizioni. In prtic: -closure(t ) = s T -closure(s) move: ( (S) Σ) (S) tle che move(t x) = s T move(s x) In prtic si mettono in uno stesso insieme tutti gli stti rggiungiili con uno stesso simolo x prtire d uno stto qulunque di T. Suset Construction(N) 1 Dsttes 2 ggiungi -closure(s 0 ) in Dsttes non mrcto 3 while T Dsttes non mrcto 4 do mrc T 5 for ech x Σ 6 do U -closure(move(t x)) 7 if U / Dsttes 8 then ggiungi U (non mrcto) in Dsttes 9 Dtrn(T x) U L operzione di -closure può essere relizzt semplicemente con l uso di un pil (stck). In Figur 2.7 è specificto un semplice lgoritmo di esplorzione di un grfo in profondità dttto l cso specifico.

17 CAPITOLO 2. ANALISI LESSICALE 32 E Closure(T ) 1 stck T 2 -closure(t ) T 3 while stck.notempty() 4 do t stck.pop() 5 for ech s N tle che t s 6 do if s / -closure(t ) 7 then -closure(t ) -closure(t ) s} 8 stck.push(s) Figur 2.7: Algoritmo per il clcolo di -closure(t ). Esempio 7 Considerimo l utom in Figur 2.8. Il linguggio ccettto dll utom è quello denotto dll espressione regolre ( ). Applichimo l lgoritmo dell costruzione dei sottoinsiemi e trovimo un DFA equivlente. Clcolimo lo stto inizile: -closure(0) = }. Chimimo questo insieme, per convenienz, A. A è il primo stto non mrcto che f prte di DSttes. All prim iterzione selezionimo per forz lo stto A e lo mrchimo. Clcolimo: -closure(move(a )) = -closure( 3 8}) = } = B -closure(move(a )) = -closure( 5}) = } = C Entrmi gli stti B e C sono nuovi (non si trovno ttulmente in Dsttes) e quindi sono stti inseriti non mrcti in Dsttes. L tell che rppresent l prte di Dtrn clcolt fino questo punto è l seguente: Stto Mrcto A B C Si B No C No Procedimo scegliendo uno stto non mrcto. Prendimo B e clcolimo: -closure(move(b )) = -closure( 3 8}) = } = B -closure(move(b )) = -closure( 5 9}) = } = D Quest volt per il simolo non è stto generto nessuno stto nuovo, mentre per è stto generto il nuovo stto D. L tell przilmente costruit fino questo punto è l seguente:

18 CAPITOLO 2. ANALISI LESSICALE strt Figur 2.8: Un utom non deterministico per ( ). Stto Mrcto A B C Si B B D Si C No D No A questo punto, generimo un solo ltro stto E = } dopodiché non si generno più nuovi stti e l lgoritmo termin. L tell finle è l seguente: Stto Mrcto A B C Si B B D Si C B C Si D B E Si E B C Si L unico stto finle è E poiché è l unico che contiene lo stto finle di N, cioè 10. L utom è disegnto in Figur Minimizzzione di un DFA L fcilità di simulzione di un DFA rispetto quell di un NFA è però compenst dl ftto che il DFA in genere h un numero mggiore di stti. È lecito chiedersi, in quest ottic, se è possiile, dto in certo DFA, trovrne uno equivlente, m che i un numero minore di stti. L rispost è si ed esiste un lgoritmo che trov un DFA equivlente d un DFA dto e tle che l utom risultto h un numero minimo di stti. Qui minimo si riferisce gli stti necessri per poter ccettre il linguggio ccettto dll utom di

19 CAPITOLO 2. ANALISI LESSICALE 34 C strt A B D E Figur 2.9: Un utom deterministico. prtenz. Inoltre si h che l utom minimo è unico meno di rinominre gli stti (in ltre prole se trovo due utomi minimi esiste sempre un funzione igettiv fr gli stti dei due che rispett tutte le trnsizioni). L lgoritmo può essere pplicto solo DFA con un funzione di trnsizione che non restituisce mi l insieme vuoto. Quest condizione non f perdere di generlità ll lgoritmo poiché è sempre possiile ggiungere un ded stte d un DFA nel modo seguente: si cre un nuovo stto d (il ded stte ppunto) che h come trnsizioni uscenti dei self-loop etichettti con ognuno dei simoli di input. Questo signific che se l utom entrerà nel ded stte non ne uscirà più. Ovvimente il ded stte non deve essere uno stto finle. Ogni volt che in un certo stto T e per un certo simolo x si h move(t x) = ponimo move(t x) := d}. In questo modo l funzione di trnsizione non restituisce mi l insieme vuoto e l utom ottenuto è equivlente quello di prtenz. L lgoritmo di minimizzzione cerc di individure gli stti dell utom di prtenz che si comportno nell stess mnier e che quindi possono essere rggruppti insieme in un unico stto diminuendo così il numero totle di stti. Fre questo è l stess cos che individure un prtizione degli stti dell utom tle che gli stti in ogni insieme dell prtizione sino indistinguiili. Il criterio usto per distinguere gli stti è il seguente: dicimo che un string w distingue lo stto s dllo stto t se simulndo il comportmento del DFA, prtire dgli stti s e t, sull string w rggiungimo, rispettivmente, uno stto di ccettzione ed uno stto non di ccettzione (ossi move(s w) F e move(t w) / F ) o vicevers. Ad esempio l string distingue gli stti di ccettzione d quelli di non ccettzione. Ancor, l string distingue gli stti A e B del DFA in Figur 2.9 poichè prtendo dllo stto A, con si rriv nello stto C,

20 CAPITOLO 2. ANALISI LESSICALE 35 mentre prtendo d B si rriv nello stto E. Si M = S Σ move s 0 F un DFA con le crtteristiche richieste. L lgoritmo di minimizzzione è un lgoritmo detto di prtition refining. Esso prte dll prtizione inizile di S formt di due sottoinsiemi (chimimoli gruppi) F e S F. Sicurmente gli stti di questi due gruppi sono distinti (dll string ). Tuttvi non possimo ncor ffermre che gli stti ll interno di uno stesso gruppo sono indistinguiili perché potree esistere un cert string di input che li distingue. Ad ogni psso l lgoritmo rffin l prtizione corrente cercndo di individure lcuni stti che si trovno nello stesso gruppo, m che sono distinti d un simolo x di Σ. Si Π = G 1 G 2... G n } l prtizione corrente di S. Il psso di distinzione procede come descritto in Figur 2.10 New Prtition(Π) 1 Π new Π 2 for ech gruppo G i Π 3 do prtizion G i in sottogruppi G 1 G 2... G k tli che : 4 due qulsisi stti s t in G i sono nello stesso sottogruppo G j 5 (j = 1... k) se e solo se 6 per ogni x Σ s x s x t t e s t G h (h = 1... k) 7 return Π new Figur 2.10: Psso di rffinmento dei gruppi. Algoritmo Minimizzzione degli stti di un DFA) Input: Un DFA M = S Σ move s 0 F con l funzione di trnsizione che non restituisce mi l insieme vuoto. Output: Metodo: Un DFA M equivlente che h un numero minimo di stti. 1. Costruisci un prtizione inizile Π in cui ci sono solo due gruppi: G 1 = F (gli stti finli) e G 2 = S F. 2. Applic l procedur descritt in Figur 2.10 per clcolre l nuov prtizione Π new. 3. Se Π new = Π llor poni Π finl := Π e continu con il psso (4). Altrimenti ripeti il psso (2) con Π := Π new. 4. Costruisci M seguendo le indiczioni che seguono. Scegli uno stto per ogni gruppo di Π finl come rppresentnte del gruppo. Gli stti rppresentnti sono gli stti dell utom minimo M. Le trnsizioni di M sono costruite seguendo il seguente criterio: si s un rppresentnte

21 CAPITOLO 2. ANALISI LESSICALE 36 e supponimo che in M è presente un trnsizione s t, si r il rppresentnte del gruppo cui pprtiene lo stto t (r potree essere t stesso). Allor in M c è l trnsizione s x r. Lo stto inizile di M è il rppresentnte del gruppo in cui si trov lo stto inizile di M. Gli stti finli di M sono i rppresentnti che sono nche stti finli di M (si noti che ogni gruppo di Π finl o è formto d tutti stti finli si M oppure non ne contiene nemmeno uno). 5. Se M h un ded stte d llor rimuovi d d M. Rimuovi nche tutti gli stti che non sono rggiungiili d un cmmino che prte dllo stto inizile. Cncell ogni trnsizione che entrv in d. Restituisci il risultto come utom di output. Esempio 8 Minimizzimo il DFA di Figur 2.9. L lgoritmo si può pplicre ll utom così com è poiché in ogni stto ci sono trnsizioni uscenti per ogni simolo dell lfeto. L prim prtizione è formt dl gruppo (E) (che è l unico stto finle) e dl gruppo (A B C D E). Fccimo il primo psso di rffinmento. Notimo suito che il primo gruppo non può essere rffinto ncor di più poiché è composto d un solo stto e quindi (E) rimne tle nche in Π new. Provimo quindi dividere il secondo gruppo e comincimo con il considerre il simolo di Σ = }. Si h: move(a ) = B move(b ) = B move(c ) = B move(d ) = B Quindi, per qunto concerne il simolo tutti e quttro gli stti possono rimnere nello stesso gruppo. M vedimo l ltro simolo,. Si h: move(a ) = C move(b ) = D move(c ) = C move(d ) = E In questo cso si h che gli stti A B e C vnno finire tutti in uno stesso gruppo dell prtizione corrente Π (il gruppo (ABCD)) mentre lo stto D no. Pertnto doimo isolre lo stto D e inserire in Π new i due nuovi gruppi (ABC) e (D) l posto del gruppo (ABCD). L prtizione è cmit e quindi doimo fre un ltro psso di rffinmento, con l prtizione corrente Π formt di tre gruppi (ABC), (D) ed (E). L unico gruppo che potree rffinrsi è il primo dei tre. Si h: x

22 CAPITOLO 2. ANALISI LESSICALE 37 move(a ) = B move(b ) = B move(c ) = B move(a ) = C move(b ) = D move(c ) = C A questo stdio lo stto D non f più prte dello stesso gruppo di C nell prtizione corrente (D è stto isolto l psso precedente) e quindi simo costretti d isolre nche B che si differenzi dgli ltri per il simolo. Π new divent formt d 4 gruppi: (AC), (B), (D) ed (E). L ultimo psso di rffinmento provimo frlo sul gruppo (AC). Sppimo già che il simolo non discrimin. Con il simolo vedimo che entrmi gli stti del gruppo finiscono nello stesso stto C. Pertnto possono rimnere nello stesso gruppo. In questo psso non sono stte ftte modifiche i gruppi e quindi finimo l iterzione. Doimo or scegliere i rppresentnti. L unic scelt ver è per il gruppo (AC) (per gli ltri il rppresentnte può essere solo l unico stto che li form). Sceglimo A. L utom che viene fuori dopo l costruzione dei pssi (4) e (5) dell lgoritmo è disegnto in Figur Si noti che è lo stesso utom di Figur 2.6 con i nomi degli stti cmiti. strt A B D E Figur 2.11: L utom di Figur 2.9 minimizzto. 2.6 Genertori utomtici di nlizztori lessicli Gli lgoritmi che imo studito nelle sezioni precedenti possono essere cominti insieme in modo d ottenere, prtire dll definizione di un

23 CAPITOLO 2. ANALISI LESSICALE 38 certo numero di pttern, un riconoscitore dei pttern stessi. Questo processo può vvenire utomticmente ed esistono dei tool softwre, i genertori di nlizztori lessicli, che prendono un specific dei pttern e restituiscono un progrmm che è l nlizztore lessicle per i pttern dti. In quest sezione schemtizzeremo il funzionmento di un genertore di nlizztori lessicli usndo gli lgoritmi e le costruzioni visti nelle sezioni precedenti Dlle espressioni regolri gli utomi deterministici Le espressioni regolri sono il linguggio più usto per specificre i pttern. Ciò è dovuto ll loro potenz espressiv, l ftto che sono un linguggio formle, m soprttutto l ftto che d un insieme di espressioni regolri si può utomticmente generre un utom che riconosce, seguendo un prticolre procedimento, i pttern specificti. Il primo psso dell costruzione di un nlizztore lessicle consiste nel trsformre le espressioni regolri che definiscono i vri pttern in utomi. Quell che vedimo desso è un costruzione (dett di Thompson) che, dt un qulunque espressione regolre r su un lfeto Σ, gener un NFA che riconosce il linguggio denotto d r e h certe crtteristiche strutturli. Si r un espressione regolre su un certo lfeto Σ. Costruimo induttivmente un NFA N che riconosc L(r). Per prim cos nlizzimo l struttur sintttic dell espressione regolre che risult dll su definizione induttiv (vedi Definizione ). Un volt individut l struttur (un lero di derivzione) comincimo costruire un NFA per ogni simolo di se, cioè o un simolo di Σ (prte 1 e 2 di Definizione ) nel modo seguente: strt i f strt i x f I precedenti sono i mttoni se dell nostr costruzione induttiv. Or, costruimo induttivmente un NFA per un espressione regolre qulsisi prtendo dgli NFA ssociti lle sue sottoespressioni che supponimo di vere per ipotesi induttiv. Nel fr questo usimo l ccorgimento di costruire gli NFA intermedi in modo tle che: 1) ino un solo stto finle, 2) non ino nessun trnsizione entrnte nello stto inizile e 3) non ino nessun trnsizione uscente dllo stto finle (si noti che gli utomi di se hnno tutte queste crtteristiche). Le seguenti sono le regole per i pssi induttivi:

24 CAPITOLO 2. ANALISI LESSICALE Supponimo, per ipotesi induttiv, di ver ottenuto due NFA N(s) ed N(r) che riconoscono il linguggio di s e r e con le crtteristiche volute. Un NFA che riconosce il linguggio L(s r) e h le crtteristiche richieste è il seguente N(s) strt i f N(r) Nell figur i è un nuovo stto inizile ed f un nuovo stto finle. Gli ovli rppresentno gli utomi N(s) ed N(r) che supponimo di vere per ipotesi induttiv e i cerchi ll interno degli ovli rppresentno lo stto inizile (quello sinistr) e lo stto finle (quello destr). Si noti che l doppi cerchitur è stt elimint dgli stti finli di N(s) ed N(r) e che l unico stto finle di N(s r) è f. Stess cos è stt ftt per gli stti inizili. In questo modo il nuovo stto inizile non h trnsizioni entrnti e il nuovo stto finle non h trnsizioni uscenti. 2. Supponimo N(s) ed N(r) come sopr. Un NFA con le crtteristiche richieste che ccett L(sr) = L(s)L(r) è il seguente: strt i N(s) N(r) f Lo stto finle di N(s) viene ftto coincidere con lo stto inizile di N(r) e lo stto risultnte è un semplice stto intermedio, né inizile né finle, di N(sr). Lo stto inizile di quest ultimo è lo stesso di N(s) e lo stto finle è lo stesso di N(r). 3. Si N(s) un NFA che ccett L(s). Costruimo, per s, il seguente NFA che ccett L(s)

25 CAPITOLO 2. ANALISI LESSICALE 40 strt i N(s) f 4. Infine, l ultimo cso, cioè quello di un espressione regolre tr prentesi (s), viene trttto semplicemente prendendo lo stesso N(s) come NFA che ccett nche il linguggio di (s). Esempio 9 Applichimo l costruzione ppen vist prtendo dll espressione regolre r = ( ). Innnzitutto individuimo l struttur sintttic di r seguendo le regole di precedenz che imo stilito in Sezione L lero che rppresent tle struttur è rppresentto in Figur 2.12 r 11 r 9 r 10 r 7 r 8 r 5 r 6 r 4 r 3 ) r 1 r 2 Figur 2.12: Struttur sintttic di ( ). Aimo dto un nome d ogni nodo intermedio e il nodo chimto r 11, l rdice dell lero, corrisponde ll nostr r. Per ogni nodo interno,

26 CAPITOLO 2. ANALISI LESSICALE 41 seguendo l definizione dell costruzione di Thompson, costruimo un NFA che riconosce il linguggio denotto dll corrispondente sottoespressione regolre. Per questo processo prtimo dlle foglie dell lero e procedimo verso l lto ndndo costruire gli utomi per le espressioni r i utilizzndo quelli precedentemente costruiti per le loro sottoespressioni (ssocite i nodi figli). Comincimo considerre i nodi r 1 ed r 2. Per questi costruimo i seguenti utomi: strt 2 3 strt 4 5 Or cominimo N(r 1 ) ed N(r 2 ) per ottenere N(r 3 ) = N(r 1 r 2 ) = N( ): strt L NFA per (r 3 ) è lo stesso, imo detto, di quello di r 3. ndimo vnti costruire N(r 5 ) = N((r 3 ) ): Quindi strt L NFA per r 6 è semplicemente: strt 7 8

27 CAPITOLO 2. ANALISI LESSICALE 42 L utom per r 7 é: strt Al termine dell procedur otterremo l utom in Figur Dlle definizioni dei pttern l riconoscimento dei token Un nlizztore lessicle deve riconoscere i lexeme che si susseguono nel progrmm sorgente individundo quelli che fnno mtch con i pttern che sono stti specificti per i token del linguggio. Quest operzione si chim pttern mtching e può essere relizzt in mnier semplice utilizzndo le nozioni che imo visto finor. Ponimoci dunque il seguente prolem. Supponimo dt l definizione di un certo numero di pttern p 1 p 2... p n dove, per ogni pttern p i, è specifict nche un sequenz di zioni i d effetture: p 1 1 } p 2 2 } p n n } I pttern p i, in generle, sono espressioni regolri. Ovvimente, per comodità, si permetterà di utilizzre ll interno dei pttern nche dei nomi definiti con un definizione regolre. Un sequenz di pttern e di zioni di questo genere è quello che tipicmente si dà in psto d un genertore utomtico di nlizztori lessicli. Quello che ci si spett è di ottenere un progrmm che legge un sequenz di crtteri e implement un ciclo in cui, d ogni psso, viene individuto nell input il lexeme più lungo che f mtch con uno dei pttern p i. Nel cso che un stess sequenz di crtteri fcci mtch con due pttern contempornemente il progrmm sceglierà il pttern che st più in lto nell definizione (d esempio p 2 st più in lto di p 3 ). Un volt deciso qule pttern p i è stto riconosciuto il progrmm provvederà d effetture le operzioni i d esso ssocite. Ftto questo il progrmm deve continure il ciclo cercndo un ltro pttern prtire dl crttere di input successivo ll ultimo crttere dell ultimo lexeme riconosciuto.

28 CAPITOLO 2. ANALISI LESSICALE 43 Per relizzre questo progrmm isogn opportunmente utilizzre le costruzioni viste. Innnzitutto si noti che un NFA o un DFA, per definizione, riconosce un sol string per volt e non continu, un volt riconosciut un string, cercre l successiv. Inoltre un utom potree fermrsi l primo stto finle che rggiunge non controllndo se, ndndo vnti, potree riconoscere un string più lung. Per ovvire questi prolemi sterà utilizzre in mnier fur gli utomi. Il primo psso per l definizione di un lgoritmo di pttern mtching con le crtteristiche ppen descritte è quello di convertire le espressioni regolri p i (sostituendo opportunmente eventuli nomi introdotti con un definizione regolre) in NFA utilizzndo l costruzione di Thompson (vedi Sezione 2.6.1). Otterremo così n NFA N(p 1 ) N(p 2 )... N(p n ) che riconoscono singolrmente il linguggio ssocito ciscun di ogni pttern. A questo punto costruimo un nuovo NFA (vedi Figur 2.13) con un unico stto inizile ed esttmente n stti finli, uno per ogni pttern. N(p ) 1 N(p ) 2 strt s N(p ) n Figur 2.13: NFA usto per il pttern mtching. Or simulimo il comportmento dell utom in Figur 2.13 sull input corrente fino qundo non rrivimo d uno stto finle (ossi fin qundo non riconoscimo un primo possiile lessem). Il determinismo viene simulto mntenendo, in ogni istnte, un insieme di stti ttuli esttmente come nell costruzione dei sottoinsiemi. Ad esempio, lo stto inizile dell utom è simulto d -closure(s 0 ). Per rppresentre lo stto del progrmm usimo due vriili: un

29 CAPITOLO 2. ANALISI LESSICALE 44 vriile p per mntenere l posizione dell ultimo crttere letto (p è, in genere, un punttore) ed un vriile npttern che memorizz il numero corrispondente ll ultimo pttern riconosciuto. Il vlore dell vriile npttern è i se lo stto finle che imo incontrto è quello dell utom N(p i ) (ricordimo che esiste uno ed un solo stto finle per ogni pttern). Se imo incontrto più stti finli sceglimo quello corrispondente l pttern che st più in lto nell list. Poichè il nostro oiettivo è individure di volt in volt il più lungo lessem che f mtch con un qulche token, continuimo scndire l input prtire dl crttere successivo quello dell ultimo lexeme individuto. Se l utom riconosce un nuovo pttern (v finire in uno o più stti finli) ggiornimo le vriili p ed npttern in mnier consistente L lgoritmo prosegue in questo modo fino che non più possiile fre ltre mosse o perché l input è finito o perché, nell insieme di stti correnti, non può fre più nessun trnsizione. A questo punto il progrmm nnunci che è stto riconosciuto un lexeme corrispondente ll ultimo pttern riconosciuto (che si è mntenuto in npttern) e che tle lexeme è quello che v dl primo crttere dell input corrente fino l crttere puntto d p. Il progrmm pss poi d eseguire le zioni ssocite l pttern riconosciuto (in genere sono delle sequenze di istruzioni scritte nello stesso linguggio di progrmmzione in cui viene generto l nlizztore lessicle) e riprende l scnsione dell input prtire dllo stto inizile dell utom e dl primo crttere successivo l lexeme ppen riconosciuto (il crttere successivo quello puntto d p). Nel cso in cui l utom termini senz vere riconosciuto nessun pttern, l nlizztore lessicle deve segnlre, nei modi previsti, un situzione di errore. Esempio 10 Vedimo un esempio del procedimento ppen descritto. Considerimo l definizione dei seguenti tre pttern (per semplicità di presentzione non ssocimo zioni): } } } Innnzitutto doimo costruire gli NFA reltivi d ognuno e poi metterli tutti insieme in un unico NFA come imo mostrto in Figur Per semplicità semplifichimo l NFA per il terzo pttern (quello risultnte dll costruzione di Thompson contiene più stti ed -trnsizioni) e ottenimo l utom in Figur Provimo d pplicre l lgoritmo di pttern mtching descritto ll string di input. In Figur 2.15 sono mostrti i momenti slienti dell simulzione dell utom e dell lgoritmo di riconoscimento dei pttern.

30 CAPITOLO 2. ANALISI LESSICALE strt Figur 2.14: Un NFA che per il riconoscimento di tre pttern. Lo stto inizile corrisponde ll insieme di stti -closure(0) = }. Leggendo un (l prim dell input) l utom trnsisce nell insieme di stti -closure(move( } )) = 2 3 7} come mostrto in figur. A questo punto ci ccorgimo che 2 è stto finle e che corrisponde l riconoscimento del primo pttern. Come previsto dll lgoritmo ndimo vnti e memorizzimo questo risultto przile, cioè ssegnimo npttern il vlore 1 e fccimo puntre p ll prim dell input (in figur questo è indicto dl p 1 che si trov dopo l lettur dell prim ). Dopo l lettur dell second dell input l utom si trov nell insieme di stti 7}, che non contiene stti finli. Andimo quindi vnti e leggimo il terzo simolo dell input:. A questo punto l utom si trov nell insieme di stti 8} che contiene lo stto finle reltivo l terzo pttern. Come previsto dll lgoritmo ggiornimo i nostri risultti przili e memorizzimo che è stto riconosciuto il pttern l terzo simolo dell input. M ncor doimo ndre vnti fino ll terminzione dell utom. Leggendo il qurto simolo l utom non può fre nessun moss perché dllo stto 8 non ci sono trnsizioni uscenti etichettte con questo simolo. Pertnto l utom termin. L lgoritmo nnunci che il terzo pttern è stto riconosciuto e che il lexeme corrispondente è. Se ci fossero zioni ssocite l terzo pttern, questo sree il momento di eseguirle. Non essendo finito l input, l lgoritmo riprte dllo stto inizile per nlizzre i crtteri che seguono il lexeme riconosciuto. In questo cso l input ncor d nlizzre è solo (l ultimo simolo dell string inizile). Dllo stto inizile rrivimo di nuovo ll insieme di stti 2 4 7} in cui 2 è lo stto finle ssocito l primo pttern. Memorizzimo questo risultto przile ed ndimo vnti.

Linguaggi di Programmazione e Compilatori I Appello del 9/7/2004

Linguaggi di Programmazione e Compilatori I Appello del 9/7/2004 Linguggi di Progrmmzione e Compiltori I Appello del 9/7/ Scrivere in stmptello COGNOME e NOME su ogni foglio consegnto e sul testo, che v consegnto insieme l compito. Not Nel testo le espressioni regolri

Dettagli

Trasduttori a Stati Finiti

Trasduttori a Stati Finiti Trsduttori Stti Finiti Un Trsduttore Stti Finiti Deterministici è definito dll 7-pl - Alfeto di Ingresso (Alfeto terminle) K- Insieme degli stti δ -funzione (przile) di trnsizione

Dettagli

Linguaggi di Programmazione Corso C. Parte n.5 Automi a Stati Finiti. Nicola Fanizzi

Linguaggi di Programmazione Corso C. Parte n.5 Automi a Stati Finiti. Nicola Fanizzi Linguggi di Progrmmzione Corso C Prte n.5 Automi Stti Finiti Nicol Fnizzi (fnizzi@di.uni.it) Diprtimento di Informtic Università degli Studi di Bri Automi Stti Finiti Dto un lfeto X, un utom stti finiti

Dettagli

Esercizi di Informatica Teorica

Esercizi di Informatica Teorica 03-utomi--stti-finiti-0 Esercizi di Informtic Teoric Automi stti finiti Autom stti finiti (ASF) richimi utom stti finiti ASF = dove Σ = {σ, σ 2,, σ n } è un lfeto (finito) di input K= {, q,,

Dettagli

Corso di Automi e Linguaggi Formali Gennaio- Marzo 2003

Corso di Automi e Linguaggi Formali Gennaio- Marzo 2003 Corso di Automi e Linguggi Formli Gennio- Mrzo 2003 Docente: Frncesc Rossi, frossi@mth.unipd.it Corso di Automi e Linguggi Formli Gennio-Mrzo 2002 p.1/37 Dti del corso 5 crediti circ 40 ore in ul Orrio:

Dettagli

Strumenti per la Definizione della Sintassi dei Linguaggi di Programmazione 1

Strumenti per la Definizione della Sintassi dei Linguaggi di Programmazione 1 Strumenti per l Definizione dell Sintssi dei Linguggi di Progrmmzione 1 Docente: Luc Tesei Scuol di Scienze e Tecnologie Università di Cmerino Anno Accdemico 2012/2013 1 Queste note intendono coprire gli

Dettagli

Automi a stati finiti

Automi a stati finiti Automi stti finiti Diprtimento di Elettronic e Informzione Politecnico di Milno 17 mrzo 2017 Modelli operzionli Un semplice modello di clcolo I modelli operzionli di clcolo sono definiti come mcchine strtte

Dettagli

stringa vuota = oppure

stringa vuota = oppure Alfeto = insieme di simoli (crtteri scii) String insieme finito di simoli di un lfeto e l string vuot (tlvolt denott d ) s rppresent l lunghezz di un string. Linguggio un insieme di stringhe, l insieme

Dettagli

Il calcolo letterale

Il calcolo letterale Progetto Mtemtic in Rete Il clcolo letterle Finor imo studito gli insiemi numerici (espressioni numeriche). Ν, Ζ, Q, R ed operto con numeri In mtemtic però è molto importnte sper operre con le lettere

Dettagli

Esercizi di Informatica Teorica Pumping lemma e proprietà di

Esercizi di Informatica Teorica Pumping lemma e proprietà di 04-pumping-lemm-regolri-01 Esercizi di Informtic Teoric Pumping lemm e proprietà di chiusur per i linguggi regolri 1 Pumping lemm per linguggi regolri richimi pumping lemm: se L è un linguggio regolre

Dettagli

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1 curdi Luc Cio e Wlter Didimo Esercizi di Informtic teoric - Luc Cio e Wlter Didimo 1 utomi stti finiti utomi stti finiti non deterministici utomi e grmmtiche regolri notzioni sul livello degli esercizi:(*)fcile,

Dettagli

Linguaggi formali e compilazione

Linguaggi formali e compilazione non Linguggi formli e compilzione Corso di Lure in Informtic A.A. 2014/2015 Linguggi formli e compilzione non non Contenuti di quest prte del corso Descriveremo gli utomi stti finiti, importnti strumenti

Dettagli

Automi e Linguaggi Formali

Automi e Linguaggi Formali Propriet dei linguggi liberi d contesto utomi e Linguggi Formli Propriet dei linguggi liberi d contesto emplificzione - CFG possono essere semplificte - e L e CFL llor l su grmmtic h un form specile Pumping

Dettagli

Il calcolo letterale

Il calcolo letterale Appunti di Mtemtic Il clcolo letterle Finor imo studito gli insiemi numerici espressioni numeriche. Ν, Ζ, Q, R ed operto con numeri In mtemtic però è molto importnte sper operre con le lettere e sviluppre

Dettagli

ESERCIZIO DI ASD DEL 27 APRILE 2009

ESERCIZIO DI ASD DEL 27 APRILE 2009 ESERCIZIO DI ASD DEL 27 APRILE 2009 Dimetro Algoritmi. Ricordimo che un grfo non orientto, ciclico e connesso è un lero. Un lero può essere pensto come lero rdicto un volt che si si fissto un nodo come

Dettagli

ESERCITAZIONE I. Linguaggi Regolari

ESERCITAZIONE I. Linguaggi Regolari ESERCITAZIONE I Linguggi Regolri 2 INTRODUZIONE TIPI DI TRASFORMAZIONI ASFD ASFND ER GR Il percorso di trsformzioni in grigio srà il primo d essere nlizzto, mentre il rosso verrà trttto in seguito. Il

Dettagli

a cura di Luca Cabibbo e Walter Didimo

a cura di Luca Cabibbo e Walter Didimo cur di Luc Cio e Wlter Didimo Esercizi di Informtic teoric - Luc Cio e Wlter Didimo 1 pumping lemm proprietà di chiusur dei linguggio regolri notzioni sul livello degli esercizi: (*) fcile, (**) non difficile

Dettagli

Non Determinismo. Dipartimento di Elettronica e Informazione Politecnico di Milano. 21 marzo 2017

Non Determinismo. Dipartimento di Elettronica e Informazione Politecnico di Milano. 21 marzo 2017 Non Determinismo Diprtimento di Elettronic e Informzione Politecnico di Milno 21 mrzo 2017 Modelli operzionli non deterministici Modelli deterministici vs. modelli non deterministici Solitmente, un lgoritmo

Dettagli

Esercizi. q a b s s Tabella delle transizioni di D 0

Esercizi. q a b s s Tabella delle transizioni di D 0 Esercizi E1. Considerimo l AFD D 0 su Σ = {, } l cui tell delle trnsizioni è qui di seguito riportt. q s s 1 1 2 3 2 2 3 3 3 3 Tell delle trnsizioni di D 0 Lo stto di prtenz di D 0 è s mentre gli stti

Dettagli

CORSO ZERO DI MATEMATICA

CORSO ZERO DI MATEMATICA UNIVERSITÀ DEGLI STUDI DI PALERMO FACOLTÀ DI ARCHITETTURA CORSO ZERO DI MATEMATICA ESPONENZIALI E LOGARITMI Dr. Ersmo Modic ersmo@glois.it www.glois.it POTENZA CON ESPONENTE REALE Definizione: Dti un numero

Dettagli

Integrale Improprio. f(x) dx =: Osserviamo che questa definizione ha senso dal momento che per ogni y è ben definito l integrale b

Integrale Improprio. f(x) dx =: Osserviamo che questa definizione ha senso dal momento che per ogni y è ben definito l integrale b Integrle Improprio In queste lezioni riprendimo l teori dell integrzione in un vribile, l ide è di estendere l integrle definito nche in csi in cui l funzione integrnd o l intervllo di integrzione non

Dettagli

POTENZA CON ESPONENTE REALE

POTENZA CON ESPONENTE REALE PRECORSO DI MATEMATICA VIII Lezione ESPONENZIALI E LOGARITMI E. Modic mtemtic@blogscuol.it www.mtemtic.blogscuol.it POTENZA CON ESPONENTE REALE Definizione: Dti un numero rele > 0 ed un numero rele qulunque,

Dettagli

SUGLI INSIEMI. 1.Insiemi e operazioni su di essi

SUGLI INSIEMI. 1.Insiemi e operazioni su di essi SUGLI INSIEMI 1.Insiemi e operzioni su di essi Il concetto di insieme è primitivo ed è sinonimo di clsse, totlità. Si A un insieme di elementi qulunque. Per indicre che è un elemento di A scriveremo A.

Dettagli

stringhe sull alfabeto Σ in cui a a b si alternano, iniziando da a e terminando con b.

stringhe sull alfabeto Σ in cui a a b si alternano, iniziando da a e terminando con b. Corso di Linguggi Formli e Automi Anno Accdemico 2014 2015 Prof. Giovnni Pighizzini Esercizi Vri Esercizio 1 Si Σ = {, }. Costruite un utom che ccetti il linguggio costituito d tutte le stringhe sull lfeto

Dettagli

Anno 5. Applicazione del calcolo degli integrali definiti

Anno 5. Applicazione del calcolo degli integrali definiti Anno 5 Appliczione del clcolo degli integrli definiti 1 Introduzione In quest lezione vedremo come pplicre il clcolo dell integrle definito per determinre le ree di prticolri figure pine, i volumi dei

Dettagli

, x 2. , x 3. è un equazione nella quale le incognite appaiono solo con esponente 1, ossia del tipo:

, x 2. , x 3. è un equazione nella quale le incognite appaiono solo con esponente 1, ossia del tipo: Sistemi lineri Un equzione linere nelle n incognite x 1, x 2, x,, x n è un equzione nell qule le incognite ppiono solo con esponente 1, ossi del tipo: 1 x 1 + 2 x 2 + x +!+ n x n = b con 1, 2,,, n numeri

Dettagli

SPAZI VETTORIALI. 1. Spazi e sottospazi vettoriali

SPAZI VETTORIALI. 1. Spazi e sottospazi vettoriali SPAZI VETTORIALI 1. Spzi e sottospzi vettorili Definizione: Dto un insieme V non vuoto e un corpo K di sostegno si dice che V è un K-spzio vettorile o uno spzio vettorile su K se sono definite un operzione

Dettagli

George Boole ( )

George Boole ( ) Mtemtic Alger di Boole Cpitolo 5 Ivn Zivko George Boole (1815-1864) Mtemtico inglese del dicinnovesimo secolo, ffrontò in modo originle prolemi di logic. Le sue teorie trovno forte ppliczione un secolo

Dettagli

Pattern Matching Mediante Automi

Pattern Matching Mediante Automi Pttern Mtching Medinte utomi ho-corsick Espressioni Regolri dde Simonett Cmroto lessio Tni lice dde, Cmroto, Tni Pttern Mtching Medinte utomi 13/11/2007 1 Sommrio Introduzione Nozioni Preliminri utomi

Dettagli

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1 curdi Luc Cio e Wlter Didimo Esercizi di Informtic teoric - Luc Cio e Wlter Didimo 1 pumping lemm proprietà di chiusur dei linguggio regolri notzioni sul livello degli esercizi:(*)fcile, (**) non difficile

Dettagli

Backus Naur Form. Linguaggio di programmazione. Paolo Bison

Backus Naur Form. Linguaggio di programmazione. Paolo Bison Bckus Nur Form Linguggio di progrmmzione Polo Bison Fondmenti di Informtic.. 2006/07 Università di Pdov strumento linguistico per scrivere un sequenz di istruzioni (progrmm) che definiscono un computzione

Dettagli

APPENDICE B. Sintesi Modulare (Modular Synthesis)

APPENDICE B. Sintesi Modulare (Modular Synthesis) APPENDICE B Sintesi Modulre (Modulr Synthesis) Nell modellizzzione di un impinto complesso, è opportuno costruire il modello trmite modelli componenti di minore complessità, identificti nell impinto fisico.

Dettagli

Funzioni razionali fratte

Funzioni razionali fratte Funzioni rzionli frtte Per illustrre l medizione che AlNuSet fornisce per lo studio delle funzioni rzionli frtte, inizimo con il considerre l funzione f ( ) l vrire del prmetro. L su rppresentzione nell

Dettagli

{ 1, 2,3, 4,5,6,7,8,9,10,11,12, }

{ 1, 2,3, 4,5,6,7,8,9,10,11,12, } Lezione 01 Aritmetic Pgin 1 di 1 I numeri nturli I numeri nturli sono: 0,1,,,4,5,6,7,8,,10,11,1, L insieme dei numeri nturli viene indicto col simbolo. } { 0,1,,, 4,5,6,7,8,,10,11,1, } L insieme dei numeri

Dettagli

Capitolo 2. Il problema del calcolo delle aree

Capitolo 2. Il problema del calcolo delle aree Cpitolo 2 Il prolem del clcolo delle ree Introduzione Il prolem del clcolo delle ree nsce più di 2000 nni f qundo i greci tentrono di clcolre le ree con un metodo detto di esustione. Tle metodo può essere

Dettagli

11. Rango di una matrice.

11. Rango di una matrice. Rngo di un mtrice Considerimo un mtrice di tipo m n d elementi reli rppresentt nel modo seguente: A = (m-) m (m-) m (m-) m (m-) m (n-) (n-) (n-) (m-),(n-) m(n-) n n n (m-)n mn Per ogni i =,,,, (m-), m,

Dettagli

corrispondenza dal piano in sé, che ad ogni punto P del piano fa corrispondere il punto P' in

corrispondenza dal piano in sé, che ad ogni punto P del piano fa corrispondere il punto P' in Cpitolo 5 Le omotetie 5. Richimi di teori Definizione Sino fissti un punto C del pino ed un numero rele. Si chim omoteti di centro C e rpporto ( che si indic con il simolo O, ) l corrispondenz dl pino

Dettagli

U.D. N 13 Le inequazioni ad una incognita

U.D. N 13 Le inequazioni ad una incognita Unità Didttic N Le inequzioni d un incognit 5 U.D. N Le inequzioni d un incognit 0) Proprietà delle disuguglinze fr numeri reli reltivi 0) Inequzioni e loro proprietà 0) Inequzioni rzionli intere di primo

Dettagli

RAPPRESENTAZIONE GRAFICA DELLA PARABOLA a ( ) { } f con, è la parabola di equazione y = ax + bx + c. Vogliamo disegnarla. 2

RAPPRESENTAZIONE GRAFICA DELLA PARABOLA a ( ) { } f con, è la parabola di equazione y = ax + bx + c. Vogliamo disegnarla. 2 APPENDICE 1 AL CAPITOLO 3: RAPPRESENTAZIONE GRAFICA DELLA PARABOLA Per 0 l insieme,y / y = + + c, grfico dell funzione f = + + c { } f con, è l prol di equzione y = + + c Voglimo disegnrl non è difficile

Dettagli

Valutazione di una espressione. Espressioni. Espressioni semplici: variabili. Espressioni semplici: costanti

Valutazione di una espressione. Espressioni. Espressioni semplici: variabili. Espressioni semplici: costanti Espressioni Vlutzione di un espressione Ogni espressione E h: Un espressione E del linguggio C può essere definit formlmente come segue (definizione induttiv): E è un espressione semplice. Si Op n un opertore

Dettagli

Capitolo 6. Integrali di funzioni di una variabile

Capitolo 6. Integrali di funzioni di una variabile Cpitolo 6 Integrli di funzioni di un vribile Ci si pone il problem del riuscire misurre l re di figure il cui contorno non è costituit d segmenti. 6. L integrle definito Si f : [, b] R R un funzione limitt

Dettagli

ITIS GALILEO FERRARIS

ITIS GALILEO FERRARIS ITIS GLILEO FERRRIS Sn Giovnni Vldrno rezzo lunno: Giusti ndre Clsse: IV specilizzzione elettronic e telecomuniczioni L dimostrzione è nelle pgine che seguono Il prolem di Dicemre 3 Si consideri un generic

Dettagli

Determinanti e caratteristica di una matrice (M.S. Bernabei & H. Thaler

Determinanti e caratteristica di una matrice (M.S. Bernabei & H. Thaler Determinnti e crtteristic di un mtrice (M.S. Bernbei & H. Thler Determinnte Il determinnte può essere definito solmente nel cso di mtrici qudrte Per un mtrice qudrt 11 (del primo ordine) il determinnte

Dettagli

Definizione (primitiva, integrale indefinito). Data una funzione f diremo che una funzione F è una primitiva di f se

Definizione (primitiva, integrale indefinito). Data una funzione f diremo che una funzione F è una primitiva di f se Cpitolo 6 Integrli L opertore derivt D ssoci d un funzione f l su derivt: Df f 0 Ci ciedimo se è possiile invertire quest operzione, vle dire trovre un funzione l cui derivt si un funzione ssegnt Definizione

Dettagli

Appunti di Matematica 1 - Numeri razionali - I numeri razionali. Le frazioni

Appunti di Matematica 1 - Numeri razionali - I numeri razionali. Le frazioni Appunti di Mtemtic I numeri rzionli Le frzioni Definimo un frzione come il rpporto di due numeri interi cioè n n, d Ζ con d 0 d in cui il numero scritto sopr ll line di frzione viene chimto numertore e

Dettagli

5.4 Il teorema fondamentale del calcolo integrale

5.4 Il teorema fondamentale del calcolo integrale Esercizi 5.3. Si f : R R un funzione continu, e supponimo che f bbi sintoti obliqui per ±. Provre che f è uniformemente continu in R.. Esibire un funzione f : R R limitt e di clsse C, m non uniformemente

Dettagli

Laurea triennale in Scienze della Natura a.a. 2009/2010. Regole di Calcolo

Laurea triennale in Scienze della Natura a.a. 2009/2010. Regole di Calcolo Lure triennle in Scienze dell Ntur.. 2009/200 Regole di Clcolo In queste note esminimo lcune conseguenze degli ssiomi reltivi lle operzioni e ll ordinmento nell insieme R dei numeri reli. L obiettivo principle

Dettagli

Equazioni. Definizioni e concetti generali. Incognita: Lettera (di solito X) alla quale e possibile sostituire dei valori numerici

Equazioni. Definizioni e concetti generali. Incognita: Lettera (di solito X) alla quale e possibile sostituire dei valori numerici Equzioni Prerequisiti Scomposizioni polinomili Clcolo del M.C.D. e del m.c.m. tr polinomi P(X) = 0, con P(X) polinomio di grdo qulsisi Definizioni e concetti generli Incognit: Letter (di solito X) ll qule

Dettagli

11. Rango di una matrice.

11. Rango di una matrice. Rngo di un mtrice Considerimo un mtrice di tipo m n d elementi reli rppresentt nel modo seguente: A = (m-) m (m-) m (m-) m (m-) m (n-) (n-) (n-) (m-),(n-) m(n-) n n n (m-)n mn Per ogni i =,,,, (m-), m,

Dettagli

B8. Equazioni di secondo grado

B8. Equazioni di secondo grado B8. Equzioni di secondo grdo B8.1 Legge di nnullmento del prodotto Spendo che b0 si può dedurre che 0 oppure b0. Quest è l legge di nnullmento del prodotto. Pertnto spendo che (-1) (+)0 llor dovrà vlere

Dettagli

Aniello Murano NP- Completezza (seconda parte)

Aniello Murano NP- Completezza (seconda parte) Aniello Murno NP- Completezz (second prte) 15 Lezione n. Prole chive: Np-completezz Corso di Lure: Informtic Codice: Emil Docente: murno@ n.infn.it A.A. 2008-2009 Definizione di NP- COMPLETEZZA Si ricordi

Dettagli

2 x = 64 (1) L esponente (x) a cui elevare la base (2) per ottenere il numero 64 è detto logaritmo (logaritmo in base 2 di 64), indicato così:

2 x = 64 (1) L esponente (x) a cui elevare la base (2) per ottenere il numero 64 è detto logaritmo (logaritmo in base 2 di 64), indicato così: Considerimo il seguente problem: si vuole trovre il numero rele tle che: = () L esponente () cui elevre l bse () per ottenere il numero è detto ritmo (ritmo in bse di ), indicto così: In prticolre in questo

Dettagli

Integrali impropri in R

Integrali impropri in R Integrli impropri in Flvino Bttelli Diprtimento di Scienze Mtemtiche Università Politecnic delle Mrche Ancon Integrli impropri Indichimo con = {1, 2, 3,...} l insieme dei numeri nturli, con 0 = {0, 1,

Dettagli

La parabola LA PARABOLA È IL LUOGO DEI PUNTI DEL PIANO EQUIDI- STANTI DA UN PUNTO DETTO FUOCO E DA UNA RETTA CHE NON LO CONTIENE DETTA DIRETTRICE.

La parabola LA PARABOLA È IL LUOGO DEI PUNTI DEL PIANO EQUIDI- STANTI DA UN PUNTO DETTO FUOCO E DA UNA RETTA CHE NON LO CONTIENE DETTA DIRETTRICE. L prol In figur è trccito il grfico di un prol con sse di simmetri verticle. Si vede suito dl grfico ce: l curv è simmetric rispetto l suo sse di simmetri il suo punto più in sso è il vertice il vertice

Dettagli

3. Funzioni iniettive, suriettive e biiettive (Ref p.14)

3. Funzioni iniettive, suriettive e biiettive (Ref p.14) . Funzioni iniettive, suriettive e iiettive (Ref p.4) Dll definizione di funzione si ricv che, not un funzione y f( ), comunque preso un vlore di pprtenente l dominio di f( ) esiste un solo vlore di y

Dettagli

Richiami sui vettori. A.1 Segmenti orientati e vettori

Richiami sui vettori. A.1 Segmenti orientati e vettori A Richimi sui vettori Richimimo lcune definizioni e proprietà dei vettori, senz ssolutmente pretendere di drne un trttzione mtemticmente complet. Lvoreremo sempre in uno spzio crtesino (euclideo) tre dimensioni,

Dettagli

n volte m volte n+m volte n volte n volte n volte } = a n + n + n = a n m

n volte m volte n+m volte n volte n volte n volte } = a n + n + n = a n m Corso di Potenzimento.. 009/010 1 Potenze e Rdicli Dto un numero positivo, negtivo o nullo e un numero intero positivo n, si definisce potenz di se ed esponente n il prodotto di n fttori tutti uguli d

Dettagli

Capitolo 2: Automi a stati finiti

Capitolo 2: Automi a stati finiti Cpitolo 2: Automi stti finiti 1 Sistemi stti Voglimo introdurre un sistem che modelli un semplice meccnismo di interzione con un sctol ner, dott di un ingresso e di un uscit. Supponimo che tle sistem poss

Dettagli

b a 2. Il candidato spieghi, avvalendosi di un esempio, il teorema del valor medio.

b a 2. Il candidato spieghi, avvalendosi di un esempio, il teorema del valor medio. Domnde preprzione terz prov. Considert, come esempio, l funzione nell intervllo [,], il cndidto illustri il concetto di integrle definito. INTEGRALE DEFINITO, prendendo in esme un generic funzione f()

Dettagli

Le equazioni di grado superiore al secondo

Le equazioni di grado superiore al secondo Le equzioni di grdo superiore l secondo ITIS Feltrinelli nno scolstico 007-008 R. Folgieri 007-008 1 Teorem fondmentle dell lger Ogni equzione lgeric di grdo n h sempre n soluzioni, che possono essere

Dettagli

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1 curdi Luc Cio e Wlter Didimo Esercizi di Informtic teoric - Luc Cio e Wlter Didimo 1 espressioni regolri e grmmtiche regolri proprietà decidiili dei linguggi regolri teorem di Myhill-Nerode notzioni sul

Dettagli

Lezione 1 Insiemi e numeri

Lezione 1 Insiemi e numeri Lezione Insiemi e numeri. Nozione di insieme, sottoinsieme, pprtenenz Con l prol insieme intendimo un collezione di oggetti detti suoi elementi. Ogni insieme è denotto con lettere miuscole e i suoi elementi

Dettagli

1 Integrale delle funzioni a scala

1 Integrale delle funzioni a scala INTEGRALE DELLE FUNZIONI DI UNA VARIABILE Teori di Riemnn 1 Integrle delle funzioni scl (1.1) Definizione Si dice suddivisione di un intervllo chiuso e limitto [, b] un sottoinsieme {,..., n } di [, b]

Dettagli

{ 3 x y=4. { x=2. Sistemi di equazioni

{ 3 x y=4. { x=2. Sistemi di equazioni Sistemi di equzioni Definizione Un sistem è un insieme di equzioni che devono essere verificte contempornemente, cioè devono vere contempornemente le stesse soluzioni. Definimo grdo di un sistem il prodotto

Dettagli

Unità 3 Metodi particolari per il calcolo di reti

Unità 3 Metodi particolari per il calcolo di reti Unità 3 Metodi prticolri per il clcolo di reti 1 Cos c è nell unità Metodi prticolri per il clcolo di reti con un solo genertore Prtitore di tensione Prtitore di corrente Metodi di clcolo di reti con più

Dettagli

fattibile con le tecniche elementari che imparerai in seguito. Ad esempio il polinomio

fattibile con le tecniche elementari che imparerai in seguito. Ad esempio il polinomio Scomposizione di un polinomio in fttori Scomporre in fttori primi un polinomio signific esprimerlo come il prodotto di due più polinomi non più scomponibili Ad esempio 9 = ( 3) fttore 1 ( + 3) fttore +

Dettagli

Anno 2. Potenze di un radicale e razionalizzazione

Anno 2. Potenze di un radicale e razionalizzazione Anno Potenze di un rdicle e rzionlizzzione Introduzione In quest lezione impreri utilizzre le ultime due tipologie di operzioni sui rdicli, cioè l potenz di un rdicle e l rdice di un rdicle. Successivmente

Dettagli

Prova scritta del 28 febbraio Risultati

Prova scritta del 28 febbraio Risultati LINGUGGI E COMPILTORI COMPILTORI Prov scritt del 28 febbrio 2011 Risultti MRTINELLI 18 D EPIFNIO 20 BOINO 24 DELÌU 27 VINO 27 PIETRELLI 23 NDREOCCI 30 DI SCHINO 20 ROMEO 24 MERCURI 27 NICOLIELLO 21 HIB

Dettagli

Formalismi per la descrizione dei linguaggi

Formalismi per la descrizione dei linguaggi Formlismi per l descrizione dei linguggi Due componenti: tecniche ingegneristiche per costruire mcchine e softwre teori rigurdnte i modelli sottostnti (mtemtici, linguistici, iologici, fisici, etc). Nel

Dettagli

Integrali dipendenti da un parametro e derivazione sotto il segno di integrale.

Integrali dipendenti da un parametro e derivazione sotto il segno di integrale. 1 Integrli dipendenti d un prmetro e derivzione sotto il segno di integrle. Considerimo l funzione f(x, t) : A [, b] R definit nel rettngolo A [, b], essendo A un sottoinsieme perto di R e [, b] un intervllo

Dettagli

1 Espressioni polinomiali

1 Espressioni polinomiali 1 Espressioni polinomili Un monomio è un espressione letterle in un vribile x che contiene un potenz inter (non negtiv, cioè mggiori o uguli zero) di x moltiplict per un numero rele: x n AD ESEMPIO: sono

Dettagli

Anno 1. Numeri reali: proprietà e applicazioni di uso comune

Anno 1. Numeri reali: proprietà e applicazioni di uso comune Anno Numeri reli: proprietà e ppliczioni di uso comune Introduzione L insieme dei numeri rzionli è composto d numeri che si ottengono dl rpporto tr due numeri interi. Tle rpporto, o frzione, è sempre ssociile

Dettagli

3. 1. Capitolo 4. Reti logiche. Logica e Reti logiche. Il modello strutturale delle reti logiche. 4.1 Funzioni, espressioni e schemi logici

3. 1. Capitolo 4. Reti logiche. Logica e Reti logiche. Il modello strutturale delle reti logiche. 4.1 Funzioni, espressioni e schemi logici Cpitolo 4 Reti logiche 4 - Funzioni, espressioni e schemi logici 42 - Alger di commutzione 43 - Fmiglie logiche 4 Funzioni, espressioni e schemi logici Tutti gli uomini sono mortli 2 Socrte è un uomo Logic

Dettagli

Esercizi di Informatica Teorica

Esercizi di Informatica Teorica 6-myhill-nerode- Esercizi di Informtic Teoric Linguggi regolri: espressioni regolri e grmmtiche, proprietà decidiili e teorem di Myhill-Nerode Teorem di Myhill-Nerode richimi teorem si L un linguggio sull

Dettagli

UNITA 13. GLI ESPONENZIALI

UNITA 13. GLI ESPONENZIALI UNITA. GLI ESPONENZIALI. Le potenze con esponente intero, rzionle e rele.. Le proprietà delle potenze.. Equzioni esponenzili che si riconducono ll stess bse. 4. L funzione esponenzile. 5. Il grfico dell

Dettagli

16 Stadio amplificatore a transistore

16 Stadio amplificatore a transistore 16 Stdio mplifictore trnsistore Si consideri lo schem di Figur 16.1 che riport ( meno dei circuiti di polrizzzione) uno stdio mplifictore relizzto medinte un trnsistore bipolre nell configurzione d emettitore

Dettagli

Integrali impropri di funzioni di una variabile

Integrali impropri di funzioni di una variabile Integrli impropri di funzioni di un vribile. Le funzioni continue Considerimo nel seguito un delle piú importnti ppliczioni del teorem di uniforme continuitá delle funzioni continue su intervlli chiusi

Dettagli

1 Lavoro sperimentale (di Claudia Sortino)

1 Lavoro sperimentale (di Claudia Sortino) 1 Lvoro sperimentle (di Cludi Sortino) Prtendo d un nlisi epistemologic del prolem, ho preprto un test che ho successivmente proposto due quinte clssi di un istituto industrile. QUESTIONARIO SULL INTEGRAZIONE

Dettagli

Strumenti Matematici per la Fisica

Strumenti Matematici per la Fisica Strumenti Mtemtici per l Fisic Strumenti Mtemtici per l Fisic Approssimzioni Notzione scientific (o esponenzile) Ordine di Grndezz Sistem Metrico Decimle Equivlenze Proporzioni e Percentuli Relzioni fr

Dettagli

Erasmo Modica. : K K K

Erasmo Modica.  : K K K L insieme dei numeri reli L INSIEME DEI NUMERI REALI Ersmo Modic helthinsurnce@tin.it www.glois.it Per introdurre l insieme dei numeri reli si hnno disposizione diversi modi. Generlmente l iennio si preferisce

Dettagli

Minimizzazione di automi

Minimizzazione di automi Minimizzzione di utomi Teorem e per ogni stto q di un DFA si re un loo tr q e tutti gli stti equivlenti q, llor l insieme dei lohi distinti rppresent un prtizione dell insieme degli stti. Ne deriv he ogni

Dettagli

LINGUAGGI FORMALI E AUTOMI

LINGUAGGI FORMALI E AUTOMI LINGUAGGI FORMALI E AUTOMI (DISPENSE) ALBERTO BERTONI, BEATRICE PALANO 1 Cpitolo 1: Linguggi e Grmmtiche 1. Monoide delle prole, Linguggi e operzioni tr linguggi In generle, con linguggio si intende l

Dettagli

Capitolo 5. Integrali. 5.1 Integrali di funzioni a gradinata

Capitolo 5. Integrali. 5.1 Integrali di funzioni a gradinata Cpitolo 5 Integrli 5.1 Integrli di funzioni grdint Un concetto molto semplice m di fondmentle importnz per l trttzione dell integrle di Riemnn è quello di divisione di un intervllo [, b]. In sostnz si

Dettagli

Minimi quadrati e problemi di distanza minima

Minimi quadrati e problemi di distanza minima Minimi qudrti e problemi di distnz minim Considerimo un mtrice rettngolre B, con elementi b ij, i 1,..., n, j 1,..., m, con m < n (quindi, più righe che colonne. Voglimo risolvere il sistem linere (1 Bx

Dettagli

Si noti che da questa definizione segue che il punto C è il punto medio del segmento PP'. Figura 1

Si noti che da questa definizione segue che il punto C è il punto medio del segmento PP'. Figura 1 APITOLO 3 LE SIMMETRIE 3. Richimi di teori Definizione. Si dto un punto del pino; si chim simmetri centrle di centro (che si indic con il simbolo s ) l corrispondenz dl pino in sé che d ogni punto P del

Dettagli

ipotenusa cateto adiacente ad α cateto opposto ad α ipotenusa cateto adiacente ad α ipotenusa cateto adiacente ad α

ipotenusa cateto adiacente ad α cateto opposto ad α ipotenusa cateto adiacente ad α ipotenusa cateto adiacente ad α Trigonometri I In quest prim prte dell trigonometri denimo le funzioni trigonometriche seno, coseno e tngente e le loro funzioni inverse. Vedremo nche come utilizzrle nell risoluzione dei tringoli. Comincimo

Dettagli

Turnazione dei mezzi (vehicles-scheduling)

Turnazione dei mezzi (vehicles-scheduling) Turnzione dei mezzi (vehicles-scheduling) Definizione del prolem L fse di turnzione dei mezzi e del personle consiste nel pinificre l utilizzo nel tempo (e nello spzio) dei mezzi e del personle in modo

Dettagli

Informatica Teorica. Proprietà dei linguaggi regolari

Informatica Teorica. Proprietà dei linguaggi regolari Informti Teori Proprietà dei Linguggi Regolri 1 Proprietà dei linguggi regolri pumping lemm hiusur rispetto d operzioni insiemistihe unione, omplementzione, intersezione ontenzione, stell rpporti on espressioni

Dettagli

Prodotto libero di gruppi

Prodotto libero di gruppi Cpitolo 1 Prodotto libero di gruppi Queste dispense sono bste su degli ppunti orniti d lcuni studenti, che ringrzio. Osservzione 1. Abbimo già incontrto Z k e l bbimo presentto come gruppo belino libero

Dettagli

Dimostriamo innanzitutto una limitazione sull altezza degli alberi

Dimostriamo innanzitutto una limitazione sull altezza degli alberi Alberi di ricerc 161 3 5 2 4 8 10 11 2 3 4 5 8 10 11 15 25 30 31 45 47 50 Figur 6.20 Esempio di lbero Inodiinterniconduefiglimntengonoil mssimo del sottolbero sinistro ( ); i nodi interni con tre figli

Dettagli

Sistemi principali di normali ad una varietà giacenti nel suo o 2. Nota di

Sistemi principali di normali ad una varietà giacenti nel suo o 2. Nota di Sistemi principli di normli d un vrietà gicenti nel suo o 2. Not di Giuseppe Vitli Pdov. In un mio recente lvoro *) ho considerto, per ogni superficie il cui j si di 2 k dimensioni (k 2, 3), un sistem

Dettagli

Geometria Analitica Domande, Risposte & Esercizi

Geometria Analitica Domande, Risposte & Esercizi Geometri Anlitic Domnde, Risposte & Esercizi. Dre l definizione di iperole come luogo di punti. L iperole è un luogo di punti, è cioè un insieme di punti del pino le cui distnze d due punti fissi F e F

Dettagli

Matematiche Complementari 25 gennaio 2011

Matematiche Complementari 25 gennaio 2011 Mtemtiche Complementri 5 gennio 011 1. Enuncire e dimostrre il teorem dell divisione con resto nell insieme dei numeri nturli.. Qul è l ultim cifr del numero cso negtivo qule è il resto? 66? Tle numero

Dettagli

Definizione del problema

Definizione del problema Turnzione dei mezzi (vehicles-scheduling) Definizione del prolem L fse di turnzione dei mezzi e del personle consiste nel pinificre l utilizzo nel tempo (e nello spzio) dei mezzi e del personle in modo

Dettagli

Dimostrazione del teorema di Gauss Green nel piano

Dimostrazione del teorema di Gauss Green nel piano imostrzione del teorem di Guss Green nel pino Gli eventuli lettori sono pregti di segnlrmi gli eventuli errori di stmp. Grzie! L.V. Ricordimo che: dominio è l chiusur di un perto; dominio normle regolre

Dettagli

CALCOLO NUMERICO. Francesca Mazzia. Integrazione. Dipartimento Interuniversitario di Matematica. Università di Bari

CALCOLO NUMERICO. Francesca Mazzia. Integrazione. Dipartimento Interuniversitario di Matematica. Università di Bari CALCOLO NUMERICO Frncesc Mzzi Diprtimento Interuniversitrio di Mtemtic Università di Bri Integrzione 1 Integrzione Problem: pprossimre integrli definiti del tipo: f(x)dx, Sceglimo n + 1 punti nell intervllo

Dettagli

U.D. N 15 Funzioni e loro rappresentazione grafica

U.D. N 15 Funzioni e loro rappresentazione grafica 54 Unità Didttic N 5 Funzioni e loro rppresentzione grfic U.D. N 5 Funzioni e loro rppresentzione grfic ) Le coordinte crtesine ) L distnz tr due punti 3) Coordinte del punto medio di un segmento 4) Le

Dettagli

TEST DI MATEMATICA. Funzioni in una, Funzioni in due variabili Integrali Equazioni differenziali. 1) Il valore del limite seguente. e e. e 1.

TEST DI MATEMATICA. Funzioni in una, Funzioni in due variabili Integrali Equazioni differenziali. 1) Il valore del limite seguente. e e. e 1. TEST DI MATEMATICA Funzioni in un, Funzioni in due vriili Integrli Equzioni differenzili ) Il vlore del limite seguente e e e lim è ) Il vlore del limite seguente 5 lim 5 è : ) L derivt prim dell funzione

Dettagli