Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


esercizi linguaggio Haskell, Esercizi di Tecniche E Linguaggi Di Programmazione

Knowledge Discovery nella Diagnosi di Sistemi Attivi

Tipologia: Esercizi

2018/2019

Caricato il 02/05/2019

jack-pagoda
jack-pagoda 🇮🇹

5

(5)

40 documenti

1 / 60

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Esercizio 1
Specificare la definizione regolare relativa ai simboli lessicali intconst (costante intera) e id
(identificatore), sulla base dei seguenti vincoli:
Una costante intera con più di una cifra non può iniziare con uno zero;
Una costante intera diversa da zero è opzionalmente qualificata da un segno (parte integrante della
costante);
Un identificatore inizia con un carattere alfabetico ed è seguito da una sequenza (anche vuota) di
caratteri alfanumerici, eventualmente separati da caratteri underscore '_';
In un identificatore, non sono ammesse sequenze di due o più underscore consecutivi e l’underscore
non può terminare l’identificatore.
Linguaggi di Programmazione Esercizi Lessico
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c

Anteprima parziale del testo

Scarica esercizi linguaggio Haskell e più Esercizi in PDF di Tecniche E Linguaggi Di Programmazione solo su Docsity!

Specificare la definizione regolare relativa ai simboli lessicali intconst (costante intera) e id (identificatore), sulla base dei seguenti vincoli:

  • Una costante intera con più di una cifra non può iniziare con uno zero;
  • Una costante intera diversa da zero è opzionalmente qualificata da un segno (parte integrante della costante);
  • Un identificatore inizia con un carattere alfabetico ed è seguito da una sequenza (anche vuota) di caratteri alfanumerici, eventualmente separati da caratteri underscore ' _ ';
  • In un identificatore, non sono ammesse sequenze di due o più underscore consecutivi e l’underscore non può terminare l’identificatore.

Specificare la definizione regolare relativa ai simboli lessicali intconst (costante intera) e id (identificatore), sulla base dei seguenti vincoli:

  • Una costante intera con più di una cifra non può iniziare con uno zero;
  • Una costante intera diversa da zero è opzionalmente qualificata da un segno (parte integrante della costante);
  • Un identificatore inizia con un carattere alfabetico ed è seguito da una sequenza (anche vuota) di caratteri alfanumerici, eventualmente separati da caratteri underscore ' _ ';
  • In un identificatore, non sono ammesse sequenze di due o più underscore consecutivi e l’underscore non può terminare l’identificatore. Linguaggi di Programmazione Esercizi Lessico lettera ® [A-Za-z] cifra ® [0-9] alfanum ® lettera | cifra cifra-iniziale ® [1-9] segno ® + | - intconst ® segno? (cifra-iniziale cifra

) | 0 id ® lettera alfanum

( _ alfanum

)

2

Specificare la definizione regolare relativa ai simboli lessicali realconst (costante reale) e id (identificatore), sulla base dei seguenti vincoli:

  • Una costante reale si compone di una parte intera (obbligatoria) ed una parte decimale (opzionale);
  • La parte intera è separata dalla parte decimale (se espressa) da un punto;
  • Una costante reale include il segno '-' se negativa (ma non il segno '+', se positiva);
  • La parte intera con più di una cifra non può iniziare con uno zero;
  • Un identificatore inizia con un carattere alfabetico ed è seguito da una sequenza (anche vuota) di caratteri alfanumerici;
  • Un identificatore non può essere più lungo di quattro caratteri. Linguaggi di Programmazione Esercizi Lessico lettera ® [A-Za-z] cifra ® [0-9] alfanum ® lettera | cifra cifra-iniziale ® [1-9] segno ® '-' intero ® cifra-iniziale cifra

| 0 decimale ® cifra

realconst ® segno? intero ('.' decimale)? id ® lettera alfanum? alfanum? alfanum? 4

Specificare la definizione regolare relativa al simbolo lessicale indirizzo , che rappresenta l'indirizzo civico di una persona, come nei seguenti esempi: L'indirizzo deve rispettare i seguenti vincoli lessicali:

  • La prima riga specifica il nome (in generale, uno o più nomi) e il cognome (uno solo) della persona;
  • La seconda riga specifica la via (unico nome preceduto dalla keyword Via) e il numero civico;
  • La terza riga specifica il CAP e la città (eventualmente composta da più nomi);
  • Ogni elemento sulla stessa riga è separato dal successivo mediante un blank ;
  • Ogni riga è separata dalla successiva mediante un newline ;
  • Ogni identificatore (nome, cognome, indirizzo, città) inizia con una maiuscola ed è seguito da una o più minuscole;
  • Un nome (o più) della persona può essere abbreviato dal primo carattere seguito dal punto;
  • Il numero civico è composto da non più di 3 cifre e non può iniziare con una sequenza di zeri;
  • Il CAP è composto da cinque cifre. Linguaggi di Programmazione Esercizi Lessico Angelo B. Rossi Via Europa 145 25100 Brescia Angelo B. Matteo Rossi Via Africa 12 27100 Pavia T. Bianchi Via Asia 2 64123 Bastia Franca 5

Specificare la definizione regolare relativa ad una tabella (non vuota), in cui ogni riga rappresenta nome, cognome e codice fiscale di una persona, come nel seguente esempio, sulla base dei seguenti vincoli lessicali:

  • Nome e cognome iniziano con una lettera maiuscola, seguita da una o più lettere minuscole;
  • Il codice fiscale, composto da lettere maiuscole e cifre, è suddiviso in quattro parti: tre lettere per il cognome, tre lettere per il nome, la data di nascita (due cifre per l'anno, una lettera per il mese, giorno del mese compreso tra 01 e 31) ed una stringa alfanumerica di cui il primo carattere e l'ultimo sono lettere mentre i tre caratteri intermedi sono cifre;
  • Nome e cognome sono seguiti da uno spazio;
  • Ogni riga, ad eccezione dell'ultima, è seguita da un newline. Luigi Rossi ROSLGI84L14M634U Anna Bianchi BCIANN92A07H584X Enrico Verdi VRDERC67M13S124Y

Specificare la definizione regolare relativa ad una tabella (non vuota), in cui ogni riga rappresenta nome, cognome e codice fiscale di una persona, come nel seguente esempio: maiuscola ® [A-Z] minuscola ® [a-z] cifra ® [0-9] spazio ® ' ' newline ® '\n' id ® maiuscola minuscola

anno ® cifra cifra mese ® maiuscola giorno ® 0 [1-9] | [1-2] [0-9] | 3 [0-1] cf ® maiuscola maiuscola maiuscola maiuscola maiuscola maiuscola anno mese giorno maiuscola cifra cifra cifra maiuscola persona ® id spazio id spazio cf tabella ® persona (newline persona)* Luigi Rossi ROSLGI84L14M634U Anna Bianchi BCIANN92A07H584X Enrico Verdi VRDERC67M13S124Y

Specificare la definizione regolare relativa ad una lista (anche vuota) di elementi, in cui ogni elemento è un identificatore o un numero, come nel seguente esempio, sulla base dei seguenti vincoli lessicali:

  • Un identificatore inizia con una lettera ed è seguito da almeno due caratteri alfanumerici.
  • Un numero è composto da una parte intera (una o più cifre) ed opzionalmente da una parte decimale (un punto seguito da due cifre); la parte intera con più di una cifra non può iniziare con uno zero; un numero può avere un segno negativo (ma non positivo).
  • Gli elementi della lista sono separati tra loro da una virgola e da uno spazio. [a2b, 25, 0, AAzxy, 0.12, 13.00, stella, 100, S289aa, 123.65, zeta] lettera ® [a-zA-Z] nonzero ® [1-9] cifra ® 0 | nonzero spazio ® ' ' punto ® '.' alfanum ® lettera | cifra id ® lettera alfanum alfanum alfanum* intero ® 0 | nonzero cifra* num ® -? intero (punto cifra cifra)? elem ® id | num lista ® [ (elem (, spazio elem)*)? ]

Specificare la definizione regolare relativa ad una lista (anche vuota) di tuple, in cui ogni elemento di una tupla può essere una stringa, un numero intero, un numero reale o una costante booleana, come nel seguente esempio, sulla base dei seguenti vincoli lessicali:

  • Ogni tupla (racchiusa tra parentesi) contiene almeno due elementi, separati tra loro da una virgola.
  • Le tuple non hanno separatori tra loro.
  • Una stringa (anche vuota) è delimitata da due doppi apici e può contenere caratteri alfanumerici, spazi e doppi apici (per evitare ambiguità, questi ultimi devono essere preceduti dal backslash).
  • Un numero intero diverso da zero non può iniziare con la cifra 0.
  • Un numero reale ha una parte intera ed una parte decimale, separate da un punto.
  • La parte intera diversa da zero di un numero reale non può iniziare con la cifra 0.
  • I numeri possono essere preceduti dal segno. [("alfa",+10,12.34,true)(""beta"",false)("Gamma 25",0.12,false)]

Specificare la definizione regolare relativa ad un insieme (anche vuoto) di identificatori, come nel seguente esempio, sulla base dei seguenti vincoli lessicali:

  • ogni identificatore è separato dal successivo da una virgola seguita da uno spazio;
  • un identificatore inizia con una lettera maiuscola ed è seguito da zero o più caratteri alfanumerici;
  • un identificatore può includere caratteri underscore;
  • un underscore non può seguire un altro underscore e nemmeno essere l'ultimo carattere dell'identificatore. {Alfa, Beta22, Gamma_1_delta, Luna_Sole_stelle, Xilofono_1_2_345_omega}

Specificare la definizione regolare relativa ad un insieme (anche vuoto) di identificatori, come nel seguente esempio, sulla base dei seguenti vincoli lessicali:

  • ogni identificatore è separato dal successivo da una virgola seguita da uno spazio;
  • un identificatore inizia con una lettera maiuscola ed è seguito da zero o più caratteri alfanumerici;
  • un identificatore può includere caratteri underscore;
  • un underscore non può seguire un altro underscore e nemmeno essere l'ultimo carattere dell'identificatore. {Alfa, Beta22, Gamma_1_delta, Luna_Sole_stelle, Xilofono_1_2_345_omega} maiuscola ® [A-Z] minuscola ® [a-z] lettera ® maiuscola | minuscola cifra ® [0-9] underscore ® '_' spazio ® ' ' alfanum ® lettera | cifra id ® maiuscola ((underscore? alfanum) + )* insieme ® '{' (id (, spazio id)*)? '}'

Specificare la definizione regolare relativa ad una lista (anche vuota) di record composti da tre elementi: una parola, un numero (senza segno) ed un insieme (anche vuoto, eventualmente disomogeneo) di parole o numeri: [(sole,10,{}),(12_beta, 0.12,{0,12.35,21}),(Gamma_1_2_tre,128.09,{luna,2_stelle})] lettera ® [a-zA-Z] nonzero ® [ 1 - 9 ] cifra ® 0 | nonzero underscore ® '_' punto ® '.' alfanum ® lettera | cifra parola ® alfanum+^ (underscore alfanum+)* intera ® 0 | (nonzero cifra) decimale ® cifra+ numero ® intera (punto decimale)? atomo ® parola | numero insieme ® { (atomo ( , atomo))? } record ® '(' parola, numero, insieme ')' lista ® '[' (record ( , record)*)? ']'

Specificare la definizione regolare relativa ad una lista (anche vuota) di numeri complessi, come nel seguente esempio: sulla base dei seguenti vincoli lessicali:

  • Un numero complesso è rappresentato da una coppia (parte reale, parte immaginaria);
  • Ognuna delle due parti è rappresentata da un numero, eventualmente con segno, avente una parte intera, opzionalmente una parte decimale (almeno una cifra) e, infine, opzionalmente una parte esponenziale (rappresentata da E seguita da un intero, eventualmente con segno);
  • La parte intera non contiene zeri non significativi;
  • Il linguaggio è libero dal formato: ogni elemento lessicale (numero, parentesi, virgola) può essere separato dagli altri mediante spazi bianchi e/o tab e/o newline.

[ (1, 24.66),(0.12, +3) ( 1.845, 1.23E20 ) , (33E4, 26.80E3) ]

Specificare la definizione regolare relativa ai seguenti simboli lessicali di un linguaggio di programmazione:

  • Identificatore : stringa alfanumerica, di lunghezza compresa tra due e quattro caratteri, che inizia con una lettera e termina con una cifra;
  • Costante intera : sequenza di cifre priva di zeri non significativi;
  • Costante stringa (anche vuota): racchiusa tra doppi apici e contenente qualsiasi carattere diverso da doppi apici e newline;
  • Costante booleana : true o false ;
  • Commento : stringa di caratteri che inizia con # e termina con newline.

Specificare la definizione regolare relativa ai seguenti simboli lessicali di un linguaggio di programmazione:

  • Identificatore : stringa alfanumerica, di lunghezza compresa tra due e quattro caratteri, che inizia con una lettera e termina con una cifra;
  • Costante intera : sequenza di cifre priva di zeri non significativi;
  • Costante stringa (anche vuota): racchiusa tra doppi apici e contenente qualsiasi carattere diverso da doppi apici e newline;
  • Costante booleana : true o false ;
  • Commento : stringa di caratteri che inizia con # e termina con newline. lettera ® [A-Za-z] minuscola ® [a-z] nonzero ® [1-9] cifra ® 0 | nonzero alfanum ® lettera | cifra newline ® '\n' id ® lettera alfanum? alfanum? cifra intconst ® nonzero cifra* | 0 strconst ® "(~[\n"])" boolconst ® true | false commento ® #(~\n)\n