Espressioni regolari in UNIX p.1/19

Documenti analoghi
Linguaggi di Markup. Violetta Lonati. Dipartimento Scienze dell Informazione Università degli Studi di Milano

Linguaggi di Markup. Violetta Lonati. Dipartimento Scienze dell Informazione Università degli Studi di Milano

NFA per riconoscere numeri decimali

Linguaggi Regolari e Linguaggi Liberi

Lesson #4. Espressioni Regolari. Roberto De Virgilio

Linguistica Computazionale

Primi passi con JFlex

Linguaggi Regolari e Linguaggi Liberi

Linguaggi Regolari e Linguaggi Liberi. Linguaggi Regolari. Determinismo vs Non determinismo. Potere espressivo

Fondamenti di Programmazione: AUTOMI E LINGUAGGI FORMALI Corso di Laurea in MATEMATICA a.a. 2018/2019

L ambiente UNIX/Linux. I filtri Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Linguaggi formali e compilazione

Linguaggi formali e compilazione

Sommario. Espressioni regolari. Equivalenza tra espressioni regolari e DFA. Esercizi problemi di decisione

Espressioni regolari descrivono i linguaggi regolari. Un FA (NFA o DFA) è un metodo per costruire una macchina che riconosce linguaggi regolari.

Espressioni regolari

Lab. di Sistemi Operativi - Lezione in aula - a.a. 2012/2013

Linguistica Computazionale

L ambiente UNIX/Linux. Espressioni regolari e comando find Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd

Automi e Linguaggi Formali

ESPONENZIALI. Diana Giacobbi 22 giugno 2010

Linguaggi e Traduttori: Analisi lessicale

Classi di modelli. RegExp 1

Linguaggi formali e compilazione

Analizzatori Lessicali con JLex. Giuseppe Morelli

Fondamenti d Informatica: stringa e linguaggio. Barbara Re, Phd

Introduzione alle espressioni regolari

Concetti di base sugli automi e sui linguaggi formali

Linguaggi, grammatiche, espressioni regolari

Linguaggi regolari e automi a stati finiti

Espressioni regolari. Espressioni regolari

ASTRAZIONE. Sono indipendenti dalla macchina hardware sottostante ASTRAZIONE 1

Linguaggi formali e compilazione

Linguaggi regolari e automi a stati finiti. Linguaggi regolari e automi a stati finiti

Espressioni regolari in Javascript (RegExp) Le espressioni regolari. Un po di storia. Antonio Lioy - Politecnico di Torino (2009) I-1

Gestione avanzata dei file

Automi a stati finiti

Esempio stringhe palindrome 1

STORIA E CARATTERISTICHE

Linguaggi, grammatiche, espressioni regolari

Introduzione ai Linguaggi Formali

Analisi Lessicale: Linguaggi Regolari

Sistemi Operativi, Secondo Modulo, Canale M Z Riassunto della lezione del 07/03/2016

Sipser, Capitolo 0. Alfabeti, Stringhe, Linguaggi

LINGUAGGI FORMALI. Introduzione

Espressioni regolari. Espressioni regolari

Le istruzioni corrispondono univocamente a quelle macchina, ma vengono espresse tramite nomi simbolici i (parole chiave)

Progamma sintetico. Nozioni preliminari Automi Finiti Macchine di Turing Limiti delle macchine di Turing La tesi di Church-Turing Le classi P e NP

LINGUAGGI DI PROGRAMMAZIONE

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Linguaggi di Programmazione

Lab. di Sistemi Operativi - Esercitazione n 2 - a.a. 2012/2013

Espressioni regolari in Javascript (RegExp)

Capitolo 1: Concetti matematici di base

Espressioni Regolari. Giancarlo Massidda

Linguaggi di Programmazione Corso C. Parte n.2 Introduzione ai Linguaggi Formali. Nicola Fanizzi

Linguaggi e Ambienti di Programmazione

Lab 19 Unix e comandi di base

Espressioni regolari in Javascript (RegExp)

Espressioni Regolari

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.

Automi a stati finiti

Analisi lessicale. Scopi Tecniche Strumenti - Lex. Introduzione ai compilatori - UNINA 1

BREVISSIMA GUIDA AL SISTEMA UNIX / LINUX

Informatica e Laboratorio di Programmazione Automi Alberto Ferrari. Alberto Ferrari Informatica e Laboratorio di Programmazione

Introduzione alla programmazione nella shell di Unix 10 Maggio 2005

Sistemi Operativi, Secondo Modulo, Canale M Z Riassunto della lezione del 13/03/2017

Backus Naur Form. Paolo Bison. Fondamenti di Informatica 1 A.A. 2004/05 Università di Padova. BNF, Paolo Bison, A.A ,

Page 1. Programmazione. Shell e programmazione. File comandi (script) Introduzione alla programmazione nella shell di Unix

Elementi di informatica

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

Fondamenti teorici e programmazione

Sintassi dei linguaggi di programmazione

Octave. Luca Abeni. Informatica Luca Abeni 1 / 21

Descrizione di un linguaggio di programmazione. Sintassi dei linguaggi di programmazione. Descrizione della sintassi linguaggio di programmazione

Elementi di informatica. Programmare in C

Sistemi Operativi, Secondo Modulo, Canale A L Riassunto della lezione del 19/03/2018

Automi e Linguaggi Formali

Introduzione al corso

Iniziare a programmare in C++

Espressioni regolari descrivono i linguaggi regolari. Un FA (NFA o DFA) è un metodo per costruire una macchina che riconosce linguaggi regolari.

Esercitazione 1 la shell

Analisi lessicale (scanner)

Perché il linguaggio C?

Nozioni Preliminari e Terminologia. Alfabeti Stringhe Linguaggi

Quiz sui linguaggi regolari

Automi e Linguaggi Formali

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN

L ambiente UNIX/Linux Espressioni regolari e comando find

Tipi di dato primitivi

Implementazione di DFA in C

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

Supplemento alle dispense di Sintassi

LINGUAGGI DI ALTO LIVELLO

Transcript:

Espressioni regolari in UNIX Violetta Lonati a Dipartimento Scienze dell Informazione Università degli Studi di Milano a E garantito il permesso di copiare, distribuire e/o modificare i materiali cont enuti in questa pagina seguendo i termini della Licenza per Documentazione Liber a GNU, Versione 1.1 o ogni versione successiva pubblicata dalla Free Software Fo undation, con il riferimento all Autore e alla presente nota. Una copia della li cenza è reperibile sul sito http://www.softwarelibero.it/gnudoc/fdl.it.html Espressioni regolari in UNIX p.1/19

Espressioni regolari Σ alfabeto (insieme finito) Espressioni regolari in UNIX p.2/19

Espressioni regolari Σ alfabeto (insieme finito) 1., ε, σ(σ Σ) sono espressioni regolari Espressioni regolari in UNIX p.2/19

Espressioni regolari Σ alfabeto (insieme finito) 1., ε, σ(σ Σ) sono espressioni regolari 2. Se p e q sono espressioni regolari, allora anche (p + q), (p q), (p ) sono espressioni regolari. Espressioni regolari in UNIX p.2/19

Espressioni regolari Σ alfabeto (insieme finito) 1., ε, σ(σ Σ) sono espressioni regolari 2. Se p e q sono espressioni regolari, allora anche (p + q), (p q), (p ) sono espressioni regolari. NOTA: le parentesi possono essere omesse, con la convenzione che valga quest ordine di precedenza: + Espressioni regolari in UNIX p.2/19

Linguaggi denotati da ER ER p L p Σ Espressioni regolari in UNIX p.3/19

Linguaggi denotati da ER ER p L p Σ 1. Espressioni regolari in UNIX p.3/19

Linguaggi denotati da ER ER p L p Σ 1. ε σ Espressioni regolari in UNIX p.3/19

Linguaggi denotati da ER ER p L p Σ L = 1. ε L ε = {ε} σ L σ = {σ} Espressioni regolari in UNIX p.3/19

Linguaggi denotati da ER ER p L p Σ L = 1. ε L ε = {ε} σ L σ = {σ} 2. Espressioni regolari in UNIX p.3/19

Linguaggi denotati da ER ER p L p Σ L = 1. ε L ε = {ε} σ L σ = {σ} (p + q) 2. (p q) (p ) Espressioni regolari in UNIX p.3/19

Linguaggi denotati da ER ER p L p Σ L = 1. ε L ε = {ε} σ L σ = {σ} (p + q) L (p+q) = L p L q 2. (p q) L (p q) = L p L q (p ) L (p ) = (L p ) Espressioni regolari in UNIX p.3/19

Linguaggi denotati da ER ER p L p Σ L = 1. ε L ε = {ε} σ L σ = {σ} (p + q) L (p+q) = L p L q 2. (p q) L (p q) = L p L q (p ) L (p ) = (L p ) L 1 L 2 = {x = u v con u L 1, v L 2 } Espressioni regolari in UNIX p.3/19

Linguaggi denotati da ER ER p L p Σ L = 1. ε L ε = {ε} σ L σ = {σ} (p + q) L (p+q) = L p L q 2. (p q) L (p q) = L p L q (p ) L (p ) = (L p ) L = n 0 (L p ) n Espressioni regolari in UNIX p.3/19

Espressioni regolari in UNIX Le espressioni regolari sono usate in UNIX come formalismo per specificare linguaggi sull alfabeto dei caratteri. Espressioni regolari in UNIX p.4/19

Espressioni regolari in UNIX Le espressioni regolari sono usate in UNIX come formalismo per specificare linguaggi sull alfabeto dei caratteri. grep, sed, lex, vi, awk, ad, ex, pg Espressioni regolari in UNIX p.4/19

Espressioni regolari in UNIX Le espressioni regolari sono usate in UNIX come formalismo per specificare linguaggi sull alfabeto dei caratteri. grep, sed, lex, vi, awk, ad, ex, pg sono alcuni comandi che effettuano elaborazioni di testi e possono essere applicati a insiemi di stringhe specificate attraverso sottoclassi di ER, oppure attraverso estensioni di ER. Espressioni regolari in UNIX p.4/19

Esempi di applicazioni Ricerca di parole, pattern matching, find and replace Espressioni regolari in UNIX p.5/19

Esempi di applicazioni Ricerca di parole, pattern matching, find and replace Progettazione di compilatori per linguaggi di programmazione Espressioni regolari in UNIX p.5/19

Esempi di applicazioni Ricerca di parole, pattern matching, find and replace Progettazione di compilatori per linguaggi di programmazione Linguaggi di programmazione specifici per la elaborazione di stringhe (es: PERL) Espressioni regolari in UNIX p.5/19

Sintassi delle ER in UNIX La sintassi delle espressioni regolari usate nei comandi UNIX non é identica a quella definita precedentemente. Per i dettagli, si veda man regex. Espressioni regolari in UNIX p.6/19

Sintassi delle ER in UNIX La sintassi delle espressioni regolari usate nei comandi UNIX non é identica a quella definita precedentemente. Per i dettagli, si veda man regex. Due tipi di ER: base/semplici e estese. Espressioni regolari in UNIX p.6/19

Sintassi delle ER in UNIX La sintassi delle espressioni regolari usate nei comandi UNIX non é identica a quella definita precedentemente. Per i dettagli, si veda man regex. Due tipi di ER: base/semplici e estese. NOTA: possibile confusione-incompatibilita tra espressioni regolari base/semplici e estese. Espressioni regolari in UNIX p.6/19

Espressioni regolari semplici su Σ Classe su Σ: (x 1 + x 2 +... + x n ), x k Σ Espressioni regolari in UNIX p.7/19

Espressioni regolari semplici su Σ Classe su Σ: (x 1 + x 2 +... + x n ), x k Σ Sia Σ = {a, b, c, d} Espressioni regolari in UNIX p.7/19

Espressioni regolari semplici su Σ Classe su Σ: (x 1 + x 2 +... + x n ), x k Σ Sia Σ = {a, b, c, d} Esempi di classi su Σ: (a) = a Espressioni regolari in UNIX p.7/19

Espressioni regolari semplici su Σ Classe su Σ: (x 1 + x 2 +... + x n ), x k Σ Sia Σ = {a, b, c, d} Esempi di classi su Σ: (b + d) Espressioni regolari in UNIX p.7/19

Espressioni regolari semplici su Σ Classe su Σ: (x 1 + x 2 +... + x n ), x k Σ Sia Σ = {a, b, c, d} Esempi di classi su Σ: (a + b + d + c) Espressioni regolari in UNIX p.7/19

Espressioni regolari semplici su Σ Classe su Σ: (x 1 + x 2 +... + x n ), x k Σ Sia Σ = {a, b, c, d} Esempi di classi su Σ: (a + b + d + c) Non sono classi su Σ: a (b + c) Espressioni regolari in UNIX p.7/19

Espressioni regolari semplici su Σ Classe su Σ: (x 1 + x 2 +... + x n ), x k Σ Sia Σ = {a, b, c, d} Esempi di classi su Σ: (a + b + d + c) Non sono classi su Σ: a + c Espressioni regolari in UNIX p.7/19

Espressioni regolari semplici su Σ Espressione regolare semplice su Σ: (c 1 c 2 c n ) dove c k è una classe oppure una classe seguita da Espressioni regolari in UNIX p.8/19

Espressioni regolari semplici su Σ Espressione regolare semplice su Σ: (c 1 c 2 c n ) dove c k è una classe oppure una classe seguita da Esempi di ER semplici su {a, b, c, d}: (a + b + c + d)(a + b) Espressioni regolari in UNIX p.8/19

Espressioni regolari semplici su Σ Espressione regolare semplice su Σ: (c 1 c 2 c n ) dove c k è una classe oppure una classe seguita da Esempi di ER semplici su {a, b, c, d}: (a)(a + c) (a + b) Espressioni regolari in UNIX p.8/19

Espressioni regolari semplici su Σ Espressione regolare semplice su Σ: (c 1 c 2 c n ) dove c k è una classe oppure una classe seguita da Esempi di ER semplici su {a, b, c, d}: (a)(a + c) (a + b) Non sono ER semplici su {a, b, c, d}: (a + b + c) + ab Espressioni regolari in UNIX p.8/19

Espressioni regolari semplici su Σ Espressione regolare semplice su Σ: (c 1 c 2 c n ) dove c k è una classe oppure una classe seguita da Esempi di ER semplici su {a, b, c, d}: (a)(a + c) (a + b) Non sono ER semplici su {a, b, c, d}: a + b Espressioni regolari in UNIX p.8/19

Espressioni regolari semplici in UNIX Le Espressioni regolari semplici in UNIX sono espressioni regolari semplici sull alfabeto ASCII, con due avvertimenti: I caratteri speciali $. \ - [ ] * +? { } ( ) / % < > vanno codificati con parole opportune. Espressioni regolari in UNIX p.9/19

Espressioni regolari semplici in UNIX Le Espressioni regolari semplici in UNIX sono espressioni regolari semplici sull alfabeto ASCII, con due avvertimenti: I caratteri speciali $. \ - [ ] * +? { } ( ) / % < > vanno codificati con parole opportune. Si usano dei trucchi per specificare certi sottoinsiemi in forma compatta, sfruttando l ordinamento dei caratteri ASCII: A < B <... < Z ; a < b <... < z ; 0 < 1 <... < 9. Espressioni regolari in UNIX p.9/19

Intervalli e classi di caratteri Intervallo di caratteri in UNIX: parola del tipo x-y con x,y Σ. Espressioni regolari in UNIX p.10/19

Intervalli e classi di caratteri Intervallo di caratteri in UNIX: parola del tipo x-y con x,y Σ. I(Σ) = Σ-Σ = {intervalli su Σ}. Espressioni regolari in UNIX p.10/19

Intervalli e classi di caratteri Intervallo di caratteri in UNIX: parola del tipo x-y con x,y Σ. I(Σ) = Σ-Σ = {intervalli su Σ}. Classe in UNIX: [x 1 x 2... x n ] oppure [ x 1 x 2... x n ] dove x i Σ I(Σ). Espressioni regolari in UNIX p.10/19

Intervalli e classi di caratteri Intervallo di caratteri in UNIX: parola del tipo x-y con x,y Σ. I(Σ) = Σ-Σ = {intervalli su Σ}. Classe in UNIX: [x 1 x 2... x n ] oppure [ x 1 x 2... x n ] dove x i Σ I(Σ). Esempi: C = [2] L = {2} Espressioni regolari in UNIX p.10/19

Intervalli e classi di caratteri Intervallo di caratteri in UNIX: parola del tipo x-y con x,y Σ. I(Σ) = Σ-Σ = {intervalli su Σ}. Classe in UNIX: [x 1 x 2... x n ] oppure [ x 1 x 2... x n ] dove x i Σ I(Σ). Esempi: C = [25A] L = {2,5,A} Espressioni regolari in UNIX p.10/19

Intervalli e classi di caratteri Intervallo di caratteri in UNIX: parola del tipo x-y con x,y Σ. I(Σ) = Σ-Σ = {intervalli su Σ}. Classe in UNIX: [x 1 x 2... x n ] oppure [ x 1 x 2... x n ] dove x i Σ I(Σ). Esempi: C = [A-D] L = {A,B,C,D} Espressioni regolari in UNIX p.10/19

Intervalli e classi di caratteri Intervallo di caratteri in UNIX: parola del tipo x-y con x,y Σ. I(Σ) = Σ-Σ = {intervalli su Σ}. Classe in UNIX: [x 1 x 2... x n ] oppure [ x 1 x 2... x n ] dove x i Σ I(Σ). Esempi: C = [17-92a-c] L = {1,7,8,9,2,a,b,c} Espressioni regolari in UNIX p.10/19

Intervalli e classi di caratteri Intervallo di caratteri in UNIX: parola del tipo x-y con x,y Σ. I(Σ) = Σ-Σ = {intervalli su Σ}. Classe in UNIX: [x 1 x 2... x n ] oppure [ x 1 x 2... x n ] dove x i Σ I(Σ). Esempi: C = [ A-D] L = {A,B,C,D} c Espressioni regolari in UNIX p.10/19

Intervalli e classi di caratteri Intervallo di caratteri in UNIX: parola del tipo x-y con x,y Σ. I(Σ) = Σ-Σ = {intervalli su Σ}. Classe in UNIX: [x 1 x 2... x n ] oppure [ x 1 x 2... x n ] dove x i Σ I(Σ). RE semplice in UNIX: concatenazione di classi o classi seguite da * Espressioni regolari in UNIX p.10/19

Intervalli e classi di caratteri Intervallo di caratteri in UNIX: parola del tipo x-y con x,y Σ. I(Σ) = Σ-Σ = {intervalli su Σ}. Classe in UNIX: [x 1 x 2... x n ] oppure [ x 1 x 2... x n ] dove x i Σ I(Σ). RE semplice in UNIX: concatenazione di classi o classi seguite da * Esempio: [25A]*[a-d] Espressioni regolari in UNIX p.10/19

Intervalli e classi di caratteri Intervallo di caratteri in UNIX: parola del tipo x-y con x,y Σ. I(Σ) = Σ-Σ = {intervalli su Σ}. Classe in UNIX: [x 1 x 2... x n ] oppure [ x 1 x 2... x n ] dove x i Σ I(Σ). RE semplice in UNIX: concatenazione di classi o classi seguite da * Esempio: [25A]*[a-d] Esempio: [2]*[a-d]=2*[a-d] Espressioni regolari in UNIX p.10/19

Espressioni regolari estese Le ER estese si ottengono iterativamente a partire da quelle semplici: Espressioni regolari in UNIX p.11/19

Espressioni regolari estese Le ER estese si ottengono iterativamente a partire da quelle semplici: 1. Le ER semplici sono ER estese Espressioni regolari in UNIX p.11/19

Espressioni regolari estese Le ER estese si ottengono iterativamente a partire da quelle semplici: 1. Le ER semplici sono ER estese 2. Se p, q sono ER estese, allora sono ER estese anche (pq), (p q), (p), (p)+, (p)? Espressioni regolari in UNIX p.11/19

Espressioni regolari estese I simboli possono essere interpretati come operazioni su linguaggi: ER estesa r Linguaggio L r Espressioni regolari in UNIX p.12/19

Espressioni regolari estese I simboli possono essere interpretati come operazioni su linguaggi: ER estesa r Linguaggio L r (pq) L (pq)= L p L q Espressioni regolari in UNIX p.12/19

Espressioni regolari estese I simboli possono essere interpretati come operazioni su linguaggi: ER estesa r Linguaggio L r (pq) L (pq)= L p L q (p q) L (p q) = L p L q Espressioni regolari in UNIX p.12/19

Espressioni regolari estese I simboli possono essere interpretati come operazioni su linguaggi: ER estesa r Linguaggio L r (pq) L (pq)= L p L q (p q) L (p q) = L p L q (p) L (p) = (L p ) Espressioni regolari in UNIX p.12/19

Espressioni regolari estese I simboli possono essere interpretati come operazioni su linguaggi: ER estesa r Linguaggio L r (pq) L (pq)= L p L q (p q) L (p q) = L p L q (p) L (p) = (L p ) (p)+ L (p)+ = (L p ) + = (L p ) \ {ε} Espressioni regolari in UNIX p.12/19

Espressioni regolari estese I simboli possono essere interpretati come operazioni su linguaggi: ER estesa r Linguaggio L r (pq) L (pq)= L p L q (p q) L (p q) = L p L q (p) L (p) = (L p ) (p)+ L (p)+ = (L p ) + = (L p ) \ {ε} (p)? L (p)? = {ε} L p Espressioni regolari in UNIX p.12/19

Esempi di ER estese Espressioni regolari in UNIX p.13/19

Esempi di ER estese ([1p-r]3)* [f9]? denota il linguaggio {13,p3,q3,r3} {f,9,ε} Espressioni regolari in UNIX p.13/19

Esempi di ER estese ([1p-r]3)* [f9]? denota il linguaggio {13,p3,q3,r3} {f,9,ε} [3-7Z]* [d-g]?[13]m? denota il linguaggio {3,4,5,6,7,Z} {d,e,f,g,ε} {1,3} {m,ε} Espressioni regolari in UNIX p.13/19

Esempi di ER estese ([1p-r]3)* [f9]? denota il linguaggio {13,p3,q3,r3} {f,9,ε} [3-7Z]* [d-g]?[13]m? denota il linguaggio {3,4,5,6,7,Z} {d,e,f,g,ε} {1,3} {m,ε} ([3-7Z]* [d-g]?)[13]m? denota il linguaggio ({3,4,5,6,7,Z} {d,e,f,g,ε}) {1,3} {m, ε} Espressioni regolari in UNIX p.13/19

Comando grep grep ricerca nei file d ingresso indicati le righe che contengono un match al modello specificato come ER semplice o estesa e restituisce le righe in cui è trovata la corrispondenza. Espressioni regolari in UNIX p.14/19

Comando grep grep ricerca nei file d ingresso indicati le righe che contengono un match al modello specificato come ER semplice o estesa e restituisce le righe in cui è trovata la corrispondenza. Sintassi: grep [opz] modello -f file_con_modello file_di_input Espressioni regolari in UNIX p.14/19

Comando grep grep ricerca nei file d ingresso indicati le righe che contengono un match al modello specificato come ER semplice o estesa e restituisce le righe in cui è trovata la corrispondenza. Alcune opzioni: -num mostra num righe di contesto -v stampa le righe che non matchano... Espressioni regolari in UNIX p.14/19

Comando sed sed manipola un flusso di input, linea per linea, creando specifici cambiamenti. Espressioni regolari in UNIX p.15/19

Comando sed sed manipola un flusso di input, linea per linea, creando specifici cambiamenti. Sintassi: sed [opz] com_di_editing [file] Espressioni regolari in UNIX p.15/19

Comando sed sed manipola un flusso di input, linea per linea, creando specifici cambiamenti. Sintassi: sed [opz] com_di_editing [file] Ecco un comando di editing che effettua operazioni di ricerca e sostituzione: s/er/stringa_di_rimpiazzo/flag Espressioni regolari in UNIX p.15/19

Comando sed s/er/stringa_di_rimpiazzo/g Espressioni regolari in UNIX p.16/19

Comando sed s/er/stringa_di_rimpiazzo/g I caratteri della stringa di rimpiazzo non hanno significati speciali, tranne: & che viene sostituito con l ER individuata \n che viene sostituito l n-esima stringa corrispondente all ER chiusa tra una coppia di \( e \) Espressioni regolari in UNIX p.16/19

Analizzatore lessicale Testo in linguaggio naturale gruppi logicamente omogenei di parole. Espressioni regolari in UNIX p.17/19

Analizzatore lessicale Testo in linguaggio naturale gruppi logicamente omogenei di parole. Codice in linguaggio di programmazione tokens. Espressioni regolari in UNIX p.17/19

Analizzatore lessicale Testo in linguaggio naturale gruppi logicamente omogenei di parole. Codice in linguaggio di programmazione tokens. Esempi di tokens sono le variabili, gli operatori, i commenti... Espressioni regolari in UNIX p.17/19

Analizzatore lessicale Testo in linguaggio naturale gruppi logicamente omogenei di parole. Codice in linguaggio di programmazione tokens. Esempi di tokens sono le variabili, gli operatori, i commenti... L analisi lessicale è la prima fase del processo di compilazione. Espressioni regolari in UNIX p.17/19

Analizzatore lessicale Ai token corrispondono linguaggi molto semplici, denotabili con ER; Espressioni regolari in UNIX p.18/19

Analizzatore lessicale Ai token corrispondono linguaggi molto semplici, denotabili con ER; Ogni token è riconosciuto da un automa a stati finiti (teorema di Kleene); Espressioni regolari in UNIX p.18/19

Analizzatore lessicale Ai token corrispondono linguaggi molto semplici, denotabili con ER; Ogni token è riconosciuto da un automa a stati finiti (teorema di Kleene); Gli automi individuano le sottostringhe del testo appartenenti ai tokens; Espressioni regolari in UNIX p.18/19

Analizzatore lessicale Ai token corrispondono linguaggi molto semplici, denotabili con ER; Ogni token è riconosciuto da un automa a stati finiti (teorema di Kleene); Gli automi individuano le sottostringhe del testo appartenenti ai tokens; Si attiva un azione corrispondente al token, che sostituisce la sottostringa con una nuova; Espressioni regolari in UNIX p.18/19

Analizzatore lessicale Ai token corrispondono linguaggi molto semplici, denotabili con ER; Ogni token è riconosciuto da un automa a stati finiti (teorema di Kleene); Gli automi individuano le sottostringhe del testo appartenenti ai tokens; Si attiva un azione corrispondente al token, che sostituisce la sottostringa con una nuova; L output è una rappresentazione interna del testo iniziale, utile per la compilazione. Espressioni regolari in UNIX p.18/19

Esempio con lex lex è un comando che permette di costruire analizzatori lessicali. Espressioni regolari in UNIX p.19/19

Esempio con lex lex è un comando che permette di costruire analizzatori lessicali. L analizzatore va specificato attraverso un file costituito da tre parti: definizioni, regole, codice (opzionale); le regole sono della forma pattern (ER) azione. Espressioni regolari in UNIX p.19/19

Esempio con lex lex è un comando che permette di costruire analizzatori lessicali. L analizzatore va specificato attraverso un file costituito da tre parti: definizioni, regole, codice (opzionale); le regole sono della forma pattern (ER) azione. L output è un programma in C, chiamato lex.yy.c. Espressioni regolari in UNIX p.19/19

Esempio con lex lex è un comando che permette di costruire analizzatori lessicali. L analizzatore va specificato attraverso un file costituito da tre parti: definizioni, regole, codice (opzionale); le regole sono della forma pattern (ER) azione. L output è un programma in C, chiamato lex.yy.c. Il file lex.yy.c va compilato, per ottenere l eseguibile dell analizzatore lessicale. Espressioni regolari in UNIX p.19/19