esercizi - unibg · grammatica p er il seguen te linguaggio l f uu u a b g soluzione il linguaggio...
TRANSCRIPT
Esercizi di Linguaggi e Traduttori
Stefano Paraboschi� Pierluigi San Pietro
Dipartimento di Elettronica e Informazione
Politecnico di Milano
Contents
� De�nizione di grammatiche ���� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizi proposti � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
� Automi� linguaggi� espressioni regolari ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Esercizi proposti � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
� Eliminazione ambiguit�a ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizi proposti � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
� Analisi discendente deterministica ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizi proposti � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
�
� Analisi sintattica ascendente ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizi proposti � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
Traduzioni sintattiche ���� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizi proposti � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
Grammatiche ad attributi ���� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Esercizio � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������ Esercizi proposti � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
�
� De�nizione di grammatiche
��� Esercizio
Scrivere la grammatica che de�nisce il linguaggio L delle stringhe di alfabeto fa� bgin cui il numero di a �e uguale al numero di b�
Soluzione ���
Sia x � L con x �� �� Allora x pu�o avere come primo carattere una a �cio�e x � ay�oppure una b �x � by�� Nel caso in cui x � ay nel su�sso y ci deve essere una bin pi�u delle a� Certamente deve esistere una b in y che divide y in due parti u e v ciascuna delle quali contiene lo stesso numero di a e di b cio�e� x � ay � aubv conu� v � L� Se x � by allo stesso modo si ha che x � buav� Da queste considerazioni sideriva facilmente la seguente grammatica�
G � S � aSbS j bSaS j �
G �e ambigua come si comprende esaminado gli alberi di derivazione possibili perla stringa abab�
La grammatica �e gi�a molto semplice e sembra di�cilmente sempli�cabile in modoulteriore perlomeno rispetto al numero delle produzioni e dei simboli non terminaliutilizzati�
La grammatica non pu�o essere sempli�cata nemmeno rispetto al numero massimodi non terminali presenti nelle parti destre delle produzioni� si pu�o dimostrare infattiche nessuna grammatica lineare �e in grado di descrivere L �ricordiamo che una gram�matica �e detta lineare quando vi �e al pi�u un solo non terminale nelle parti destre delleproduzioni��
La grammatica data ha il vantaggio di essere compatta� Per costruire una gram�matica LL��� per lo stesso linguaggio si pu�o far riferimento al modo di operare di unriconoscitore a pila per il medesimo linguaggio� Il riconoscitore operer�a confrontandoil carattere letto col carattere presente in cima alla pila� Se il carattere in cima allapila �e diverso da quello letto sulla pila verr�a eseguita un�azione di pop altrimenti �sela pila �e vuota o il carattere in cima alla pila �e lo stesso� il carattere verr�a posto incima alla pila� Il riconoscitore �e un riconoscitore a pila vuota�
Dalla descrizione del riconoscitore �e possibile costruire la seguente grammatica incui vengono rappresentati anche gli insiemi guida�
G� �
�����
S � aBSfag j bASfbg j �f�gA� afag j bAAfbgB � bfbg j aBBfag
�
��� Esercizio
Si de�nisca una grammatica per il linguaggio D delle parentesi in cui il numero totaledelle parentesi aperte �e dispari�
Esempi� �� ������ ���������� sono in D mentre ���� �������� non sono in D�
Soluzione ���
Il linguaggio D �e noncontestuale poich�e si pu�o ottenere per intersezione del lin�guaggio delle parentesi con il linguaggio regolare costituito da qualunque stringa inf�� �g� in cui il numero di � �e dispari� Si potrebbe ottenere D applicando la classicacostruzione usata per dimostrare la chiusura dei noncontestuali per intersezione coni regolari� La costruzione �e tuttavia assai complessa e conviene quindi analizzare ilproblema nel modo seguente�
Sia P il linguaggio analogo a D in cui il numero totale delle parentesi aperte�e pari� Le frasi di D possono allora essere caratterizzate induttivamente nel modoseguente�
�� �� � D�
�� se p � P allora aggiungendo a p una coppia di parentesi esterne si ottiene unafrase di D� �p� � D�
�� se p � P e d � D allora dp e pd sono in D poich�e il numero delle parentesiaperte in entrambi i casi �e dispari�
Analogamente si possono caratterizzare le frasi di P �
�� � � P �
�� se d � D allora aggiungendo a d una coppia di parentesi esterne si ottiene unafrase di P � �d� � P �
�� se p�� p� � P e d�� d� � D allora p�p� e d�d� sono in P poich�e il numero delleparentesi aperte in entrambi i casi �e pari�
Si pu�o convincersi �oppure dimostrare� che queste caratterizzazioni esaurisconotutte le possibili stringhe di D e P � �E a questo punto immediato ricavare una gram�matica per D in cui il nonterminale D rappresenta l�assioma�
G �
�D� �P � j PD j DPP � � j �D� j PP j DD
La produzione D� �� �e stata eliminata perch�e inutile�Si osservi che la seguente grammatica G� pi�u semplice di G non genera il lin�
guaggio corretto�
�
G� �nS � �� j ��S�� j �S�S j S�S�
Infatti G� non riesce a generare stringhe come ad esempio ������ costituite da unnumero dispari � � di sottostringhe di D�
��� Esercizio
Si scriva la grammatica che caratterizza il linguaggio delle stringhe di alfabeto fa� b� cgche non sono costituite da una stringa di a e b separata da una marca di centro cdalla sua copia ri�essa �
L � �fucuR � u � fa� bg�g
Soluzione ���
Costruiamo dapprima la grammatica che riconosce il complemento del linguaggiocercato ovvero il linguaggio delle palindromi con marca di centro�
G �nS � aSa j bSb j c
Il complemento di un linguaggio libero non �e in generale libero� In questo casoper�o il passaggio dal linguaggio al suo complemento risulta possibile� Osserviamoche vi sono tre casi possibili in cui una stringa x � L ciascuno corrispondente a unadi�erente �violazione� rispetto al linguaggio delle palindromi�
�� in x non vi �e nessuna c in posizione mediana �questo include anche il caso incui in x non vi sono c�
�� in x vi �e almeno una c in posizione non mediana �questo include anche il casoin cui vi siano due o pi�u c�
�� in x vi sono almeno due caratteri distinti in posizione simmetrica�
La seguente grammatica G� genera L�
G� �
�����
S � QSQ j � j a j b j QRc j cRQ j aRb j bRaR� QR j �Q� a j b j c
Dal nonterminale Q si generano i caratteri a b e c mentre da R si genera qua�lunque stringa in fa� b� cg� � Per generare una frase a partire da S occorre dapprimaapplicare zero una o pi�u volte la produzione S � QSQ e poi applicare una dellealtre produzioni sulla forma di frase del tipo uSv con j u j � j v j� Le produzioniS � � j a j b permettono di generare le frasi corrispondenti al caso ��� le produzioniS � QRc j cRQ considerano il caso ��� �inserisono una c in posizione non centrale e
�
completano la frase con una stringa di lunghezza qualunque � � a sinistra o destradella c� mentre S � aRb j bRa corrispondono al caso ����
La grammatica �e ambigua in quanto una stringa in cui sono veri�cate due o pi�ucondizioni pu�o essere generata in vari modi�
La seguente grammatica G� �e invece non ambigua in quanto riconosce la primacondizione che si veri�ca nella stringa �procedendo dall�esterno verso l�interno�
G� �
�����
� � S � aSa j bSb j A� � A� a j b j aBb j aBc j bBa j bBc j cBa j cBb j cBc j �� � B � aB j bB j cB j �
L�alternativa ��� genera il linguaggio delle stringhe simmetriche di a e b con centroA� La grammatica impone che venga utilizzata la produzione S � A la qualeintroduce attraverso la ��� una �violazione� rispetto al linguaggio delle palindromicon marca di centro� Le alternative ��� contengono tutte le possibili violazioni rispettoal linguaggio delle palindromi� Dopo che il non terminale A �e stato utilizzato unaqualsiasi stringa composta di a b e c pu�o essere generata dalle alternative ����
��� Esercizio
Scrivere una grammatica che individui il seguente linguaggio�
L� � �fucu � u � fa� bg�g
Soluzione ���
Il linguaggio che si vuole de�nire �e rappresentato dall�insieme di stringhe cheveri�cano almeno una delle seguenti tre condizioni�
� non vi �e nessuna c in posizione mediana�
� vi �e almeno una c in posizione non mediana�
� esiste almeno una posizione i della sottostringa prima della marca di centroin cui vi sia il carattere a e nella posizione i dopo la marca di centro vi sia ilcarattere b �o viceversa�� La �gura � rappresenta la situazione�
La seguente grammatica ambigua risolve il problema�
G �
�����������������������������
S � W j X j ZW � QWQ j a j b j �X � QXQ j Rc j cRZ � AbR j BaRA� QAQ j aRcB � QBQ j bRcR� QR j QQ� a j b j c
�
a c b
i i
Figure �� Stringhe appartenenti a L�
Analizziamo il signi�cato dei vari non terminali� Il non terminale Q pu�o esseresostituito dall�espressione regolare �a j b j c� mentre il non�terminale R rappresental�espressione regolare �a j b j c��� Da W si genera l�insieme delle stringhe in cui inposizione mediana non compare il carattere c� Da X si genera l�insieme delle stringhein cui compare almeno una c in posizione non mediana� Il caso rimasto �un solocarattere c che divide in due parti di lunghezza identica la stringa� �e trattato dal nonterminale Z� Visto che interessa che le due stringhe siano di�erenti basta imporre chein una posizione i vi sia un carattere a da una parte e un carattere b dall�altra� Questestringhe sono in e�etti generate dal non terminale Z il quale distingue i due sottocasiin cui si ha un a nella prima parte e un b nella seconda �prima produzione� e il casocontrario gestito dalla seconda produzione� La �gura � rappresenta sinteticamentel�albero sintattico corrispondente ad un esempio del primo caso� La grammatica �eambigua in quanto ad esempio da Z si possono derivare anche stringhe generabili apartire da X�
Si pu�o osservare come il linguaggio �L� non risulti libero� questo dimostra comela classe dei linguaggi liberi non sia chiusa rispetto all�operazione di complemento�
��� Esercizio
Scrivere una grammatica per il seguente linguaggio�
L� � �fuu � u � fa� bg�g
Soluzione ���
Il linguaggio da de�nire �e quello delle stringhe di alfabeto fa� bg che non possonoessere decomposte in due stringhe identiche che si ripetono� Le stringhe di lunghezzadispari faranno parte di questo linguaggio� Possiamo associare all�assioma una primaproduzione che genera le stringhe di alfabeto fa� bg di lunghezza dispari�
G �
�����
S � DD� QQD j QQ� a j b
Si tratta ora di generare le stringhe di lunghezza pari in cui la sequenza dei primin�� caratteri �e diversa dalla sequenza degli ultimi n�� caratteri� Questo corrisponde
�
S
Z
R
Q RQ A
A
A
a R
Q R
Q
A
b
Q
a c b
i i
Q Q
Q
c
A
i
Figure �� Albero sintattico per una stringa di L�
S
A B
A
A
B
BQ
QQ Q Q
QQQ
A B
a b
i jji
ji
Figure �� Albero sintattico per una stringa di L�
ad imporre che esista almeno un valore i� � � i � n�� per cui il carattere in posizionei�i sia diverso dal carattere in posizione i � n�� cio�e c�i� �� c�i � n����
L�espediente che si usa consiste nell�osservare che se si prendono due stringheS� di lunghezza dispari n� ed S� di lunghezza dispari n� e si costruisce la stringaS � S� � S� di lunghezza n � n� � n� la distanza tra i due elementi centrali �e pari ad � �n� ���� � �n� ���� � � � n���
Le stringhe di lunghezza pari del linguaggio cercato si potranno perci�o costruireaccostando una stringa di lunghezza �i � con al centro il carattere a ad una stringadi lunghezza n�i�� con al centro il carattere b� Scriviamo la grammatica completa�
G �
���������������
S � AB j BA j DD� QQD j QA� QAQ j aB � QBQ j bQ� a j b
In �gura � �e rappresentata una stringa di lunghezza pari del linguaggio con ilcorrispondente albero sintattico� La stringa � correttamente non �e inclusa in L�G��Il metodo qui descritto per generare L pu�o essere applicato anche al linguaggio L�
dell�esercizio ��� permettendo di ottenere una grammatica di dimensioni inferiori aquella presentata nella sua soluzione� Si lascia la costruzione di questa grammaticaper esercizio al lettore�
�
��� Esercizio
Si de�nisca una grammatica per il seguente linguaggio�
L � �fuuR j u � fa� bg�g
Soluzione ��
Si osservi dapprima che tutte le stringhe di lunghezza dispari sono in L� Lestringhe di lunghezza pari che sono in L contengono almeno una violazione rispetto allinguaggio delle palindromi senza marca di centro� sono del tipo uaw�w�bu
R o del tipoubw�w�au
R dove u� w�� w� � fa� bg� e j w� j�j w� j� Di fatto la sottostringa w�w� �euna qualunque stringa di lunghezza pari� Se denotiamo allora con P un nonterminaleda cui si genera qualunque stringa di lunghezza pari e con D un nonterminale dacui si genera qualunque stringa di lunghezza dispari una grammatica �in forma b�n�f�estesa� per L pu�o essere ricavata immediatamente�
G �
�����
S � aSa j bSb j aPb j bPa j DP � ��a b��a b���
D� �a b�P
Le due produzioni S � aSa j bSb permettono di generare uSuR mentre le pro�duzioni S �j aPb j bPa introducono una violazione rispetto al linguaggio delle palin�dromi consentendo di generare ad esempio uaPbuR da cui si ricava una qualunquefrase del tipo uaw�w�bu�
La grammatica scritta in forma non BNF estesa non �e ambigua�Alla grammatica pu�o essere data una forma ancora pi�u compatta eliminando la
di�erente gestione delle stringhe di lunghezza pari e lunghezza dispari� una stringa dilunghezza dispari �e infatti rappresentabile come uauR ubuR uawbuR o ubwauR �w �euna qualunque stringa di lunghezza dispari�� Il risultato in forma b�n�f� estesa �e�
G �nS � aSa j bSb j a�a b��b j b�a b��a j a j b
��� Esercizio
Si descriva una grammatica lineare a destra che genera il linguaggio
L � �a�ab bb���aa c���
Soluzione ��
Per de�nire una grammatica conviene costruire prima il riconoscitore a stati �nitinon�deterministico �rappresentato in �gura � da cui �e ricavabile l�insieme delle regoledella grammatica BNF�
�
D
C
BA Ea a a
a,b b c
ε
Figure �� Automa riconoscitore di L
Dall�analisi del riconoscitore si ricava la grammatica� Il linguaggio �e rappresentatodalle stringhe di caratteri che si possono ottenere partendo dallo stato A� Nellagrammatica comparir�a la seguente produzione�
S � A
Le stringhe che vengono riconosciute nello stato A sono uguali alle stringhe chevengono ottenute partendo dallo stato B precedute dal terminale a� Questa osserva�zione ci porta a scrivere la seconda regola della grammatica�
A� aB
A sua volta le stringhe riconosciute a partire dallo stato B corrispondono allestringhe ottenute partendo dallo stato C precedute da a o b oltre che le stringheaccettate partendo dallo stato D precedute da a e le stringhe accettate partendo daE precedute da c� Cos���
B � aC j bC j aD j cE
Si pu�o applicare lo stesso procedimento anche agli stati C e D ottenendo altredue produzioni �in corrispondenza degli altri due non terminali C e D�� E �e inveceuno stato �nale dell�automa riconoscitore� Una delle possibile stringhe riconosciute apartire da E �e la stringa vuota che dovr�a entrare a far parte delle alternative�
In conclusione si ottiene la seguente grammatica�
��
G �
�������������������
S � AA� aBB � aC j bC j aD j cEC � bBD� aEE � A j �
La grammatica risulta del tipo � della classi�cazione di Chomsky ovvero linearea destra�
��� Esercizio
Rappresentare mediante una grammatica BNF�estesa le espressioni aritmetiche conparentesi gra�e quadre e tonde ricordando che le parentesi gra�e possono conte�nere sia espressioni con parentesi quadre che tonde mentre le parentesi quadre etonde possono contenere solo espressioni con parentesi tonde� Si rappresenti anchela tradizionale gerachia tra gli operatori di addizione sottrazione moltiplicazione edivisione�
Soluzione ���
Una soluzione possibile �e la seguente�
Espr� � Add� � ��� Add� j ��� Add���
Add� � Fatt� � ��� Fatt� j ��� Fatt���
Fatt� � Term j �f� Espr� �g� j ��� Espr� � � j ��� Espr� ���
Espr� � Add� � ��� Add� j ��� Add���
Add� � Fatt� � ��� Fatt� j ��� Fatt���
Fatt� � Term j ��� Espr� � � j ��� Espr� ���
Espr� � Add� � ��� Add� j ��� Add���
Add� � Fatt� � ��� Fatt� j ��� Fatt���
Fatt� � Term j ��� Espr� ���
Espr� � Add� � ��� Add� j ��� Add���
Add� � Fatt� � ��� Fatt� j ��� Fatt���
Fatt� � Term j ��� Espr� ���
�� Esercizio
Il linguaggio L� � fanbmanbmg non �e noncontestuale� Provare che anche L� � fuu ju � fa� bg�g non �e noncontestuale�
��
Soluzione ��
Se L� fosse noncontestuale anche L��a�b�a�b� sarebbe noncontestuale grazie allanota propriet�a di chiusura dei linguaggi noncontestuali per intersezione con i linguaggiregolari� Ma questo linguaggio �e proprio L�� assurdo�
��� Esercizi proposti
������ Esercizio
Si progetti una sintassi G per il linguaggio L di alfabeto ! � fa� d�� ���� ��g delle listea pi�u livelli cos�� de�nite�
� una lista �e sempre racchiusa tra le parentesi e contiene un numero pari non nullodi componenti separati dal delimitatore �d��
� un componente �e �a� oppure una lista�
Ad es���ada�
��ad�ada�dada�dadada�
Sono scorrette���ad�adada�da�dadada�
perch�e la lista sottolineata ha un numero dispari di componenti�
������ Esercizio
�E noto il linguaggio di Dyck di alfabeto fa� cg ovvero il linguaggio delle stringhe benparentetizzate intendendo a come parentesi aperta e c come chiusa� Si consideri illinguaggio L ottenuto da Dyck cancellando una sola lettera c in qualsiasi punto dellastringa�
Ad esempio ad L appartengono le frasi
aaacc�� aacac�
ottenute dalla frase ben parentetizzata aacacc��Si scriva una sintassi G per L e se ne esamini l�ambiguit�a�
������ Esercizio
L�operazione di mischia �k� mescola due stringhe x e y di alfabeto ! in tutti i modipossibili sempre rispettando l�ordinamento dei caratteri di ognuna delle stringhe�Essa �e cos�� de�nita�
��
x k y � fx�y�x�y� � � � xnyn j x � x�x� � � � xn � y � y�y� � � � yn� n � �� xi� yi � !�g
Ad es�� ab k c � fabc� acb� cabg� ab k cd � fabcd� acdb� cdab� cadb� � � �gLa mischia di due linguaggi �e l�insieme delle mischie delle loro stringhe�
L � L� k L�� � fx k y j x � L�� y � L��g
Si costruisca una grammatica G per il linguaggio L � L� k L�� dove L� � cd� eL�� � fanbn j n � g�
Ad es� si hanno le frasi� c� cd� cdab� cadb� cadadbdbddd� � � �
� Automi� linguaggi� espressioni regolari
��� Esercizio
Per ciascuno dei seguenti linguaggi de�niti a parole si trovi una espressione regolarecorrispondente�
�� Tutte le stringhe in f� �g� in cui ogni ha un � immediatamente a destra�
�� Tutte le stringhe in f� �g� costituite esclusivamente da un numero pari �� �di caratteri �
�� Tutte le stringhe in f� �g� che non hanno tre consecutivi�
�� Tutte le stringhe in f� �g� in cui ogni coppia di adiacenti compare prima diuna qualsiasi coppia di � adiacenti�
�� Tutte le stringhe in f� �g� in cui il numero di �e uguale al numero degli � enessun pre�sso ha due in pi�u degli � o due � in pi�u degli �
Soluzione ���
�� �� ���
�� ���
�� �� � ���� ��
�� �� ���������������
�� �� ���
��
3
10 2
4
a
a
b
b
aε
ε
ε
Figure �� Automa non�deterministico A�
��� Esercizio
�E noto che il linguaggio L� � fanbn j n � g non �e regolare� Dimostrare che ancheL� � fanbncmdm j n�m � g non �e regolare�
Soluzione ���
Per assurdo sia L� regolare� Allora poich�e i linguaggi regolari sono chiusi rispettoall�intersezione anche L� � �a�b�� sarebbe regolare� Ma questo linguaggio �e proprioL�� L�ipotesi che L� sia regolare �e pertanto scorretta�
��� Esercizio
Si calcoli l�espressione regolare del linguaggio de�nito dall�automa A� in �gura � e sitrasformi l�automa in uno equivalente deterministico� Si minimizzi l�automa ottenuto�
Soluzione ���
Determinazione dell�espressione regolarePer la determinazione dell�espressione regolare operiamo costruendo dapprima la
grammatica lineare a destra corrispondente all�automa quindi calcolando l�espres�sione regolare a partire dalla grammatica risolvendo le equazioni corrispondenti�
La grammatica corrispondente all�automa �e la seguente�
���������������
S � aA j aCA� aB j bDB � A j �C � S j bDD� B j �
Da questa grammatica �e possibile derivare il seguente insieme di equazioni nellevariabili A�B�C�D ed S� Ogni variabile rappresenta un linguaggio regolare�
��
���������������
S � aA aCA � aB bDB � A �C � S bDD � B �
Si dimostra che questo tipo di equazioni ricavati da una grammatica lineare de�stra ammettono sempre una e una sola soluzione nello spazio dei linguaggi regolari�La soluzione per il non terminale S rappresenta proprio il linguaggio cercato� Il proce�dimento da seguire per risolvere questi sistemi consiste nel ridurre tramite sostituzionisuccessive il sistema a una o pi�u equazioni del tipo�
X � � �X
dove � �e una espressione regolare nei simboli terminali e nonterminali �diversi daX stesso� e � �e una espressione regolare nei soli simboli terminali� Questo tipo diequazioni infatti �e immediatamente risolubile ponendo
X �� ���
� Gli eventuali simboli nonterminali in � sono facilmente eliminabili con ulteriorisostituzioni successive�
Risolvendo il sistema dato nell�ordine D�B�A� C ed in�ne S si ottiene�
D � BB � A �A � �a b�A a b A � �a b���a b� � �a b��
C � S b�A �� � S b�a b�� �� � S b�a b��
S � a�a b�� aS b�a b��
S � a��a�a b�� ab�a b��� � a��a b����a b� b� �� a��a b�� � a�a b��
L�espressione regolare cercata �e quella ottenuta in corrispondenza dell�assioma dellinguaggio S ovvero a�a b��� Si pu�o ora veri�care la correttezza della soluzioneanalizzando l�automa originale�
Trasformazione nell�automa deterministicoIl risultato della trasformazione nell�automa deterministico �e rappresentato in ��
gura ��
Minimizzazione dell�automaL�automa pu�o essere minimizzato applicando il classico procedimento di calcolo
delle classi di equivalenza degli stati�Costruiamo la tabella di equivalenza�
��
b
ab
a
a a
a
b
b
0,1,2,3
1,2,4
1,2
0,1,3
0
Figure �� Automa deterministico corrispondente
��
a
a,b
a,b
α
β
γ
α
β
γ
={(0,1,3)}
= {(0,1,2,3),(1,2,4),(1,2)}
= {(0)}
Figure �� Automa deterministico minimo
� � X � � � X X� � � X X� � X X
� � � � � � � �
Quasi tutta la tabella viene riempita al primo passo quando gli stati �nali vengonodistinti dagli stati non �nali� Gli stati fg e f� �� �g vengono poi distinti al passosuccessivo dopodich�e la tabella non cambia�
Si distinguono perci�o � classi di equivalenza negli stati� Si potr�a derivare l�automaminimo costituito da � stati rappresentato in �gura ��
Si poteva facilmente ricavare l�automa deterministico minimo dall�espressione re�golare ottenuta per S a�a b���
��� Esercizio
Scrivere una espressione regolare per il linguaggio L�
� ! � fa� bg
� L � linguaggio riconosciuto dall�automa nella �gura di cui si riporta quianche una rappresentazione tabellare�
�
a
a
a
a
a
bb
a,b
b
q0 q1
q2 q3
Figure � Automa riconoscitore di L
Stato a b
q� q�� q� q�q� q�q� q�� q� q�q� q� q�� q�
Stati �nali q� e q��
Soluzione ���
Dall�automa di pu�o derivare la grammatica BNF lineare a destra equivalente�Si introduce un simbolo per ogni stato dell�automa riconoscitore e l�assioma dellagrammatica corrisponder�a al simbolo dello stato iniziale� Ogni stato �nale potr�atrasformarsi nella stringa ��
Otteniamo����������
S � aA j aC j bB j �A� aSB � aA j aB j bCC � aB j bB j bC j �
Questo insieme pu�o essere trasformato nel seguente insieme di equazioni su varia�bili che rappresentano linguaggi regolari�
���������
S � aA aC bB �A � aSB � aA aB bCC � �a b�B bC �
��
Si sostituisce A����������
A � aSB � a�S aB bCC � �a b�B bC �S � a�S aC bB �
Si sostituisce B����������
A � aSB � a��a�S bC�C � �a b�a�a�S �a b�a�bC bC �S � a�S aC ba�a�S ba�bC �
Si sostituisce C����������
A � aSB � a��a�S bC�C � ��a b�a�b b����a b�a�a�S ��S � �a� ba�a��S �a ba�b���a b�a�b b����a b�a�a�S ��a b�a�b b�� ��
Si ottiene come risultato l�espressione regolare�
L � S � ��a� ba�a�� �a ba�b���a b�a�b b����a b�a�a������a b�a�b b�� ��
��� Esercizio
Costruire il riconoscitore a stati �niti del complemento di
L � �a�ab bb���aa c���
Soluzione ���
Il riconoscitore non deterministico del linguaggio L �e rappresentato in �gura ��Costruiamo dapprima il riconoscitore deterministico del linguaggio L rappresentatoin �gura ��
Il riconoscitore del complemento si ottiene aggiungendo uno stato pozzo �nale�P in �gura� con un autoanello etichettato con tutti i simboli dell�alfabeto tramu�tando tutti gli stati �nali del riconoscitore in stati intermedi e gli stati intermedi instati �nali aggiungendo ad ogni stato un arco uscente diretto verso lo stato pozzoetichettato con i simboli non accettati dallo stato� Il risultato dell�applicazione diquesti passi al riconoscitore di �gura � restituisce il riconoscitore del complementorappresentato in �gura ��
�
D
C
BA Ea a a
b c
a
b
b
Figure �� Automa deterministico riconoscitore di L
D
C
BA Ea a
bb
a
a
b
c
b,c a,c
b,c
c
a,b,c
P
Figure �� Automa deterministico riconoscitore del complemento di L
��
a,b
a
a
a,b
e’
c
a,b,c
c
e"
Figure ��� Automi non�deterministici per e� ed e��
��� Esercizio
Si costruisca spiegando il procedimento seguito l�automa deterministico minimo chericonosce il linguaggio de�nito dalla espressione regolare estesa con il complemento�
e � ���a b��aa�a b����cc�a b c���
Soluzione ��
Identi�chiamo i due componenti e� � ��a b��aa�a b��� ed e�� � �cc�a b c���dell�espressione regolare e � �e� � e�� �si ricorda che l�operatore di negazione ��� ha laprecedenza rispetto all�operatore di concatenazione �����
Si possono dapprima de�nire gli automi per il riconoscimento delle espressioniregolari e� ed e�� ��gura ����
Si osserva che l�automa riconoscitore di e�� �e gi�a deterministico� Si pu�o renderedeterministico anche l�automa riconoscitore di e� con una semplice trasformazione ottenendo l�automa rappresentato in �gura ���
Otteniamo quindi l�automa per riconoscere il complemento di e�� Per questo tuttigli stati non��nali divengono �nali e viceversa e per ogni simbolo non riconosciutoin uno stato del riconoscitore si crea un arco etichettato con quel simbolo che portadallo stato ad uno stato pozzo �nale� Il risultato dell�applicazione di questo metodoall�automa e� �e rappresentato in �gura ���
La concatenazione tra due linguaggi si ottiene aggiungendo un arco � che collegatutti gli stati �nali del riconoscitore del primo linguaggio con lo stato iniziale delriconoscitore del secondo linguaggio ��gura ���� Riducendo poi il non�determinismosi ottiene l�automa deterministico cercato ��gura ����
��
a
a
b
a,b
e’b
Figure ��� Automa deterministico per e�
a
a
b
a,b
b
c
c
a,b,cc
e’
Figure ��� Automa deterministico per �e�
��
c
a,b,c
c
a
a
b
a,b
b
c
c
a,b,cc
e’.e" ε
ε
ε
Figure ��� Automa non�deterministico per �e� � e��
ca
a
b
a,b
b
c
e’.e" c
c
a,b
c
a,b,ca,b
Figure ��� Automa deterministico per �e� � e��
��
a,b,c
b
a
caa
b
b
a,c
a,c
b,cb,c
Figure ��� Automa deterministico per L
��� Esercizio
Scrivere una espressione regolare per il linguaggio L�
! � fa� b� cg
L �e l�insieme delle stringhe che contengono �almeno� una sottostringa cc tra ognicoppia di aa e di bb �aa e bb sono consecutive��
Ad es� baacccbbb aaccbbcbb aaccbbba bbaaacccbbaa sono corrette mentre aacbb aaccbbaacbb non lo sono�
Soluzione ��
Potendo utilizzare l�operatore di complemento l�espressione regolare risulta laseguente�
L � ���a b c��aa�c ��bb�a b c���
Disegnamo l�automa riconoscitore del linguaggio L ��gura ����L�espressione regolare che descriva l�automa senza complemento si pu�o ottenere
utilizzando il procedimento gi�a visto che a partire dall�automa riconoscitore creadapprima la grammatica e poi traduce la grammatica in un sistema di equazionisu variabili che rappresentano espressioni regolari� La soluzione per l�espressioneregolare corrispondente all�assioma della grammatica de�nisce il linguaggio cercato�
��� Esercizi proposti
����� Esercizio
Si scriva una espressione regolare per il linguaggio L di alfabeto fa� b� c� dg cos�� de��nito� Ogni frase �e una lista di uno o pi�u termini separati da un separatore�
��
Un termine �e qualsiasi parola �non nulla� di alfabeto fa� bg in cui non appaiala sottostringa aa� Un separatore �e qualsiasi parola �non nulla� di alfabeto fc� dg iniziante e terminante per d in cui il numero di c interposti tra due d consecutivi siadispari�
Es� validi� ababb ababdabb bbdcccdabdcdcdbbNon validi� cdd abc aabca abdccdb
Si costruisca inoltre l�automa riconoscitore di L�
����� Esercizio
Si costruiscano gli automi riconoscitori minimi dei linguaggi�
L� � ��� j �����
L� � ���L������
����� Esercizio
Si consideri il linguaggio L di alfabeto ! � fa� b�"g in cui ogni frase �e una listadi parole di alfabeto fa� bg separate dal "� Ogni parola deve soddisfare a una delleseguenti condizioni�
� il numero delle a �e pari e quello delle b �e dispari
� il numero delle a �e dispari e quello delle b �e pari
Esempi di frasi� abbaa� abbba"bab"a mentre sono scorrette abbaa"� bab"ab�Si costruisca un automa riconoscitore deterministico per L�
� Eliminazione ambiguit�a
��� Esercizio
Costruire una grammatica non ambigua per il linguaggio L delle espressioni benparentetizzate su un alfabeto costituito da una sola coppia di parentesi e dal simboloterminale b� Esempio di espressione corretta� b����b��bbb�����
Soluzione ���
La grammatica pi�u ovvia per L �e la seguente�
G �nS � SS j �S� j b j �
��
S S
S S
S
bb
b SS
SS
S
b b
b
Figure ��� Due alberi di derivazione distinti per la frase bbb della grammatica Gdell�esercizio ����
La grammatica �e per�o ambigua� Ad esempio la stringa bbb pu�o essere generatacon le due seguenti derivazioni destre distinte�
S SS Sb SSb Sbb bbb
S SS SSS SSb Sbb bbb
che corrispondono ai due alberi in �gura ���L�ambiguit�a �e determinata dalla presenza della regola S � SS che �e ricorsiva sia
a sinistra che a destra� Si pu�o dimostrare che ogni grammatica in cui compare unaregola del tipo X � X�X con � � �! V �� in cui X �e de�nito �vale a dire che Xpu�o generare almeno una stringa di terminali� e raggiungibile da S �e ambigua� Unapossibile soluzione in questo caso �e quella di modi�care la grammatica G in questomodo�
G� �nS � bS j �S�S j �
Dimostriamo per induzione sulla lunghezza n delle frasi di L che nessuna frasegenerata dalla grammatica G� �e ambigua nell�ipotesi che G� generi correttamente illinguaggio L�
Il passo base �n � � �e ovvio in quanto l�unico modo di generare la stringa nulla�e applicare la produzione S � �� Il passo induttivo si dimostra in base all�ipotesiinduttiva per la quale ogni frase di lunghezza inferiore a n �e non ambigua� Sia xuna frase di lunghezza n� Le frasi possono cominciare o con il carattere �b� o con ilcarattere ���� Se x �e del tipo �by� dove y �e una frase allora per ipotesi induttiva y
��
�e una frase non ambigua in quanto di lunghezza minore di n cio�e esiste una unicaderivazione sinistra S � y� Quindi anche x non �e ambigua poich�e l�unico modoper derivarla �e derivare bS con il passo S bS e poi continuare con la derivazioneprecedente da S ottenendo S bS � by� Se invece x �e del tipo ��z� il primo passodi derivazione deve applicare la regola S �S�S� Allora z � v�w con v e w derivateda S� Ma per ipotesi induttiva sia v che w non sono frasi ambigue e perci�o non lo �eanche x � �z� Non ci sono altri casi possibili e la dimostrazione �e quindi conclusa�
Sarebbe ora necessario dimostrare che la nuova grammatica G� �e equivalente a G ma in questo caso ci si pu�o accontentare di una �evidenza intuitiva��
��� Esercizio
Trovare una forma non ambigua per la seguente grammatica�
G� �
�����
S � EFE � bE j cE j �F � cF j dF j �
Soluzione ���
Il linguaggio generato dalla grammatica G� �e costituito dall�insieme delle stringhedi fb� c� dg� in cui nessuna d �e a sinistra di una b che pu�o essere anche rappresentatocon l�espressione regolare� �b c�� � �c d���
G� �e ambigua in quanto le c che seguono una b e precedono la prima d possonoessere generate sia dal nonterminale E che dal nonterminale F � Ad esempio la frasecc pu�o essere generata con due derivazioni sinistre distinte�
S EF cEF ccEF ccE cc
S EF F cF ccF cc
Una soluzione per risolvere l�ambiguit�a pu�o essere quella di considerare due insiemidi produzioni distinti il primo per generare solo stringhe di b e di c il secondo pergenerare una stringa di b e di c seguita da una d e da un stringa di c e di d� Unagrammatica non ambigua per L�G�� �e�
G� �
�����
S � E j EdFE � bE j cE j �F � cF j dF j �
�
��� Esercizio
Si considerino i due linguaggi L� � b�d� e L� � fbndn j n � g� Si trovi unagrammatica non ambigua in forma b�n�f� estesa per L � L� � L� e una per L�
SL��
Soluzione ���
Si pu�o facilmente veri�care che date due grammatiche G� e G� se L� � L�G��e L� � L�G�� con L� � L� �� � e si applica a G� e a G� il procedimento usualeper la costruzione dell�unione di due grammatiche la grammatica risultante �e sempreambigua anche quando il linguaggio non lo �e� Qualora invece G� e G� non sianoambigue e L� � L� � � la grammatica unione non �e mai ambigua� Un problemaanalogo accade con la concatenazione cio�e per il linguaggio L� �L� con L� �L� �� � quando � � L� o � � L�� In questo caso tuttavia la condizione che i due linguaggisiano disgiunti �e necessaria ma non su�ciente per garantire la non ambiguit�a dellagrammatica ottenuta per concatenazione�
Siano G� e G� due grammatiche in forma b�n�f� estesa per L� e L� rispettivamente�
G� �nS � b�d�
G� �nS � bSd j �
Si pu�o ricavare immediatamente per concatenazione una grammatica in formab�n�f� estesa per L � L� � L� rinominando con E l�assioma di G��
G� �
�S � b�d�EE � bEd j �
G� �e ambigua in quanto una frase del tipo bmdm pu�o essere ricavata con due alberisintattici distinti corrispondenti alle due derivazioni seguenti�
S bmdmE bmdm
S E bEd � � � bmEdm bmdm
Per eliminare l�ambiguit�a occorre distinguere le derivazioni di bmdm da quelle dibndm con n �� m� Una grammatica non ambigua in forma b�n�f� estesa �e la seguente in cui dal nonterminale E si derivano solo stringhe del tipo bmdm con m � mentredal nonterminale D si derivano solo stringhe del tipo bndm con n �� m�
G� �
�����
S � DE j E j EE j D j � j b� j d�
D � b�E j Ed�
E � bEd j bd
Le produzioni per il nonterminale S si giusti�cano subito notando che da S occorrepotere derivare stringhe del tipo bndnbmdm �S � EE� del tipo bndmbkdk con n �� m
��
�S � DE� del tipo bmdm con m � �S � E� del tipo bndm con n �� m �S � D� e in�ne dei tipi b� e d��
La de�nizione di una grammatica non ambigua per L�
SL� �e ora immediata�
G� �
�����
S � E j D j � j b� j d�
D � b�E j Ed�
E � bEd j bd
Tuttavia essendo L� incluso in L� in questo caso L�
SL� �e semplicemente L�
cio�e la grammatica G� va bene anche per l�unione�
��� Esercizio
Costruire una grammatica non ambigua per le espressioni booleane con la possibilit�adi parentesi nelle variabili p� q� r e negli operatori not� or� and� La grammatica deverispettare la precedenza degli operatori che hanno le seguenti priorit�a� � per not �per and � per or� Si vuole inoltre che or sia associativo a destra and sia associativoa sinistra� Si dia anche una versione della grammatica in forma bnf estesa chemantenga qualora possibile la priorit�a e l�associativit�a degli operatori�
Soluzione ���
Consideriamo per ora solo la generazione di espressioni senza parentesi che sonocomunque frasi del linguaggio in quanto le parentesi sono opzionali�
Una grammatica ambigua e che non rispetta le precedenze e l�associativit�a pu�oessere ricavata immediatamente�
G� �nS � S and S j S or S j not S j p j q j r
L�ambiguit�a deriva dalle regole ricorsive a sinistra e a destra che devono essereeliminate� In questo caso il modo pi�u semplice per costruire una grammatica nonambigua �e quello di eliminare ad esempio le ricorsioni sinistre dalle regole ricorsivea sinistra e a destra introducendo opportuni simboli non terminali� Il risultato �e laseguente grammatica non ambigua �ma che ancora non rispetta le precedenze��
G� �
�S � A or S j A and S j not S j AA� p j q j r
Le grammatiche per generare espressioni sono di solito chiamate �grammatiche adoperatori� e possono essere cos�� caratterizzate�
� alcuni terminali sono detti operatori�
� alcuni non terminali sono detti oggetti�
� ci pu�o essere al pi�u un operatore nella parte destra di ogni regola�
�
S
A
p
S
A S
qr
A
p or q and r(interpretato come p or (q and r))
or
and
(interpretato come p and (q or r))
S
or
A
p
and S
A S
q
p and q or rr
A
Figure �� Due alberi di derivazione per la grammatica G� dell�esercizio ���� Nell�al�bero di sinistra and cede la precedenza a or mentre in quello di destra or cede laprecedenza a and�
� gli operatori possono comparire solo in regole la cui parte sinistra �e un oggettoe in cui vi �e almeno un oggetto nella parte destra�
Gli operatori di G� sono i simboli not� and� or mentre gli oggetti sono i nonter�minali S e A�
La precedenza tra operatori pu�o essere de�nita per un albero di derivazione diuna frase in questo modo� l�operatore b cede la precedenza all�operatore a se c��e uncammino verso l�alto nell�albero da a �no al nodo che �e immediatamente al di sopradi b �cio�e contiene l�oggetto da cui si �e derivato b��
Intuitivamente se un operatore ha la precedenza sull�altro agisce sui propri ope�randi prima che il secondo operatore agisca sui propri operandi in quanto si trova aun livello pi�u basso nell�albero di derivazione�
L�ordine di precedenza degli operatori �e un concetto di tipo semantico in quantoriguarda la valutazione delle espressioni� Poich�e per�o lo scopo delle grammatiche aoperatori �e quello di fornire un ausilio agli analizzatori tramite la costruzione dell�al�bero sintattico di una frase �e conveniente che la precedenza abbia un corrispondentenella sintassi in modo da sempli�care l�elaborazione di tipo semantico�
La grammatica G� implementa una precedenza da sinistra a destra� gli operatoriin una frase cedono la precedenza agli operatori che stanno alla loro destra� Si vedanoad esempio gli alberi di �gura ��
Per implementare le priorit�a pre�ssate per ciascun operatore richieste dal testodell�esercizio occorre modi�care la grammatica precedente distinguendo un oggettoper ogni operatore e de�nendo le produzioni in ordine inverso rispetto alla priorit�a�L�operatore a priorit�a inferiore cio�e l�or �e cos�� generato sempre ai livelli pi�u altidell�albero� In questo modo non pu�o mai succedere che un or sia generato in un nodo
��
C
A
q
SorD
C
D
not
r
A
p C
A
C
S
p and q or not r
and D
interpretata come (p and q) or (not r)
Figure ��� Albero di derivazione per la grammatica G� dell�esercizio ����
di un albero di derivazione che sta al di sotto di un qualunque nodo con un and�
G� �
���������
S � D or S j DD � C andD j CC � not C j AA� p j q j r
Ad esempio la frase p and q or not r ha l�albero di derivazione di �gura ���Si dice che l�operatore a �e associativo a sinistra in un albero di derivazione se
ogni a cede sempre la precedenza agli a che stanno alla sua sinistra� L�operatore a�e associativo a destra se ogni a cede sempre la precedenza agli a che stanno alla suadestra�
La grammatica G� non implementa la richiesta associativit�a degli operatori� L�as�sociativit�a �e infatti destra per tutti gli operatori cio�e la frase p and q and r �e generatacome se fosse p and �q and r��
Per avere l�associativit�a a sinistra per and e a destra per or basta introdurre laregola D � D and C al posto della regola D � C andD�
Introduciamo ora le parentesi nelle espressioni facendo attenzione a non rendereambigua la grammatica� Il metodo corretto �e quello di aggiungere la regola A ��S� che consente di espandere i nodi a livello pi�u basso �marcati con A� con unaespressione tra parentesi oltre che con le variabili p� q� r� Il risultato �nale �e la seguentegrammatica G� di cui alcuni esempi di derivazioni sono mostrati in �gura ��
��
p or q or rinterpretata come p or (q or r)
p and q and rinterpretata come (p and q) and r
or
orD
C
A
D
( )
p and (q and r)
S
andDand
and
r
S
S
D
D
C
D
A
A
C
A
C
A
C
DC
A
rC
A
A
C
S
D
C
A
p
S
and
S
D
q
q A
C
D
r
q
p
p
Figure �� Alberi di derivazione per la grammatica G� dell�esercizio ����
G� �
���������
S � D or S j DD � D and C j CC � not C j AA� p j q j r j �S�
La grammatica pu�o essere riscritta nella seguente forma b�n�f� estesa�
G� �
���������
S � D �orD��
D � C �and C��
C � not C j AA� p j q j r j ��� S ���
La precedenza fra operatori �e mantenuta dalla G�� Si pu�o ritenere che l�associati�vit�a non abbia pi�u molto senso in quanto ad esempio una frase come porqorr vienegenerata in questo modo� S DorDor � porqorr� gli or sono generati di fattoalla stessa altezza nell�albero sintattico� Tuttavia nella costruzione di analizzatorisemantici di tipo discendente per grammatiche di questo tipo la generazione e la
��
valutazione avvengono da sinistra verso destra cio�e in un modo che realizza natu�ralmente una associativit�a sinistra� In realt�a non �e di�cile modi�care l�analizzatoreper ottenere una associativit�a destra ad esempio usando una pila per memorizzare ivalori associati ai terminali�
Si osservi in�ne che per questo esercizio dal punto di vista semantico �e irrilevantequale sia la associativit�a dell�operatore or che era stata richiesta solo allo scopo dide�nire il concetto relativo per le grammatiche a operatori�
��� Esercizio
Rendere non ambigua la grammatica G�
G �
�����
S � aSb j CC � aD j �D� bC
Soluzione ���
La grammatica individua il linguaggio �non regolare��
fan�ab��bn j n � g
Per frasi del tipo anabbn vi �e un�ambiguit�a su quale derivazione �e stata e�ettiva�mente seguita� Cos�� alla stringa aabb corrispondono le due derivazioni S � aSb �aaSbb� aaCbb� aabb e S � aSb� aCb� aaDb� aabCb� aabb�
Per evitare questo caso bisogna modi�care la grammatica di partenza accedendoalle produzioni dei non�terminali C e D solo quando si presenta e�ettivamente unasequenza di ab innestati di lunghezza pari almeno a �� Una soluzione �e o�erta dallaseguente grammatica in cui si sono anche sempli�cate le produzioni da C e D�
G� �
�S � aSb j aababCb j �C � abC j �
��� Esercizi proposti
���� Esercizio
Data la grammatica�
G �
���������
S � aA j A j Bb j BB � C j BbC � aCb j �A� aA j C
si determini se G �e ambigua e si descriva in termini insiemistici il linguaggio L�G��
��
���� Esercizio
Mostrare che le seguenti grammatiche sono ambigue e trovare per ciascuna una formanon ambigua equivalente�
G� �
�S � aST j �T � aT j a
G� �
�S � aS j aSb j TT � aTa j a
G� �
�����
S � TUTUT � aT j bT j �U � bU j cU�
G� �
�����
S � bS j Sd j EFE � bEc j bcF � cFd j cd
� Analisi discendente deterministica
��� Esercizio
Si de�niscano mediante una grammatica il linguaggio L � fanbpcq j n � �n � p�qge il linguaggio L� � LR �linguaggio speculare��
Si veri�chi se tale grammatiche risultino LL��� e in caso a�ermativo se ne costruiscal�analizzatore a discesa ricorsiva e l�automa a pila riconoscitore�
Soluzione ���
Una grammatica non ambigua G per L �e la seguente�
G �
�S � aSc j TT � aTb j �
Una derivazione �e ad esempio�
S aSc aaSc aaaTbcc aaabcc
�
Calcolo insiemi guida per L� G�A� �� �
�I��� se � non genera �I���
SS�A� se � � �
��
conI��� � fa � ! j � � a�g
S�A� � fa � ! j S � �Aa�g
Pertanto�
G�S � aSc� � I�aSc� � fag
G�S � T � � I�T ��S�S� � fag fcg
I due insiemi guida non sono disgiunti e quindi la grammatica non �e LL����Ci si potrebbe domandare se una grammatica LL��� possa esistere per L� La
risposta �e negativa anche se L �e certamente un linguaggio deterministico ��e facilecostruire un automa a pila deterministico con tre soli stati che riconosce L�� Infatti quando si legge una a la conoscenza del carattere successivo non basta per stabilirela ripartizione delle b e delle c� �E anzi facile intuire che la grammatica non �e LL�k�per nessun k�
Una grammatica per L� � LR si ottiene immmediatamente da quella di L�
G� �
�S � cSa j TT � bTa j �
Verichiamo che G� �e LL����Calcolo insiemi guida per L��
G�S � cSa� � I�cSa� � fcg
G�S � T � � I�T ��S�S� � fbg fag � fa� bg
G�T � bTa� � I�bTa� � fbg
G�T � �� � S�T � � fag
G� �e LL��� in quanto gli insiemi guida delle produzioni con la stessa parte sinistrasono disgiunti�
Costruiamo ora l�analizzatore a discesa ricorsiva per G��
��
procedure S�if cc � fcg then cc�� PROSSIMO� �� S � cSa ��
S�if cc ��� a� then ERRORE else cc �� PROSSIMO endif
elsif cc � fa� bg then T �� S � T ��else ERRORE
endifend S�
procedure T�if cc � fbg then cc�� PROSSIMO� �� T � bTa ��
T�if cc ��� a� then ERRORE else cc �� PROSSIMO endif
elsif cc � fag then return �� T � � ��else ERRORE
endifend T�
Automa a pila deterministico LL���� riconoscitore per L�
L�alfabeto della pila �e costituito dall�unione dell�alfabeto terminale e nonterminaledella grammatica� S �e il simbolo iniziale della pila� L�automa ad ogni mossa estrae ilsimbolo in cima alla pila e se esplicitamente speci�cato avanza la testina di letturadel nastro di ingresso� L�automa riconosce a pila vuota vale a dire quando non cisono pi�u simboli sulla pila e sul nastro di ingresso� L�automa si arresta senza accettarequando si trova in una con�gurazione da cui nessuna mossa �e possibile �ad esempio Tsulla pila e c in ingresso�� La mossa push��� corrisponde a eseguire una pop dalla pilanon seguita da una push� La mossa avanza esegue una pop e consuma un simbolo iningresso senza eseguire una push�
Cima Carattere di ingressoPila a b c
S push�T � push�T � push�aSc�T push��� push�aTb�a avanzab avanzac avanza
Esempio di esecuzione sulla stringa ccbbaaaa��S� ccbbaaaa� � �aSc� ccbbaaaa� � �aS� cbbaaaa� � �aaSc� cbbaaaa� ��aaS� bbaaaa� � �aaT� bbaaaa� � �aaaTb� bbaaaa� � �aaaT� baaaa� ��aaaaTb� baaaa� � �aaaaT� aaaa� � �aaaa� aaaa� � �aaa� aaa� ��aa� aa� � �a� a� � ��� �� accetta
��
��� Esercizio
Si calcolino gli insiemi guida per le produzioni della seguente grammatica�
G �
���������������
S � XYX � aT j TTT � b j TX j �Y � c j XY j ZXZ � dZ j e
Soluzione ���
Per potere e�ettuare il calcolo in modo sistematico sulla grammatica data con�viene dapprima de�nire un insieme di regole generali applicabili a qualunque gram�matica libera�
Sia G una grammatica con tutti i nonterminali de�niti e raggiungibili� De�niamol�insieme degli inizi I�x� per un qualunque � � �VN VT ���
Se x � VT alloraI�x� � fxg
Se x � X X � VN e X � � j � j � � � j � sono tutte e sole le produzioni di x allora
I�X� � I��� � � � I���
Se x � X� � � �Xn Xi � �VN VT � con � � i � n allora
I�X� � � �Xn� ��fI�Xi� j � � i � n�X� � � � Xi��
� �g
In questo modo �e possibile costruire un sistema di equazioni le cui incognite sonogli insiemi degli inizi per ogni nonterminale�
Per la grammatica dell�esercizio una volta notato che S�X� Y� T sono tutti e soli inonterminali da cui si pu�o derivare � si ottiene facilmente il seguente sistema in cuiX sta per I�X����������
�������
S � X YX � a TT � b T XY � c X Y ZZ � d e
La soluzione di un sistema di questo tipo si pu�o facilmente ottenere per sostituzionisuccessive e applicando la legge di assorbimento� se vale l�equazione�
W � W E
dove E �e una qualunque espressione di unione di variabili e insiemi regolari alloravale l�equazione�
W � E
�
Si noti che in particolare se l�equazione �e ridotta al caso degenere W � W allora valel�equazione W � ��
Ad esempio nel sistema precedente si possono sostituire le espressioni X � a Te Z � d e ottenendo�
���������������
S � X YX � a TT � b T a T � b aY � c X Y d eZ � d e
da cui si ricava����������������
S � X YX � a T � a bT � b aY � c X Y d e � a b c d eZ � d e
da cui anche S � a b c d e�Dal punto di vista teorico l�esistenza della soluzione cercata �e garantita dai clas�
sici teoremi di punto �sso� La trasformazione individuata dal sistema �e monotona econtinua nell�alfabeto terminale e quindi il sistema ammette un unico minimo punto�sso che costituisce proprio la soluzione cercata� Dalla monotonia della trasforma�zione deriva immediatamente la validit�a della legge di assorbimento e la garanziadell�esistenza della soluzione procedendo opportunamente per applicazioni successivedella sostituzione e dell�assorbimento�
Relazioni analoghe a quelle per gli insiemi degli inizi esistono anche per gli insiemidei seguiti� In particolare�
Se X � VN e Y� � ��X�� Y� � ��X�� � � � Yn � �nX�n sono tutte e sole leproduzioni di G in cui X compare nella parte destra allora l�insieme S�X� dei seguiti�e�
S�X� ��fI��i�g
�fS�Yi� j �i
� �g
Il risultato dell�applicazione di queste regole �e un sistema di equazioni dello stessotipo di quelle viste per calcolare l�insieme degli inizi� Il sistema pu�o essere risolto inbase al metodo appena visto� L�insieme guida si pu�o calcolare come al solito unavolta veri�cato anche quali nonterminali sono annullabili�
Ad esempio per la grammatica data nel testo dell�esercizio il sistema �e�
��
���������������
S�S� ��S�X� � S�T � S�Y � I�Y �S�T � � I�X� I�T � S�X� S�T �S�Y � � S�S�S�Z� � I�X� S�Y �
La soluzione del sistema pu�o essere realizzata sfruttando i valori gi�a calcolati pergli insiemi degli inizi e sfruttando il fatto che S�S� �� per ottenere che S�Y � �� S�Z� � a b � da cui sostituendo S�X� in S�T � si ricava�
S�T � � I�X� I�T � S�T � S�Y � I�Y � S�T �
da cui per assorbimento si deduce che�
S�T � � a b c d e �� S�X�
�E ora possibile ricavare gli insiemi guida delle varie produzioni che riportiamo diseguito�
G �
���������������
S � XY fa b c d e �gX � aTfag j TTfa b c d e �gT � bfbg j TXfa b c d e �g j �fa b c d e �gY � cfcg j XY fa b c d e �g j ZXfd� egZ � dZfdg j efeg
La grammatica non �e pertanto LL����
��� Esercizio
Si de�nisca mediante una grammatica BNF estesa un minilinguaggio di programma�zione� Le caratteristiche del linguaggio sono le seguenti�
� Un programma inizia con la parola chiave prog e termina con la parola chiaveendprog�
� un programma �e costituito da una o pi�u dichiarazioni di procedura�
� ogni procedura �e preceduta dalla parola chiave procedure seguita da un nomee da una dichiarazione di zero uno o pi�u parametri�
� ogni procedura contiene anche un corpo individuato dalla coppia begin � � � end�
� non si possono annidare le dichiarazioni di procedura�
� il corpo di una procedura pu�o essere costituito da vari blocchi annidati�
�
� un blocco inizia con un begin e termina con un end e pu�o contenere subitodopo il begin zero o pi�u dichiarazioni di variabili�
� ogni blocco pu�o contenere delle istruzioni call seguite dal nome di una proce�dura e da una lista di parametri attuali�
� le variabili e i parametri formali possono essere solo di tipo integer o real�
� si possono usare costanti numeriche come parametri attuali�
Esempio�progprocedure P� �I� I�� integer� F��real��beginXYZ� real�w v�integer�call P��begincall P��� � �����end�end�procedure P��beginend�endprog
Si progetti almeno in parte l�analizzatore sintattico a discesa ricorsiva�
Soluzione ���
Una grammatica BNF estesa per il linguaggio �e�
���������������������������������������
program� prog�procedureDeclaration�� ���endprogprocedureDeclaration� procedurepId�formalParameters j ���� �blockformalParameters� ����fId��� �fId�� � � ��integer j real��� ��� ���block � begin�varDeclaration j ���phrase�� ���endvarDeclaration� �vId��� �vId�� � � ��integer j real��� ���
phrase� �callpId�actualParameters j ��� j blockactualParameters� ����aId��� �aId������aId� identifier j constantfId� identifierpId� identifier
I simboli identifier e constant individuano rispettivamente i generici identi�catorialfanumerici e le costanti numeriche ricavati da un opportuno analizzatore lessicale�
��
procedureDeclaration endprog
pId formalParameters ; block
fId
;
fId
integer ; )
real
program
prog
procedureDeclaration
procedure
formalParameters
(
’
:
Figure ��� Alcuni diagrammi sintattici corrispondenti alla grammatica dell�eserci�zio ����
��
La �gura �� mostra i diagrammi sintattici corrispondenti ad alcune delle dichia�razioni BNF estese della grammatica�
Costruiamo ora le procedure sintattiche relative ai non terminali program e block�La regola per program soddisfa la condizione di determinismo LL��� per la sintassi
BNF estesa in quanto G�procedureDeclaration��� �TS��procedureDeclaration��� ���
� fproceduregTfendprogg � ��
Se si suppone che la variabile cc contenga identi�catori invece di un singolo carat�tere �come lecito aspettarsi se si usa un opportuno analizzatore lessicale� la procedurasintattica per program �e�
procedure program�if cc �� prog� then cc��PROSSIMO else ERRORE endif�if cc � fprocedureg then repeat
procedureDeclaration�if cc ����� then ERRORE
else cc �� PROSSIMOendif
until cc �� fproceduregif cc ��� endprog� then ERRORE
else cc �� PROSSIMOendif
else ERROREendifend program�
La regola per block soddisfa la condizione di determinismo LL��� per la sintassiBNF estesa in quanto�
� per la sottoespressione �varDeclaration j �� si ha�
G�varDeclaration�TG��� � vId
Tfend� call� beging � � poich�e end� cal� begin
sono parole riservate che non possono essere usate per gli identi�catori �in casocontrario verrebbe segnalato un errore in quanto l�analizzatore lessicale nonrestituirebbe una variabile��
� per la sottoespressione �phrase�� ��� si ha�
G�phrase�� ��TS��phrase�� ���� � fcall� beging
Tfendg � ��
La procedura sintattica �e�
procedure block�if cc �� begin� then cc �� PROSSIMO�
if cc � vId then varDeclaration
��
elsif cc �� fcall� begin� endg then ERROREendifwhile cc � fcall� beging do
phraseenddo�if cc �� end� then cc�� PROSSIMO else ERRORE endif
else ERROREendifend program�
��� Esercizio
Data la grammatica soluzione dell�esercizio ��� si veri�chi se la grammatica �e di tipoLL���� Si consideri poi la versione in forma b�n�f� estesa si veri�chi se �e di tipo LL���e in caso a�ermativo se ne costruisca l�analizzatore a discesa ricorsiva�
Soluzione ���
�E immediato veri�care che la grammatica non �e di tipo LL�k� per nessun k��E possibile trasformarla in una grammatica LL��� come la seguente in cui sonoriportati anche gli insiemi guida delle produzioni�
G �
���������������
S � XY fp� q� r� or� and��gY � �f�g j orXY forgX � AZfp� q� r� �� notgZ � �for��g j and AZfandgA� p j q j r j �S� j not A
La grammatica �e scomoda per la costruzione di analizzatori sintattici e seman�tici integrati �una grammatica ad attributi per valutare il valore delle espressionio per tradurre in un linguaggio macchina sarebbe notevolmente pi�u complicata delnecessario��
Per costruire analizzatori sintattico�semantici integrati a discesa ricorsiva si pre�ferisce allora usare per questo tipo di linguaggi grammatiche in forma b�n�f� estesa come ad esempio la seguente grammatica G��
G� �
���������
S � D �orD��
D� C �and C��
C � not� AA� p j q j r j ��� S ���
G� �e LL���� Per la produzione S � D �orD���G�orD�
TS��orD��� � forg
Tf�� �g � ��
Per la produzione D � C �and C���
��
G� and C�TS��andD��� � fandg
Tf�� �g � ��
La condizione di determinismo LL��� �e banalmente veri�cata dalle altre produ�zioni�
La procedura sintattica per S �e�
procedure S�D�while cc �� or� do
cc �� PROSSIMO�D�
enddo�if cc �� f�� �g then ERRORE endifend S�
La procedura sintattica per D �e�
procedure D�C�while cc �� and� do
cc �� PROSSIMO�C�
enddo�if cc �� f�� �g then ERRORE endifend D�
La procedura sintattica per C �e�
procedure C�while cc �� not� do
cc �� PROSSIMO�enddo�A�end C�
Lasciamo al lettore il completamento dell�analizzatore discendente con la proce�dura per il nonterminale A�
��
��� Esercizio
Data la grammatica�
G �
�S � SB j bB j �B � dS j SBe
�� Si eliminino le ricorsioni sinistre trasformandole in ricorsioni destre�
�� Detta G� la grammatica equivalente a G cos�� ottenuta se ne calcolino gli insiemiguida veri�cando se essa �e LL�
Soluzione ���
Nella grammatica vi sono due ricorsioni sinistre S � SB e B�� Be� Per elimi�
nare le ricorsioni sinistre bisogna ricorrere all�algoritmo descritto in �Hopcroft ���� �Conviene evitare di avere ��regole associate al non�terminale di cui si deve elimi�
nare la ricorsione sinistra allo scopo di ridurre il numero di passi richiesto dall�al�goritmo� Per questo si introduce un nuovo simbolo S� che manterr�a inalterato illinguaggio eliminando la produzione critica� La grammatica diventer�a�
G �
�����
S� � S j �S � SB j bB j BB � dS j d j SBe j Be
L�algoritmo opera nella maniera seguente� Siano A� A�� j A�� j � � � j A�n dovenessun �i o �j�e annullabile le alternative immediatamente ricorsive a sinistra di A esiano A� �� j �� j � � � j �m le rimanenti alternative per A�
Introducendo un nuovo non�terminale A� e scrivendo le seguenti regole�
A� ��A� j ��A� j � � � j �mA�
A� � ��A� j ��A
� j � � � j �nA� j �
si ottiene la grammatica equivalente ricorsiva a destra nel non�terminale A� �la��produzione non crea problemi perch�e A� non pu�o essere ricorsivo a sinistra�� Sipossono quindi eliminare tutte le ricorsioni sinistre immediate� Le ricorsioni sinistrenon immediate vengono poi eliminate con lo stesso procedimento trasformandoledapprima in immediate�
Applichiamo separatamente l�algoritmo sopra illustrato ai due non�terminali S eB aggiungendo due non�terminali S � e B�� Otteniamo G��
G� �
���������������
S� � S j �S � bBS � j BS �
S � � BS � j �B � dSB� j dB� j SBeB�
B� � eB� j �
��
In G� compare ancora una ricorsione sinistra nel termine B� B � SBeB� �BS �BeB�� Per eliminare anche questa ricorsione si pu�o sostituire il termine S nellaproduzione critica di B eliminandola senza alterare il linguaggio� Si ottiene in questomodo una ulteriore produzione immediatamente ricorsiva a sinistra che si pu�o gestirecon il precedente algoritmo�
La produzione del non�terminale B sar�a�
B � dSB� j dB� j bBS �BeB� j BS �BeB�
Applicando l�algoritmo introduciamo un nuovo simbolo B�� ottenendo la gramma�tica�
G�� �
�������������������
S� � S j �S � bBS � j BS �
S � � BS � j �B � dSB�B�� j dB�B�� j bBS �BeB�B��
B� � eB� j �B�� � S �BeB�B�� �
Tutte le ricorsioni sinistre sono state eliminate�Per determinare se la grammatica �e LL��� costruiamo gli insiemi guida dei non�
terminali�
G�� �
�������������������
S� � Sfb� dg j �f�gS � bBS �fbg j BS �fb� dgS � � BS �fb� dg j �fb� d� e��gB � dSB�B��fdg j dB�B��fdg j bBS �BeB�B��fbgB� � eB�feg j �fb� d� egB�� � S �BeB�B�� �
Gli insiemi guida delle regole di produzione associate al non�terminale S �comeper i non�terminali S � B e B�� non hanno un�intersezione nulla quindi la grammaticanon �e di tipo LL����
��� Esercizio
Si de�nisca mediante una sintassi il linguaggio delle spezzate mostrate nella �gura ���L�alfabeto terminale �e costituito dai simboli� ! � f�����gLa spezzata si compone di segmenti crescenti orizzontali e decrescenti� ogni seg�
mento �e costituito da un numero intero di vettori unitari� Il primo segmento �e cre�scente� l�ultimo �e qualsiasi�
Tra un segmento crescente e uno decrescente vi pu�o essere un segmento orizzontaledi lunghezza arbitraria� La lunghezza di un segmento crescente �e maggiore o egualea quella del segmento decrescente successivo� Un segmento decrescente pu�o mancare�
��
Figure ��� Le spezzate del linguaggio L
�� Si veri�chi se la sintassi �e LL��� calcolando gli insiemi guida
�� Si cerchi di costruire una grammatica LL��� per il linguaggio� Qualora questonon sia possibile si modi�chi il linguaggio in modo tale da poter de�nire unagrammatica LL���
Soluzione ��
La grammatica si pu�o costruire passo passo� la spezzata si pu�o scomporre in uninsieme di segmenti ognuno caratterizzato da un tratto crescente seguito da un trattodecrescente con in mezzo eventualmente un tratto pianeggiante�
Il singolo segmento pu�o essere rappresentato dalle seguenti produzioni�
�A � � A j� A�j BB � � B j �
La sequenza di segmenti potr�a essere rappresentata dalla produzione�
S � AS j �
Inoltre il primo segmento deve iniziare con un tratto crescente per cui l�assiomadel linguaggio sar�a il non�terminale S� cui corrisponder�a la produzione�
S� � � S j� S �
La grammatica che descrive il linguaggio sar�a la seguente G�
G �
���������
S� � � S j� S �S � AS j �A � � A j� A�j BB � � B j �
La grammatica risulta ambigua� Infatti la stringa ��� ammette le due deriva�zioni S� � � S � � AS � � AAS � � AA � � BA � � BB � ��B � ��� e S� � � S � � A � � B � �� B � ��� B � ���
Un�altra sorgente di ambiguit�a �e generata dal fatto che se il numero di trattidecrescenti �e inferiore al numero di tratti crescenti vi sono diversi possibili modi
�
in cui le diverse produzioni di A possono essere utilizzate� Per eliminare la primaambiguit�a �e necessario distinguere il caso in cui una sequenza di tratti orizzontalicompare tra un tratto crescente e un tratto decrescente dal caso in cui non �e seguitada un tratto decrescente� Nel primo caso la sequenza verr�a generata dal non�terminaleB mentre nel secondo verr�a generata dal non�terminale S� La seconda ambiguit�a sirisolve introducendo un nuovo simbolo per A� La grammatica non ambigua che siottiene �e la seguente�
G� �
���������������
S� � � S j� S �S � A�S j� S j �A� � � A� j� A� �A� � � A� �j BB � � B j �
Calcolando gli insiemi guida associati ai vari non terminali si osserva come lagrammatica non sia LL���� Un tentativo di renderla LL��� applicando una fattoriz�zazione sinistra produce il seguente risultato�
G�� �
���������������
S� � � Sf�g��j ��f���gS � A�Sf�g j� Sf�g j �f�gA� � � A�f�g j� A� � f�gA� � � A� � f�g j Bf���gB � � Bf�g j �f�g
Tutti i non terminali tranne A� sono LL���� Il problema consiste nel valutare se �epossibile rendere A� LL���� Ci�o non �e possibile� Infatti se si analizza il linguaggio sivede come sia impossibile per il riconoscitore a discesa ricorsiva sapere se �e correttoscegliere la prima o la seconda produzione guardando solo l�elemento successivo� Pureun riconoscitore LL�k� non sar�a in grado di riconoscere il linguaggio� baster�a infattiprendere una stringa che contenga un segmento di lunghezza k � � per non essere ingrado di decidere quale delle due produzioni si debba scegliere�
Si pu�o rendere il linguaggio LL��� ad esempio imponendo che il numero di tratticrescenti sia pari al numero di tratti decrescenti� Questo corrisponde alla grammaticaLL��� seguente�
G��� �
���������������
S� � � SS �f�gS � � � f�g j �f�gS � � A� Sf�g j� Sf�g j �f�gA � � A� f�g j Bf���gB � � Bf�g j �f�g
Il riconoscitore a pila della grammatica LL��� �e caratterizzato dal seguente com�portamento �nella tabella sono sottointese le mosse di avanzamento testina quando ilterminale in ingresso �e identico al terminale sulla cima della pila��
��
Cima Carattere di ingressoPila � � � �
S� push S �S �S � push � push �S push S � A push S � push �A push � A� push B push BB push B � push �
��� Esercizi proposti
���� Esercizio
Veri�care se la grammatica G�
G �
�����
S � aSb j CC � aD j �D� cC
�e LL���� Nel caso negativo cercare di trasformarla in una grammatica LL equi�valente�
���� Esercizio
Si consideri l�insieme L delle sequenze degli eventi associati ad un insieme di operazionidi lettura e di scrittura secondo il modello di concorrenza tra processi noto comemodello dei lettori�scrittori� Pi�u lettori possono operare contemporaneamente maun solo scrittore pu�o essere attivo e soltanto se non vi sono lettori attivi� Inoltre ognilettura deve �nire e cos�� ogni scrittura� In�ne una lettura o scrittura non pu�o �nirese non �e iniziata� Si indichino gli eventi con i seguenti simboli terminali�
il inizio lettura
� �ne lettura
is inizio scrittura
fs �ne scrittura
Ad� es� sono valide le stringhe�
il il f l il f l f l� il il f l f l is fs is fs il f l
mentre sono scorrette le stringhe�
il is fs il f l f l� is fs is il f l fs� il f l il� fs il f l
�
�� Si costruisca una grammatica G BNF�estesa per L e si traccino i diagrammisintattici�
�� Si veri�chi se G �e LL��� calcolando gli insiemi guida�
�� Se necessario si modi�chi G in modo da renderla LL���� Si scrivano almeno inparte le procedure sintattiche dell�analizzatore a discesa ricorsiva�
� Analisi sintattica ascendente
��� Esercizio
Costruire un automa a spostamento e riduzione LR�� per la seguente grammatica�
G �
�����
S � aTb j cT � DSb j cD� a
Si illustri il funzionamento del riconoscitore sulla stringa acb�
Soluzione ���
Costruiamo direttamente il riconoscitore dei pre�ssi ascendenti LR�� in formadeterministica� Si aggiunge alla grammatica G la produzione S� � S �� Lo statoI� in questo caso contiene una candidata di spostamento per ogni produzione manessuna candidata di riduzione non essendoci ��produzioni�
I� contiene pertanto le candidate�
I�
�����
S� � �S �S � �aTbS � �c
L�automa viene costruito a partire da I� considerando tutte le possibili mosse costituite da terminali o non terminali che possono provocare uno spostamento� Ite�rando il procedimento ai nuovi stati cos�� ottenuti si costruisce l�automa costituito datutti e soli gli stati raggiungibili da I��
Ad esempio da I� ci possono essere solo tre mosse che possono provocare unospostamento in quanto ci sono solo tre caratteri distinti immediatamente a destra diun �� a� c� S�
Con un arco etichettato S possiamo perci�o andare in uno stato I� che contienesolo la candidata di spostamento S� � S� �� Con un arco etichettato a �analo�gamente per c� possiamo andare in uno stato I� con le seguenti candidate �tutte dispostamento��
��
S0 -> S^/
S
S0 -> ^S/
a
I1
I2I0
S->^cT -> ^c
S ->a^Tb
D -> ^a
S ->^ aTb T ->^DSb
Figure ��� Costruzione dell�automa riconoscitore dei pre�ssi ascendenti per l�eserci�zio ����
I�
���������
S � a � TbT � �DSbT � �cD� �a
Le candidate T � �DSb T � �c e D � �a devono essere riportate in I� inquanto la candidata S � a � Tb ottenuta da I� ha un T immediatamente a destradi un �� Inoltre la candidata in I� T � �DSb ha un D immediatamente a destra diun �� Si veda la �gura ���
Iterando il procedimento si ottiene l�automa riportato in �gura ��� Quando unostato �e di riduzione non si deve pi�u continuare a espanderlo e lo si marca opportun�amente�
Automa LR��� a spostamento e riduzioneLa riduzione di una produzione X � x per il riconoscitore LR�� consiste nelle
seguenti mosse�
� Non leggere l�ingresso ���mossa��
� Togli i primi �� j x j simboli in cima alla pila�
� Se I �e lo stato in cima alla pila allora push�X� e push��I�X�� dove �e lafunzione di transizione dell�automa riconoscitore dei pre�ssi ascendenti LR���
Lo spostamento di un simbolo I consiste nelle seguenti mosse�
� Consuma il simbolo z in ingresso�
� Non togliere simboli dalla pila�
��
S0 -> S^/ S0 -> S/^
S
/
S0 -> ^S/
a
I3I1
I2
I4
I5 I7
I8
b
T -> c^
T
I9
I10
b
I0
S -> c^
c
S->^cT -> ^c
I6
a
D
S ->a^Tb
D -> ^a
D->a^
S -> aT^b S -> aTb^
S ->^ aTb
I11
T ->^DSb
a
T -> D^Sb
S -> ^aTb
T -> DS^b
S -> ^c
S
c
T -> DSb^
Figure ��� L�automa riconoscitore dei pre�ssi ascendenti LR�� per l�esercizio ����
��
Cima Carattere di ingressoPila a b c � �
I� Sposta I� Sposta I��I� Sposta I�I� Sposta I� Sposta I�I� accettaI� riduci D � aI� Sposta I�I riduci T � DSbI� riduci S � aTbI� riduci T � cI Sposta I� Sposta I��I�� Sposta II�� riduci S � c
Table �� L�automa a spostamento e riduzione per l�esercizio ���� Per l�esecuzione dellemosse di riduzione l�automa considera la funzione di transizione de�nita dall�automadi �gura ���
� push�z� e push�I��
La accettazione avviene quando non ci sono pi�u simboli sul nastro di ingresso esulla pila c��e il solo stato corrispondente alla candidata di riduzione S� � S � ��
L�analizzatore parte con I� sulla pila e la frase da riconoscere sul nastro di ingresso�Durante il funzionamento l�analizzatore esegue azioni di spostamento e di riduzione salvando o eliminando dalla cima della pila l�appropriata sequenza di identi�catoridello stato dell�automa riconoscitore dei pre�ssi ascendenti intervallati con gli oppor�tuni simboli terminali e non terminali che costituiscono il pre�sso corrente� L�automaa pila a spostamento e riduzione LR�� �e descritto dalla Tabella ��
Il funzionamento dell�automa sulla frase acb �e riportato nella Tabella ��Tradizionalmente la tabella per l�analizzatore a spostamento e riduzione �e com�
pletata da una seconda sezione detta parte �goto�� In essa vengono rappresentatele transizioni del riconoscitore dei pre�ssi ascendenti che sono marcate con un nonterminale �e che quindi non corrispondono a un carattere in ingresso� allo scopo didare una rappresentazione completa in una sola tabella dell�automa a spostamento eriduzione e del riconoscitore dei pre�ssi ascendenti� L�analizzatore ha infatti bisognodi conoscere la funzione di transizione del riconoscitore per potere eseguire corret�tamente le mosse di riduzione� Riportiamo in Tabella � questa versione a titolo diesempio�
��
Pila Nastro di ingresso azioneI� a c b � sposta I�I� a I� c b � sposta I�I� a I� c I� b � riduci T � cI� a I� T I� b � sposta I�I� a I� T I� b I� � riduci S � aTbI� S I� � I� � riduci S� � S � �accetta�
Table �� Traccia del funzionamento dell�automa di Tabella � sulla stringa acb�
Cima Carattere di ingresso Parte GotoPila a b c � � S T D
I� I� I�� I�I� I�I� I� I� I� II� accettaI� riduci D � aI� I�I riduci T � DSbI� riduci S � aTbI� riduci T � cI I� I�� I��I�� II�� riduci S � c
Table �� Rappresentazione sintetica dell�analizzatore ascendente per l�esercizio ����
��
a
bi
B -> ^i
B -> ^i
I5
A
B b S -> aBb
I1
I2
I6
S
i
/
S0 -> ^S/
S0 -> S^/ S0 ->S^/
I13
S -> ^aAa
S -> ^aBb
S -> ^bBa A -> ^i
S -> a^Bb
S -> a^Aa
S -> b^Ab
S -> b^Ba
A -> ^i
a
I3
S -> aAa^
I4
S -> aA^a
S -> aB^b
I7
adeguato per
analisi LR(0)
S -> ^iAi
I0
S -> i^Ai
S -> ^bAb
Ai
A -> i^S -> iA^i
i
S -> iAi^
S -> i^Ai
A -> ^ii
A
b a
B
S -> bB^a
I9 I10
I11 I12
S -> bA^b
S -> bAb^ S -> bBa^
stato I8 non
I8
A -> i^
B -> i^
I14
I15 I16
I17
Figure ��� L�automa riconoscitore dei pre�ssi ascendenti LR�� dell�esercizio ����
��� Esercizio
Veri�care se la seguente grammatica
G �
�����
S � iAi j aAa j bAb j aBb j bBaB � iA� i
�e LR�� SLR��� LALR��� LR���� Si costruisca inoltre l�automa a spostamentoe riduzione per L�G� guidato dal riconoscitore dei pre�ssi ascendenti LR��� e se neillustri il funzionamento sulla frase aib��
Soluzione ���
L�automa riconoscitore dei pre�ssi ascendenti LR�� �e riportato in �gura ���L�automa risultante �e per�o inadeguato per l�analisi LR��� infatti nello stato I�
ci sono due candidate di riduzione �un automa a spostamento e riduzione guidato
��
dal riconoscitore dei pre�ssi ascendenti non potrebbe essere deterministico in quantoaltrimenti giunto nella situazione I� non saprebbe quale mossa di riduzione scegliere��
Analisi SLR����Si considera ancora il riconoscitore LR�� ma si calcola l�insieme dei seguiti di
X per ogni produzione X � � per le candidate di riduzione X � �� negli statiinadeguati� L�insieme cos�� calcolato �e usato dal riconoscitore SLR��� come insieme diprospezione per ciascuna candidata di riduzione�
Per lo stato I� dobbiamo calcolare i due insiemi� SLR�A � i� � S�A� � fx �! j S �
destra �Axz con z � !� e � � �!SVN��g � fa� b� ig �A compare nella parte
destra solo per le produzioni S � iAi j aAa j bAb��SLR�B � i� � fa� bgLa marca �nale � in questo caso non appartiene a nessuno dei due insiemi �in ge�
nerale va esplicitamente considerata inserendola nell�insieme di prospezione qualoraxz � ���
La prima condizione di adeguatezza SLR��� �e che non ci siano candidate di sposta�mento del tipo X � ��c con c � SLR�A� i�
SSLR�B � i�� Questa �e banalmente
veri�cata in quanto non ci sono candidate di spostamento in I�� La seconda condi�zione vale a dire che gli insiemi di prospezione delle varie candidate di riduzione sianodisgiunti non �e per�o veri�cata e pertanto la grammatica non �e adeguata per l�analisiSLR����
Analisi LALR���� Nell�analisi LALR��� si considera ancora il riconoscitore deipre�ssi ascendenti LR�� e si esaminano solo gli stati inadeguati allo stesso mododell�analisi SLR��� ma l�insieme dei seguiti per ogni candidata di riduzione vienecalcolato tenendo conto anche del cammino dallo stato iniziale che deve portareproprio allo stato inadeguato� L�insieme di prospezione in generale non dipende solodalla candidata o dalla sua parte sinistra ma anche dal modo in cui si �e arrivati aconsiderare la candidata� In formule l�insieme di prospezione per la candidata A� i�nello stato I� �e de�nito come�
LALR�I�� A � i� � fx � ! j S �destra �Axz �ixz� con �I�� �i� � I�g �
fa� bg�In questo caso semplice possiamo utilizzare direttamente la de�nizione� Infatti ci
sono le derivazioni�S aAa aia con �I�� ai� � I�S bAb bib con �I�� bi� � I�mentre la derivazione S iAi iii ha il pre�sso i che non porta in I�� �I�� ai� �
I���Analogamente LALR�I�� B � i� � fa� bg�Nonostante l�analisi LALR sia risultata pi�u ra�nata dell�analisi SLR poich�e il
terminale i fa parte dell�insieme SLR�A� i� ma non di LALR�I�� A� i� la gram�matica non �e nemmeno LALR� La condizione di adeguatezza per LALR��� �e che gliinsiemi di prospezione delle varie candidate di riduzione siano disgiunti e che inoltreLALR�I�� A � i�
Tfc j �I�� c� �e de�nito g � �� Quest�ultima parte �e banalmente
��
veri�cata in quanto non ci sono candidate di spostamento in I� e pertanto non ci sononemmeno archi uscenti da I� ma la prima parte non lo �e e pertanto la grammaticanon �e adeguata per l�analisi LALR����
Analisi LR����Nell�analisi LR��� si deve tenere conto nella costruzione dell�automa riconosci�
tore dei pre�ssi ascendenti anche degli insiemi di prospezione associati a ciascunacandidata� La stessa candidata pu�o presentarsi in uno stesso stato con insiemi diprospezione diversi� in generale l�automa a stati �niti cos�� ottenuto ha un numero distati molto maggiore di quello dell�automa LR�� per la stessa grammatica�
L�insieme di prospezione �e de�nito come per LALR��� ma il metodo LR��� sidi�erenzia da LALR��� poich�e gli insiemi di prospezione sono usati anche per costruirel�automa riconoscitore dei pre�ssi ascendenti�
La costruzione dell�automa procede dallo stato I� che contiene le candidate�
I�
�������������������
S� � S �S � �aAaf�gS � �bAbf�gS � �iAif�gS � �aBbf�gS � �bBaf�g
Si procede come per l�automa LR�� ma di�erenziando gli stati anche a secondadegli insiemi di prospezione delle candidate� Non conviene utilizzare la de�nizionedell�insieme di prospezione ma le usuali regole di calcolo in forma deterministica�
Ad esempio un arco uscente da I� marcato a deve portare in uno stato I� �quindi�I�� a� � I�� in cui ci sono le due candidate�
I�
�S � a � Aaf�gS � a �Bbf�g
In I� dobbiamo per�o considerare anche le candidate A� �i e B � �i� Poich�e lacandidata A � �i deriva dalla candidata S � a � Aaf�g l�insieme di prospezione�e costituito dal simbolo a destra della A nella candidata cio�e il solo a �la marca �non fa parte dell�insieme per A� �i in quanto a non pu�o andare in ���
Analogamente l�insieme di prospezione per B � �i �e costituito dal solo simboloterminale b in quanto la candidata �e stata ricavata da S � a �Bbf�g�
L�automa risultante �e riportato in �gura ���Si osservi che ora lo stato I� del riconoscitore LR�� viene distinto nell�automa
LR��� nei due stati I� e I� che sono entrambi adeguati per LR��� in quanto inentrambi i casi gli insiemi di prospezione delle candidate di riduzione sono disgiunti�L�analisi LALR��� non aveva permesso questa distinzione in quanto considerava ilriconoscitore LR���
Costruzione automa a spostamento e riduzione LR���� Costruiamo ora l�automaa spostamento e riduzione guidato dal riconoscitore dei pre�ssi ascendenti LR����
�
Ai
i
I16 I17
I18
I15
i
S -> i^Ai {/}
A -> ^i {i}
S -> iA^i {/} A -> i^ {i}
S -> iAi^ {/}
a
bi
B -> ^i
B -> ^i
A
b a
B
S -> ^aAa {/}
S -> ^aBb {/}
S -> ^bBa {/}
S -> a^Aa {/}
S -> a^Bb {/}
A -> ^i {a}
{b}
I5
B S -> aB^b {/} b S -> aBb {/}
S -> b^Ab {/}
S -> b^Ba {/}
A -> ^i {b}
{a} i {b}
{a}
{a}
{b}
A -> i^
B -> i^
S -> bA^b {/}
S -> bAb^ {/}
S -> bB^a {/}
S -> bBa^ {/}
I1
I2
I6
I7
I9 I10
I11 I12
I13 I14S
S0 -> S/
S0 -> ^S/
I8
A -> i^
B -> i^
S0 -> S^/ /
S -> ^bAb {/}
S ->^ iAi {/}
I0
A S -> aA^a {/} a S -> aAa^ (/}
I3 I4
Figure ��� L�automa riconoscitore dei pre�ssi ascendenti LR��� dell�esercizio ����
��
L�alfabeto della pila �e costituito dai simboli I� � � � I�� e dall�alfabeto terminale e non�terminale della grammatica� L�automa a pila parte con il solo I� sulla pila e la frase dariconoscere sul nastro di ingresso� Durante il funzionamento l�automa esegue azioni dispostamento e di riduzione salvando o eliminando dalla cima della pila l�appropriatoidenti�catore dello stato dell�automa riconoscitore dei pre�ssi ascendenti� L�automa�e in grado di leggere un simbolo in ingresso sensa consumarlo cio�e senza avanzare latestina di lettura�
La mossa di riduzione di una produzione X � x consiste nelle seguenti mosseelementari�
� Non consumare l�ingresso �non �e una vera ��mossa poich�e l�ingresso viene co�munque letto anche se non consumato per potere decidere quale candidataridurre negli stati inadeguati��
� Togli i primi �� j x j simboli in cima alla pila�
� Se I �e lo stato in cima alla pila allora push�X� e push��I�X���
Lo spostamento di un simbolo I consiste nelle seguenti mosse�
� Non togliere simboli dalla pila�
� Consuma un simbolo z dall�ingresso�
� push�z� e push�I��
La accettazione avviene quando non ci sono pi�u simboli sul nastro di ingresso esulla pila c��e il solo stato corrispondente alla candidata di riduzione S� � S � �� Aquesto �ne quando l�automa trova I�� in cima alla pila e�ettua una ��transizione inmodo da svuotare la pila�
�E anche possibile accettare quando il prossimo simbolo in ingresso �e la marca �e ci si trova nello stato corrispondente alla candidata di spostamento S� � S� ��
L�automa a pila a spostamento e riduzione LR��� �e descritto dalla Tabella ��Una traccia di funzionamento dell�automa sull�ingresso aib � �e riportato in Ta�
bella ��
��� Esercizio
Si veri�chi se la grammatica G� dell�esercizio ��� �e adeguata per l�analisi LR�� oSLR����
G� �
���������
S � D or S j DD � C andD j CC � not C j AA� p j q j r
�
Cima Carattere di ingressoPila a b i � �
I� Sposta I� Sposta I�I� Sposta I�I� Sposta I�I� Sposta I�I� riduci S � aAaI� Sposta II riduci S � aBbI� riduci B � i riduci A� iI� riduci A� i riduci B � iI Sposta I�I�� Sposta I�I�� riduci S � bAbI�� riduci S � bBaI�� Sposta I��I�� accettaI�� Sposta I��I� Sposta I��I�� Riduci A� iI�� Riduci S � iAi
Table �� L�automa a spostamento e riduzione LR��� dell�esercizio ����
Pila Nastro di ingresso azioneI� a i b � sposta I�I� a I� i b � sposta I�I� a I� i I� b � riduci B � iI� a I� B I� b � sposta II� a I� B I� b I � riduci S � aBbI� S I�� � I�� � accetta
Table �� Traccia del funzionamento dell�automa di Tabella � sulla stringa aib�
��
S -> ^D or S
S-> ^D
D -> ^ C and DD -> ^ C
C -> ^ A
A -> ^p
A -> ^q
A -> ^r
I0
D
S -> D ^ or S
S -> D ^
I1
C -> ^ not C
Figure ��� Un frammento dell�automa riconoscitore dei pre�ssi ascendenti per l�eser�cizio ����
Soluzione ���
La grammatica non �e adeguata per l�analisi LR��� Per veri�carlo non �e necessariocostruire l�intero automa riconoscitore dei pre�ssi ascendenti ma basta semplicementenotare la presenza delle due produzioni S � D or S e S � D� Il riconoscitore deipre�ssi ascendenti sar�a costituito fra l�altro di uno stato iniziale I� e uno stato I� con I� raggiungibile da I� tramite un arco marcato D� Lo stato I� non �e adeguatoper l�analisi LR�� in quanto contiene la candidata di spostamento S � D� or Se la candidata di riduzione S � D�� Si veda la �gura ��� Per ovviare a questoinconveniente le grammatiche del tipo di G� sono di solito analizzate con metodiSLR o LALR�
La veri�ca se la grammatica �e SLR��� �e molto facile� Lasciamo al lettore lacostruzione del riconoscitore completo LR�� dopo avere aggiunto come di consuetola produzione S� � S �� Dal riconoscitore si pu�o facilmente vedere che gli unicistati inadeguati per LR�� sono i seguenti�
�� Stato con la candidata di spostamento S � D� orS e la candidata di riduzioneS � D��
�� Stato con la candidata di spostamento D� C�andD e la candidata di riduzioneD� C��
Nel caso ��� l�insieme dei seguiti della candidata di riduzione �e f�g� la condizioneSLR��� �e veri�cata in quanto la candidata di spostamento �e S � D� or S conor �� f�g� Nel caso ��� l�insieme dei seguiti della candidata di riduzione �e for��g�la condizione SLR��� �e pure veri�cata in quanto la candidata di spostamento �e D�C� andD con and �� for��g�
��
a
SS0 -> S/
S0 -> ^S/
S0 -> S^/ /
I0I6
I3 I4
S
T
c
b
I1
S -> aSc^
T -> aTb
I5
T
a
I7 I8
I9
S -> ^aSc
S -> ^T
T -> ^aTb {/}
T-> ^
S -> T^
S -> a^Sc
T -> a^Tb S -> ^T S -> ^aSc T-> ^
T -> ^aTbT -> aT^b S -> T^
S -> aS^c
^
Figure �� L�automa riconoscitore dei pre�ssi ascendenti LR�� per l�esercizio ����
��� Esercizio
Si consideri il linguaggio L � fanbpcq j n � � n � p � qg dell�Esercizio ��� e siveri�chi se �e LR�� o LR����
Soluzione ���
La grammatica G data nella Soluzione dell�Esercizio ����
G �
�S � aSc j TT � aTb j �
non �e LR�� come si pu�o facilmente veri�care dall�automa riconoscitore mostratoin Figura � e non �e nemmeno SLR� La grammatica �e tuttavia LR��� come si vededal riconoscitore dei pre�ssi ascendenti LR��� di Figura ���
Dalla �gura si pu�o facilmente notare che G �e anche LALR���� basta accorparegli stati con le stesse candidate cio�e I� con I� I� con I� I� con I I� con I� eI con I��� gli insiemi di prospezione cos�i ricavati sono adeguati per LALR���� Gliinsiemi possono essere ricavati anche in base alla de�nizione di LALR��� riportatanell�esercizio ��� a partire dall�automa riconoscitore LR���
In I� l�insieme di prospezione LALR��� per T �� �e f�g� Infatti l�unica deriva�zione destra del tipo S�
� �Tz tale che �I�� �� � I� �e la derivazione� S� S � T � �perch�e il pre�sso � deve essere uguale a � se si vuole che �I�� �� � I���
In I� l�insieme di prospezione LALR��� per T �� �e fb� cg perch�e le derivazionidestre che portano in I� devono generare una frase del tipo a�Tz e sono quindi diuno dei due tipi seguenti�
S� � apScp � apTcp �
��
a
SS0 -> S/
S0 -> ^S/
S0 -> S^/ /
I0
S -> ^aSc {/}
S -> ^T {/}
T -> ^aTb {/}
T-> ^ {/}
S
T
c
b
{/}
I6
(/}
I3 I4
S
T
S -> aS^c {/} c
bT -> aT^b {/}
I7 I8
I11 I12
S -> a^Sc {/}
T -> a^Tb {/}
a
I1
S -> a^Sc {c}
a
I2
S -> aS^c {c} S -> aSc^ {c}
S -> aSc^
T -> aTb
I5
S -> T^ {/}
I13
T
S -> T^ {c}T-> ^ {b,c}
S -> ^T {c}
S -> ^aSc {c}
T -> ^aTb {b,c}
T-> ^ {b,c}
T -> ^aTb {b,c}
S -> ^aSc {c}
S -> ^T {c}
T -> a^Tb {b,c}
S -> T^ {c}
T -> aT^b {b,c}T -> aTb ^ {b,c}
I10
I9
Figure ��� L�automa riconoscitore dei pre�ssi ascendenti LR��� per l�esercizio ����
��
S� � apTcp � � apaqTbqcq �
In�ne nell�ultimo stato inadeguato I� la candidata di riduzione S � T � ha comeinsieme di prospezione LALR��� fcg poich�e le derivazioni destre che da I� portanoin I� devono generare una frase del tipo a � Sz e sono quindi tutte del tipo�
S� � apScp �
Si osservi che sia la grammatica G che il linguaggio L non sono LL�k� per nessunk ma che tuttavia la grammatica �e LR���� Infatti la classe dei linguaggi LR��� �e pi�uampia di quella che contiene i linguaggi LL�k��
Si pu�o addirittura costruire una versione pi�u complicata di grammatica per Lche �e anche LR��� Questo non �sorprendente visto che la classe dei linguaggi LR���coincide con la classe dei linguaggi deterministici mentre LR�� coincide con la classedei linguaggi deterministici per i quali nessuna frase �e pre�sso proprio di un�altrafrase� usando una marca di �ne stringa che non compare nell�alfabeto terminale ledue classi vengono di fatto a coincidere� Nonostante questo una grammatica LR���pu�o non essere LR�� come in questo caso� La trasformazione in LR�� �e per�o semprepossibile nell�ipotesi di considerare una marca di �ne stringa ed essendo disposti adaccettare una grammatica pi�u complicata e meno intuitiva�
Una grammatica LR�� per L �e la seguente G��
G� �
�����
S� � S �j�j T �S � aSc j ac j aTcT � aTb j ab
La veri�ca che la grammatica G� �e LR�� �e lasciata al lettore� Rispetto a G G�
�e LR�� in quanto non contiene le due produzioni S � T e T � � la cui presenzaporta a costruire per G alcuni stati inadeguati�
��� Esercizi proposti
����� Esercizio
Sia data la sintassi�
G �
�S � aAcA� bAb j b
Si veri�chi se G �e LR��� e se necessario si costruisca una sintassi equivalenteLR�� o LR���� Si progetti un analizzatore ascendente per G�
��
����� Esercizio
Per ciascuna delle seguenti grammatiche si veri�chi se la grammatica �e LR�� SLR��� LALR��� LR����
G� �
�S � aAaa j bAbaA� b j �
G� �
���������
S � X �X � bA j aBA� a j aX j bAAB � b j bX j aBB
Si mostri inoltre una traccia del calcolo svolto da un analizzatore ascendente suuna stringa a scelta�
� Traduzioni sintattiche
��� Esercizio
Si costruisca uno schema di traduzione semplice per calcolare la traduzione�
���a�nc�b�n� � dbn��cen con n �
Descrivere un trasduttore a pila deterministico che esegue la traduzione usandola tecnica LL��� e la tecnica LR�� e un trasduttore ricorsivo discendente�
Soluzione ��
La sintassi sorgente deve generare il linguaggio L � f�a�nc�b�n j n � g� Lagrammatica pi�u ovvia per questo �e la seguente�
G� �nS � aSb j c
Lo schema di traduzione potrebbe allora scrivere una d per ogni coppia di a e unae per ogni b� Non si pu�o per�o ricavare una sintassi pozzo a partire da G� in quantooccorre distinguere i due casi� quando si genera una a e non si scrivono d e quandosi genera una coppia di a e si scrive una d in uscita�
Questo pu�o essere ottenuto semplicemente con il seguente schema di traduzione�
Gt �nS � aafdgSbbfeeg j acbfeg j c
Ad esempio ��aaacbbb� � deee �e cos�� ottenuta�Sorgente� S aaSbb aaacbbb�Pozzo� S dSee deee�La grammatica non �e LL���� La si pu�o rendere LL��� ad esempio in questo modo�
��
G�t �
�S � aTbfeg j cT � afdgSbfeg j c
Ad esempio ��aacbb� � dee �e cos�� ottenuta�Sorgente� S aTb aaTbb aacbb�Pozzo� S Te dTee dee�Lo schema di traduzione �e chiaramente deterministico in quanto la grammatica
sorgente �e addirittura LL���� Infatti�
G�S � aTb� � fag
G�S � c� � fcg
G�T � aSb� � fag
G�T � c� � fcg
L�automa a pila che implementa la traduzione si ottiene facilmente dall�automariconoscitore LL��� aggiungendo opportune azioni di emissione� Il risultato �e riportatonella tabella seguente�
Cima Carattere di ingressoPila a b c
S push�fegbTa� push�c�T push�afegSbfdg� push�c�a avanzab avanzac avanzafeg emetti e emetti e emetti efdg emetti d emetti d emetti d
Analogamente per il trasduttore ricorsivo discendente�
procedure S�if cc � fag then cc�� PROSSIMO�
T�if cc �� �b� then ERRORE else cc �� PROSSIMO endif�EMETTI��e���
elsif cc � fcg then cc �� PROSSIMOelse ERRORE
endifend S�
��
procedure T�if cc � fag then cc�� PROSSIMO�
EMETTI��d���S�if cc �� �b� then ERRORE else cc �� PROSSIMO endif�EMETTI��e���
elsif cc � fcg then cc �� PROSSIMOelse ERRORE
endifend T�
Per potere costruire un traduttore con tecnica LR�� occorre portare la gram�matica pozzo in forma post�ssa� In questo caso si pu�o introdurre un nonterminaleD da usare al posto di fdg nello schema di traduzione� Per non rendere la gram�matica inadeguata per l�analisi LR�� evitiamo l�introduzione di ��produzioni �comesuccederebbe per la grammatica sorgente se si aggiungesse la produzione D � fdg��Conviene allora usare D per generare una a nella grammatica sorgente e una d inquella pozzo� Lo schema di traduzione risultante �e il seguente�
G�t �
�����
S � aTbfeg j cT � DSbfeg j cD � afdg
Lo schema LR�� �che �e lo stesso dell�esercizio ���� �e riportato in �gura ��Il trasduttore a spostamento e riduzione basato sul riconoscitore LR�� si ottiene
facilmente dall�automa a spostamento e riduzione dell�esercizio ��� aggiungendo op�portune azioni di emissione da eseguire durante le riduzioni� Si veda la Tabella ��
��� Esercizio
Si costruisca uno schema di traduzione semplice per calcolare la traduzione� ��x� �xRx con x � fa� bg�� Tracciare poi lo schema di un trasduttore a pila che esegua latraduzione� �E possibile costruire un trasduttore deterministico#
Soluzione ��
Notiamo innanzitutto che ��xxR� � xR si pu�o de�nire banalmente�
Gt� �nS � aSafag j bSbfbg j �
Inoltre ��xxR� � x �e ottenibile con il seguente schema�
Gt� �nS � fagaSa j fbgbSb j �
�
S0 -> S^/ S0 -> S/^
S
/
S0 -> ^S/
a
I3I1
I2
I4
I5 I7
I8
b
T -> c^
T
I9
I10
b
I0
S -> c^
c
S->^cT -> ^c
I6
a
D
S ->a^Tb
D -> ^a
D->a^
S -> aT^b S -> aTb^
S ->^ aTb
I11
T ->^DSb
a
T -> D^Sb
S -> ^aTb
T -> DS^b
e
e
ed
e
e e
e
e
e
S -> ^c
S
c
T -> DSb^
Figure �� L�automa riconoscitore dei pre�ssi ascendenti LR�� per l�esercizio ����I caratteri della grammatica pozzo da emettere al momento di una riduzione sonosegnati in grassetto�
��
Cima Carattere di ingressoPila a b c � �
I� Sposta I� Sposta I��I� Sposta I�I� Sposta I� Sposta I�I� accettaI� riduci D� a
emetti dI� Sposta I�I riduci T � DSb
emetti eI� riduci S � aTb
emetti eI� riduci T � cI Sposta I� Sposta I��I�� Sposta I�I�� riduci S � c
Table �� Il trasduttore a spostamento e riduzione dell�esercizio ����
Per ottenere la traduzione desiderata basta a questo punto combinare questetraduzioni in modo opportuno�
Lo schema di traduzione risultante �e il seguente�
Gt �nS � fagSafag j fbgSbfbg j �
Un esempio di derivazione �e�Sorgente� S Sa Sba Sbba Sbbba bbba�Pozzo� S aSa abSba abbSbba abbbSbbba abbbbbba�Un trasduttore a pila per la � si pu�o costruire sfruttando il nondeterminismo�
Prima di cominciare a leggere l�automa �indovina� con una serie di ��mosse il ri�essoxR della stringa da riconoscere lo emette e lo impila� Questo �e possibile in quanto sipu�o costruire un automa che ad ogni passo sceglie nondeterministicamente se emetteree impilare il carattere a oppure il carattere b oppure cominciare a leggere l�ingresso�A un certo punto l�automa comincia a leggere la stringa in ingresso emettendolain uscita e confrontandola con la stringa salvata sulla pila� Se le due stringhe sonouna il ri�esso dell�altra allora l�automa accetta e quindi la stringa xRx �e il risultatodella traduzione dell�ingresso x� Se invece l�automa non accetta i caratteri emessinon fanno parte della traduzione in quanto per stabilire il risultato della traduzione la de�nizione di trasduttore non considera le computazioni fallite�
�
Stato � Ingressocima pila � a b
q�� Z� �q�� A� a��q�� B� b��q�� �� ��
q�� A �q�� AA� a��q�� AB� b��q�� A� ��
q�� B �q�� AA� a��q�� AB� b��q�� B� ��
q�� A �q�� �� a�q�� B �q�� �� b�
Table �� La funzione di transizione di un trasduttore a pila che calcola ��x� � xRx per l�esercizio ����
La de�nizione dell�automa trasduttore pu�o essere cos�i precisata� Sia Z� il simboloiniziale della pila� l�alfabeto di ingresso �e fa� bg quello della pila fZ�� A� Bg� L�insiemedi stato �e fq�� q�g� L�automa accetta quando la pila �e vuota e il nastro di ingresso �evuoto� Il risultato della traduzione della stringa di ingresso �e de�nito come l�insiemedelle stringhe emesse durante computazioni che portano ad accettazione �in questocaso per ogni ingresso ci sar�a una e una sola computazione che porta ad accettazione e pertanto il risultato della trasduzione sar�a una stringa e non un insieme di stringhe��
La funzione di transizione dell�automa �e descritta nella Tabella � in cui sulle righesono riportate solo le coppie �stato simbolo in cima alla pila� per le quali la funzione�e de�nita per almeno un valore dell�ingresso� Poich�e l�automa �e non deterministico in una stessa con�gurazione sono possibili pi�u mosse riportate nella stessa cella dellatabella� Ogni mossa �e rappresentata da una tripla �stato stringa da impilare stringadi uscita�� L�automa esegue una pop ad ogni passo cambia di stato esegue una pushdella stringa da impilare ed emette la stringa di uscita�
�E facile comprendere che nessun automa a pila deterministico �e in grado di eseguirequesta traduzione�
��� Esercizio
Si costruisca uno schema di traduzione �nito per calcolare la traduzione� ��x� �e la fun�zione identit�a �no alla prima occorrenza da sinistra della stringa aba in x restituiscec per questa prima occorrenza �e ancora la funzione identit�a dopo l�occorrenza�
Ad esempio ��aab� � aab ��aba� � c ��aabbabababa� � aabbcbaba�
��
Stato ingressoa b �
q� �q�� �� �q�� b�q� �q�� a� �q�� �� �q�� a�q� �q�� c� �q�� abb� �q�� ab�q� �q�� a� �q�� b�q�
Table � Il trasduttore �nito per l�esercizio ���� Il primo elemento di ogni coppia �e lostato prossimo il secondo la stringa emessa in uscita� Gli stati q� q� e q� sono �nali�
Si costruisca il trasduttore �nito che calcola la traduzione�
Soluzione ��
Uno schema di traduzione �e il seguente�
Gt �
���������
S � aT j bfbgS j �T � bU j afagT j fagU � afcgV j bfabbgS j fabgV � afagV j bfbgV j �
Il corrispondente trasduttore �nito �e dato in Tabella �
��� Esercizio
Si progetti uno schema sintattico semplice di traduzione per calcolare la traduzione�
��an�#an�#an� � � �#ank� � bn�cn��bn�cn��bn�cn� � � � bnkcnk
con k � �� ni � �� La traduzione sostituisce i separatori �#� di posto dispari con� quelli di posto pari con ��
La traduzione pu�o essere calcolata da un trasduttore deterministico#
Soluzione ��
Una soluzione �e data dal seguente schema�
Gt �
�����
S � T j T #f�gT j T #f�gT #f�gST � afbgTfcg j �
�E evidente che si pu�o costruire un trasduttore deterministico� Per convincersene si pu�o anche modi�care la grammatica in modo da renderla LL��� �come si pu�ofacilmente veri�care��
��
Gt� �
���������
S � TUU �#f�gTW j �W � � mid#f�gTST � afbgTfcg j �
��� Esercizi proposti
���� Esercizio
Si costruisca un trasduttore �nito che calcola la seguente traduzione���a�n� � b�n� n �
���� Esercizio
Si costruisca uno schema di traduzione sintattico che calcola la seguente traduzione per n � �
��anc�bn� �pn�� n paridn�� n dispari
Si veri�chi se la traduzione pu�o essere calcolata in modo deterministico e sicostruisca il relativo automa trasduttore�
Grammatiche ad attributi
��� Esercizio
Costruire una grammatica ad attributi che generi il linguaggio non libero
L � fanbncn j n � �g
Soluzione ��
Possiamo procedere in due modi�
�� Costruire una grammatica per a�b�c� i cui attributi veri�cano se vi sia lostesso numero di occorrenze di a di b e di c�
�� Costruire una grammatica per anbnc� e veri�care poi che il numero di occor�renze di c sia proprio n�
Seguendo il primo metodo de�niamo la seguente grammatica scritta in una formacomoda per sempli�care gli attributi�
��
3 3 3A B C
222a A b B c C
a b c
S a=true
a A b B c C1 1 1
Figure ��� Albero decorato per la stringa aaabbbccc per la grammatica ad attributidell�esercizio ����
G� �
�������������������������
��S � ABC��A� aA��A� a��B � bB��B � b��C � cC��C � c
Gli attributi sono i seguenti� aofS restituisce true se la stringa generata �e unafrase di L mentre numofA numofB e numofC rappresentano rispettivamente ilnumero di a b e c generati da A B C�
�������������������������
��aofS �� �numofA � numofB � numofB � numofC���numofA� �� � � numofA�
��numofA �� ���numofB� �� � � numofB�
��numofB �� ���numofC� �� � � numofC�
��numofC �� �
Un esempio di albero di derivazione per la frase aaabbbccc decorato con i corris�pondenti attributi �e mostrato in �gura ���
Il secondo metodo �e mostrato dalla seguente grammatica�
��
G� �
���������������
��S � XC��X � aXb��X � ab��C � cC��C � c
Gli attributi sono i seguenti� aofS restituisce true se la stringa generata �e unafrase di L mentre numofX restituisce il numero di a �uguale a quello delle b� enumofC rappresenta il numero di c generati da C�
���������������
��aofS �� �numofX � numofC���numofX� �� � � numofX�
��numofX �� ���numofC� �� � � numofC�
��numofC �� �
��� Esercizio
Costruire una grammatica ad attributi che generi il linguaggio non libero
L � fww j q � � ���g
Si possono usare solo attributi di tipo intero o booleano�
Soluzione ��
Una soluzione pu�o essere facilmente costruita se si considera una stringa di e� come una rappresentazione binaria di un opportuno numero intero� Si pu�o allorade�nire una grammatica che considera frasi divise in due met�a di pari lunghezza i cuiattributi calcolano il valore intero corrispondente alle due met�a� Poich�e le due stringhesono di pari lunghezza sono uguali se e solo se rappresentano lo stesso numero intero�In questo caso infatti non vi �e alcuna ambiguit�a nella rappresentazione dovuta allapossibilit�a che vi siano zeri iniziali �� ha lo stesso valore di � e di ���
Per calcolare il valore numerico delle due met�a basta osservare che aggiungereun bit v a sinistra cio�e nella posizione pi�u signi�cativa di una stringa di n bit cherappresenta il numero b de�nisce un numero binario di valore b�v��n��� Aggiungereun bit v a destra cio�e nella posizione meno signi�cativa di una stringa di n bit cherappresenta il numero b de�nisce un numero binario di valore � � b � v�
Si pu�o allora usare una produzione che attacchi un bit a sinistra e uno a destra con opportuni attributi che tengano conto della profondit�a dell�albero�
La grammatica costruisce simmetricamente stringhe del tipo � ��n� ��n� Gliattributi sono des e sin per i valori della parte destra e sinistra della frase val per ilvalore di un singolo bit d per la profondit�a dell�albero�
��
��S � T aofS �� sinofT � desofT��T � XTX sinofT� �� valofX � �dofT� � sinofT�
desofT� �� valofX � � � desofT�dofT� �� dofT� � �
��T � � desofT �� sinofT �� dofT ��
��X � valofX �� ��X � � valofX �� �
Un albero decorato per la stringa �� e un albero per ��� sono mostrati in�gura ���
Si noti che il metodo �e facilmente generalizzabile a qualunque alfabeto �nito� datoun qualunque alfabeto �nito di cardinalit�a k a b � � � z basta assegnare un valore tra e k ad ogni lettera� Le formule per aggiungere cifre a sinistra e a destra sono uguali salvo che la cifra � �e sostituita da k�
��� Esercizio
Si de�nisca una grammatica ad attributi per il linguaggio delle dichiarazioni e dichiamate di procedura� Una dichiarazione ha la forma� proc Id �P�� P�� � � � � Pn��lista�chiamate�di�procedura end dove Id �e un identi�catore che rappresenta il nomedella procedura e i Pi sono gli identi�catori dei parametri formali che si suppongonotutti dello stesso tipo �intero�� Vi �e almeno un parametro formale per procedura�
Una chiamata ha la seguente forma� call Id �A�� A�� � � � An� dove ogni parametroattuale Ai deve essere un intero positivo�
Una frase consiste di una o pi�u dichiarazioni e chiamate terminate da un caratterepunto� Ad esempio una frase �e�
proc P��A B�call P��� ��proc P��X Y�call P��� ��call P��� ��call P��� ��end�
La grammatica deve svolgere i seguenti controlli semantici�
� non vi sono due dichiarazioni di procedura con lo stesso nome�
� le chiamate di procedura sono relative solo alle procedure che sono state dichia�rate in un punto precedente del programma�
��
X T X
0 1
X T X0 0 01
1
10 1
1
0
1
sin des
sin des
sin des
0
1 0ε
T
S true
2
d
val
val
val
a
1 ε
T
S
2
d
val
val
val
a
1
sin des
1
1
sin des
0
0 1
1X T X0
X T X0
sin des
0
1
11
1
3
false
val vald
d d
d
Figure ��� Alberi decorati per la stringhe �� e ��� per la grammatica ad attributidell�esercizio ����
��
��program� prg aofprogram �� aofprgenvofprg �� �
��prg� � prcd prg� aofprg� �� aofprcd � aofprg�envofprg� �� envofprg�
Supdofprcd
envofprcd �� envofprg���prg � � aofprg �� true��prcd� procpId�fPar�cll aofprcd �� aofcll � valofpId �� nomi�envofprcd�
updofprcd �� f�valofpId� numoffPar�genvofcll �� envofprcd
Sf�valofpId� numoffPar�g
��fPar� id numoffPar �� ���fPar� � id� fPar� numoffPar� �� � � numoffPar���cll� � callpId�actPar�cll� aofcll� �� �pId� numofactPar� � envofcll� � aofcll�
envofcll� �� envofcll��cll� end aofcll �� true��actPar � int numofactPar �� ���actPar� � int� actPar� numofactPar� �� numofactPar� � �
Table �� La grammatica ad attributi per l�esercizio ���
� i parametri attuali di una chiamata sono in numero pari a quelli formali delladichiarazione corrispondente�
Si descriva almeno in parte un analizzatore sintattico�semantico integrato per lagrammatica�
Soluzione ��
La grammatica illustrata in Tabella � �e costituita dai non�terminali program prg prcd cll fPar actPar pId int� Gli attributi da considerare sono� aofprogram che restituisce true o false a seconda che i controlli semantici diano esito positivoo negativo� envofprogram envofprog ecc� che sono attributi ereditati costituiti daun insieme di coppie � nome� numero � che rappresentano l�environment di unadichiarazione vale a dire i nomi e il numero dei parametri delle procedure visibili inun certo punto del programma� Vi sono poi altri attributi tutti sintetizzati comeupdofprcd che contiene la coppia nome�numero corrispondente alla dichiarazione cor�rente� numofactPar e numoffPar che rappresentano il numero di parametri di unadichiarazione e di una chiamata rispettivamente� I nonterminali pId id e int non sonoespansi ulteriormente in quanto si suppone che il loro �unico� attributo sintetizzatoval sia ritornato da un opportuno analizzatore lessicale�
La regola ��� serve solo per inizializzare l�ambiente di prg� Da prg si deriva unprogramma sintatticamente corretto costituito da una o pi�u dichiarazioni di proce�dura �prcd� tramite le regole ��� e ���� Ogni procedura �e costruita secondo la regola���� L�attributo sintetizzato envofprg permette di veri�care se l�identi�catore dellaprocedura �e gi�a stato utilizzato� Si suppone che vi sia un analizzatore lessicale che
�
restituisce un identi�catore per pId e un intero per int �in caso contrario l�alberosintattico sar�a scorretto��
La grammatica �e in forma normale di Bochman e sono veri�cate le condizioni ditipo L in quanto gli attributi ereditati di ogni regola dipendono al pi�u da attributidi nonterminali fratelli che si trovano pi�u a sinistra e dagli attributi ereditati dellaparte sinistra della regola� La grammatica �e LL��� a causa delle produzioni � � �e �� Le altre produzioni veri�cano le condizioni LL���� Costruiamo un valutatoredi attributi a discesa ricorsiva solo per il nonterminale prcd per il quale �e su�cienteconsiderare un valutatore LL����
La procedura riceve come parametri di ingresso il valore degli attributi ereditatidi prcd e restituisce in uscita il valore di quelli sintetizzati� La procedura costruiscel�albero sintattico e intanto valuta gli attributi�
procedure prcd �in envofprcd� out aofprcd� updofprcd��in ingresso� attributi ereditati di prcd �in uscita� attributi sintetizzati di prcd �if cc � fprocg thencc�� PROSSIMO�� non ci sono attributi ereditati di pId �� calcolo attributi sintetizzati di pId� �pId�valofpId��if cc �� ��� then ERROREelse cc��PROSSIMO�
� non ci sono attributi ereditati di fPar �� calcolo attributi sintetizzati di fPar� �call fPar�numoffPar�if cc �� ��� then ERROREelse cc�� PROSSIMO�
� calcolo attributi ereditati di cll� �envofcll �� envofprcd
Sf�valofpId� numofpId�g
� calcolo attributi sintetizzati di cll� �call cll�envofcll� aofcll��� calcolo attributi sintetizzati di prcd� �updofprcd �� f�valofpId� numofpId�gaofprcd �� aofcll � valofpId � nomi�envofprcd�
endifendif
else ERROREendifend prcd�
��
��� Esercizio
Descrivere un insieme di attributi per la grammatica dell�esercizio ��� in modo dacalcolare come attributo dofS la profondit�a di un albero di derivazione della gram�matica� Mostrare una traccia di funzionamento di un automa a pila a spostamento eriduzione per l�analisi sintattico�semantica integrata sulla frase acb�
Soluzione ��
La grammatica ad attributi �e�
G �
���������������
��S � aTb��S � c��T � DSb��T � c��D� a
���������
��dofS �� dofT � ���dofS �� ���dofT �� � � dofS��dofT �� �
La grammatica ad attributi �e di tipo elementare in quanto tutti gli attributi sonosintetizzati ogni attributo dofX dipende solo dagli attributi della parte destra o daattributi sintetizzati di X� e la grammatica �e in forma normale di Bochman� Si pu�opertanto usare l�automa a spostamento e riduzione presentato per l�esercizio ��� chenelle mosse di riduzione per produzioni del tipo X � � salva sulla pila i valori degliattributi del nonterminale X� Nei successivi passi di riduzione i valori degli attributidi X e degli altri nonterminali salvati sulla pila possono essere utilizzati per il calcolodegli attributi dei nonterminali di sinistra delle produzioni ridotte�
Una traccia di esecuzione sulla stringa acb �e riportata in Tabella �� Si osservi cheil calcolo di dofS quando si riduce S � aTb richiede la conoscenza degli attributi diT che per�o sono sulla pila�
��� Esercizio
Si consideri il linguaggio delle parentesi dato dalla seguente grammatica�
G �
�������������������
��S � �S�S��S � T �S��S � ���T � aT��T � bT��T � �
Pila Nastro di ingresso azioneI� a c b � sposta I��I� a I� c b � sposta I�� � �I� a I� c I� b � riduci T � c� � � � � dofT �� �I� a I� T I� b � sposta I�� � � d��I� a I� T I� b I� � riduci S � aTb� � � d�� � � dofS �� dofT � �I� S I� � I� � accetta� d�� � � � �
Table �� Traccia del funzionamento dell�automa di Tabella � sulla stringa acb�
Un esempio di frase �e�
�abb� ab� �aab� aba� �abbb� ��a� aa� �
Si costruisca una grammatica ad attributi tale per cui il linguaggio generato coin�cide con le stringhe di L�G� per le quali tutti gli identi�catori �cio�e le stringhe di a edi b� che si trovano allo stesso livello di annidamento siano distinti�
Ad esempio la frase precedente �e corretta mentre la seguente non lo �e�
�abb� ab� �aab� aba� �abbb� �aab� �a� aa� �
in quanto vi sono due sottostringhe aab allo stesso livello di annidamento �il se�condo��
Soluzione ��
La soluzione fa uso di due attributi ereditati env e lev� L�attributo env ha comevalore un insieme di coppie �identificatore� livello�� lev �e costituito da un numeronaturale che rappresenta il livello di annidamento� Vi sono poi gli attributi sintetizzatia che pu�o assumere un valore booleano che denota la correttezza semantica di unafrase upd che contiene una coppia �identificatore� livello� e val che �e la stringaassociata a un identi�catore�
La grammatica ad attributi �e G per la parte sintattica a cui corrispondono gliopportuni assegnamenti degli attributi�
envofS �e inizializzato con l�insieme vuoto levofS con il numero zero�
�
Ga �
�������������������������������������������������������������������������
��S� � �S��S� levofS� �� levofS� � �levofS� �� levofS�
envofS� �� envofS�
envofS� �� envofS� updofS�
updofS� �� updofS� updofS�
aofS� �� aofS� � aofS�
��S� � T �S� levofS� �� levofS�
updofT �� f�valofT� levofS��genvofS� �� envofS� updofTupdofS� �� f�valofT� levofS��g updofS�
aofS� �� aofS� � �valofT� levofS�� �� envofS�
��S � � updofS �� �aofS �� true
��T� � aT� valofT� �� a � valofT���T� � bT�
valofT� �� b � valofT���T � � valofT �� �
La grammatica veri�ca che gli identi�catori allo stesso livello siano distinti con�frontando l�attributo upd con l�attributo env�
Si osservi che questo tipo di confronto non �e lo stesso dei linguaggi di program�mazione che ammettono procedure annidate in quanto il confronto in questo casoconsidera solo il livello di annidamento mentre nei linguaggi di programmazione an�che l�annidamento stesso�
��� Esercizio
�E data la grammatica ad attributi GX di �g� ���Si decida se la grammatica risulta valutabile in una sola scansione e in tal caso
si costruisca la corrispondente procedura di valutazione� Si ipotizzi che gli attributisiano inizializzati correttamente�
Soluzione �
A�nch�e gli attributi di una grammatica possano essere valutati in una sola scan�sione �e necessario e su�ciente che siano soddisfatte le seguenti condizioni per ciascunaproduzione P � A� � A� � � � Ar�
�� Il grafo delle dipendenze funzionali dipP �P � A� � A� � � � Ar �e tale per cui�
�a� dipP �e aciclico�
�b� Non esistono cammini da un attributo sintetizzato di Ai a un attributoereditato dello stesso Ai�
�
σ2
σ2
σ2σ1
σ1σ2 1X
σ1
σ2σ2
σ2
η
h
η
η
a2: X
0 bY
Y
4: Y c
9
YX1: X0 1
η Y
X 0
if
X
a
Y0 η
c
Y
p
k
3: Y 1
g
η
η
m n
1bY
Figure ��� Grammatica ad attributi GX
�c� Non esistono dipendenze di attributi ereditati di Ai da un attributo sinte�tizzato di A��
�� Il grafo fraP dei fratelli �e aciclico per ogni P �
La grammatica GX soddisfa tutte queste condizioni� In particolare valutiamo ilpunto ���� l�attributo di Y nella produzione ���� dipende da attributi di X� percui si costruisce un ordine topologico in cui X � Y � Non vi sono poi altre occorrenzedi relazioni di precedenza�
L�ordine topologico per gli attributi ereditati �e immediato visto che vi �e un soloattributo ereditato e bisogna rispettare la condizione appena vista� Per quanto ri�guarda gli attributi sintetizzati si pu�o scegliere un ordine topologico in cui �� � �� ma l�ordine �e indi�erente visto che entrambe le possibilit�a vanno bene�
Realizziamo il codice della procedura di visita ipotizzando che ofX sia iniazia�lizzato a ��
programprocedure RX�in of X�� T� out �� of X�� �� of X��
case alternativa�T� of
�� calcola in ordine topologico gli attributi ereditati di X��
�
of X� �� f� of X���
calcola attributi sintetizzati di X��RX� of X�� T�� �� of X�� �� of X���
calcola in ordine topologico gli attributi ereditati di Y � of Y �� h� of X�� �� of X���
calcola attributi sintetizzati di Y �RY � of Y � T�� �� of Y ��
calcola in ordine topologico gli attributi sintetizzati di X�
�� of X� �� g��� of X���
�� of X� �� i� of Y � �� of Y ��
�� �� of X� �� k� of X���
�� of X� �� ��
endcaseend RX�
procedure RY �in of Y�� T� out �� of Y��case alternativa�T� of
� of Y� �� m� of Y���RY � of Y�� T�� �� of Y����� of Y� �� n��� of Y���
� �� of Y� �� p� of Y���endcase
end RY �
Leggi lalbero T�RX���T�� �� of X� �� of X��
emetti il valore di �� of Xend
��� Esercizio
�E data la grammatica ad attributi G�X di �g� ���
Si decida se la grammatica risulta valutabile in una o pi�u scansioni�
Soluzione �
La grammatica non �e ad una scansione perch�e l�attributo of X� dipende da �of X�� Le altre condizioni risultano per�o veri�cate�
� Il grafo delle dipendenze funzionali dipP �P � A� � A� � � � Ar �e aciclico�
� Non esistono dipendenze di attributi ereditati di Ai da un attributo sintetizzatodi A��
�
σ2
σ2
σ2σ1
σ1σ2 1X
σ1
σ2σ2
σ2
η
h
η
η
a2: X
0 bY
Y
4: Y c
YX1: X0 1
η Y
X 0
if
X
a
Y0 η
c
Y
p
k
3: Y 1
g
η
η
m n
1bY
9
Figure ��� Grammatica ad attributi G�X
� Il grafo fraP dei fratelli �e aciclico per ogni P �
Per valutare se la grammatica risulta valutabile in pi�u scansioni bisogna costruireil grafo semplice delle dipendenze �Figura ����
σ1 σ2η
Figure ��� Grafo semplice delle dipendenze per la grammatica G�X
Il grafo risulta aciclico quindi i componenti connessi massimali sono costituiti daisemplici nodi� visto che il grafo �e costituito da � nodi la grammatica sar�a valutabile almassimo con � scansioni� Non �e di�cile intuire che �e possibile accorpare le scansioniper e per �� in quanto la dipendenza �proibita� era solo fra e sigma��
Per la scansione che calcola �� qualunque ordinamento topologico dei fratelli edegli attributi va bene� Per la scansione che calcola e �� �e necessario scegliere per la
�
produzione X � Y X l�ordine topologico derivato dal graf o semplice di dipendenza�e� X � Y �
��� Esercizio
�E data la grammatica ad attributi G��X di �g� ���
S
S
X
X
Sa c
b d a c
a c
b d
t1
t2
Figure ��� Grammatica ad attributi G��X
Si decida se la grammatica risulta valutabile in una o pi�u scansioni e in tal casosi costruisca la corrispondente procedura di valutazione�
Soluzione ��
La grammatica �e valutabile con una scansione� Infatti�
�� Il grafo delle dipendenze funzionali dipP �P � A� � A� � � � Ar �e tale per cui�
�a� dipP �e aciclico�
�b� Non esistono cammini da un attributo sintetizzato di Ai a un attributoereditato dello stesso Ai�
�c� Non esistono dipendenze di attributi ereditati di Ai da un attributo sinte�tizzato di A��
�� Il grafo fraP dei fratelli �e aciclico per ogni P �
�
L�ordine topologico dei fratelli da utilizzare nella scansione �e f S� Xg mentre perquanto riguarda gli attributi non c��e un problema di ordinamento in quanto esiste ununico attributo sintetizzato ed un unico attributo ereditato per ogni non�terminale�
La procedura di visita sar�a�
procedure S�in a of S�� T� out c of S��
case alternativa�T� of
S � XS�a of S� �� f��a of S���
S�a of S�� T�� c of S���
b of X �� f��c of S���
X�b of X� T�� d of X��
c of S� �� f��d of X��
S � t��c of S� �� f��a of S���
endcaseend S�
procedure X�in b of X� T� out d of X�
d of X �� f��b of X��
end Y �
�� Esercizio
Di ognuna delle seguenti grammatiche di cui sono dati i gra� delle dipendenze fun�zionali si dica�
� se la grammatica �e ben formata ovvero se tutti gli attributi risultano senzaambiguit�a sintetizzati o ereditati�
� se �e nella forma normale di Bochmann�
� se �e della classe L�
� se �e valutabile con una scansione�
� se �e valutabile con un numero �sso di scansioni�
Si supponga che gli attributi siano inizializzati in modo opportuno
� �� Grammatica �i�
Soluzione � ��
�
Xd cb
b
Y XY Y Xt1 t2
b a
b cdb a
t1 t2
Y X
Y
Y a
S Y
Y a
S
Figure ��� Grammatica �i�
� No la grammatica non �e ben formata perch�e l�attributo a risulta sia sintetizzato�per le dipendenze nelle produzioni Y � XY e Y � t�� che ereditato �perla dipendenza nella produzione S � Y �� Per rendere corretta la grammatica eliminiamo la dipendenza che compare nella produzione S � Y rendendol�attributo a sintetizzato� Si noti che se invece si invertisse il verso della freccia si otterrebbe uniformit�a nella classi�cazione degli attributi ma la grammaticarisulterebbe ugualmente scorretta in quanto ciclica�
� La grammatica modi�cata �e nella forma normale di Bochmann�
� Non �e della classe L in quanto in Y � XY c��e attributo dofX che dipende daaofX
� La grammatica modi�cata �e calcolabile con una scansione scegliendo per laproduzione Y � XY l�ordine fra fratelli Y � X�
� �� Grammatica �ii�
Soluzione � ��
� La grammatica �e ben formata�
� La grammatica �e nella forma normale di Bochmann�
� La grammatica non appartiene alla classe L perch�e esiste una dipendenza delprimo �glio dal secondo nella produzione S � Y X�
� La grammatica non �e valutabile con una scansione� Infatti c��e un ciclo �X �Y � X� nel grafo dei fratelli della produzione S � Y X�
� Disegnando il grafo semplice delle dipendenze �rappresentato in Figura ��� siosservano due sottogra� connessi massimali evidenziati in Figura �� Si pu�oquindi determinare se gli attributi di ogni componente sono valutabili con una
YXS
S
Y X
a
a a
b
b b
c
c cd d
b d
db
a
a
c
c
b d a c
b d
db
a
a
c
c
Y
Y
Y
b d a cY
X
X
X
X
wX
wX
w
w
zY
zY z
z
Figure �� Grammatica �ii�
scansione� In entrambi i componenti il grafo dei fratelli di S � Y X risultaaciclico �con il singolo arco Y � X per il primo componente e il singolo arcoX � Y per il secondo�� La coppia di attributi fb� cg �e quindi valutabile conuna scansione che scende prima nel ramo Y e poi analizza il ramo X mentrela coppia di attributi fa� dg �e valutabile da una scansione successiva che scendeinvece prima nel ramo X per poi analizzare il ramo Y � Le due scansioni inquesto caso sono caratterizzate da ordini di visita di�erenti� Si osserva inoltreche le due scansioni non possono essere accorpate �altrimenti la grammaticarisulterebbe ad una scansione cosa che abbiamo mostrato non possibile��
� �� Grammatica �iii�
Soluzione � ��
�
cb d a
Figure ��� Grafo semplice delle dipendenze per la Grammatica �ii�
b d ac
scm1 scm2
Figure �� I sottogra� connessi massimali del grafo semplice delle dipendenze per laGrammatica �ii�
� La grammatica �e ben formata a patto che gli attributi d of X in S � X e b ofX in S � XT� siano inizializzati�
� La grammatica �e nella forma normale di Bochmann�
� La grammatica non �e valutabile con una scansione e quindi non appartienenemmeno alla classe L in quanto vi sono in S � X e S � Xt� attributiereditati che dipendono da attributi sintetizzati dello stesso nonterminale� Unvalutatore semantico non sarebbe quindi in grado di calcolare tutti gli attributiereditati di X prima di tutti gli attributi sintetizzati�
� Disegnando il grafo semplice delle dipendenze �rappresentato in Figura ��� siosserva un unico sottografo connesso massimale che racchiude tutti gli attri�buti� La grammatica non �e quindi valutabile neanche con un numero superioredi scansioni� La grammatica presenta un ciclo nel grafo approssimato delledipendenze ma in e�etti la grammatica �e valutabile in quanto i gra� delle di�pendenze funzionali sono aciclici� ci�o si pu�o veri�care costruendo i gra� delledipendenze per ognuna delle quattro frasi �t�� t�� t�t�� t�t�� generate dalla gram�matica� Questo comportamento anomalo della grammatica �e giusti�cato dalfatto che per ogni albero della grammatica c��e un proprio ordinamento topolo�gico non compatibile ocn quello di altri alberi� Ad esempio per S � X � t�l�unico ordinamento �e abc mentre per S � Xt� � t�t� l�ordinamento �e cda�Si tratta pertanto di un caso degenere abbastanza raro nella pratica in cui ilmetodo di valutazione multiscansione fallisce anche quando la grammatica non�e ciclica�
�
X adb c
X adb c X adb c
S X t2XS
X t3 X t4
t3 t4
SS
adb cX t2
Figure ��� Grammatica �iii�
b d a c
Figure ��� Grafo semplice delle dipendenze per la Grammatica �iii�
� �� Grammatica �iv�
Soluzione � ��
� La grammatica �e ben formata�
� La grammatica non �e nella forma normale di Bochmann che richiede che tuttigli attributi interni �cio�e che compaiono a sinistra di un assegnamento� di ogniproduzione dipendano solo da attributi esterni �cio�e che compaiono a destra diun assegnamento�� Infatti nell�ambito della produzione Y � XY compare lacoppia di assegnamenti�
�� cofX �� �aofY��
�� aofY� �� ��cofX� dofX�
L�attributo cofX �e interno �in quanto compare a sinistra di un assegnamento�e quindi aofY� �e un attributo interno �si trova a sinistra di un assegnamento�che dipende a sua volta da un interno� Per rendere la grammatica in formanormale basta sostituire i due assegnamenti precedenti con�
��
Ya b
Ya b
Ya bXc d
S Y Y XY Y Xt1 t2
S Ya b Xc d
t1 t2
Figure ��� Grammatica �iv�
�� cofX �� �aofY��
�� aofY� �� �� �aofY��� dofX�
o
� La grammatica appartiene alla classe L�
� La grammatica �e quindi anche valutabile con una scansione�
X t2X t1XS
X
S X X
t2t1b d a c
b a cd b ad c
Figure ��� Grammatica �v�
� �� Grammatica �v�
Soluzione � ��
� La grammatica �e ben formata�
� La grammatica �e nella forma normale di Bochmann�
��
a dbc
Figure ��� Grafo semplice delle dipendenze per la grammatica �v�
� Gli attributi di X nella produzione S � X dipendono direttamente dagli at�tributi sintetizzati di X e quindi la grammatica non rispetta le condizioni peressere valutabile in una scansione� Di conseguenza la grammatica non appar�tiene neanche alla classe L�
� La grammatica non �e neanche valutabile in pi�u scansioni in quanto non risultapossibile de�nire un ordinamento topologico tra gli attributi che valga per qual�siasi albero sintattico� Costruendo il grafo semplice delle dipendenze si ottieneinfatti un grafo ciclico caratterizzato da un unico grafo connesso massimale �vediFigura ����
Si osserva che costruendo le dipendenze approssimate per la produzione S � Xsi ottiene il ciclo� a� b� c� d� a� la grammatica non �e neanche assolutamenteaciclica e anche il metodo di Katayama non pu�o essere applicato� La grammaticarisulta per�o aciclica in quanto analizzando gli alberi sintattici corrispondenti alle duefrasi del linguaggio non si osserva la presenza di cicli nelle dipendenze degli attributi�Si tratta ovviamente di un caso degenere�
��� Esercizio
�E data la grammatica ad attributi GA di �g� ��� Nei gra� i nomi delle funzionisemantiche sono scritti a �anco degli archi che collegano gli argomenti al risultato�ad es��
� of Y �� h���ofX�� ofX���
� ofX� �� �
Si esaminino le dipendenze funzionali e si costruiscano le procedure ricorsive chevalutano gli attributi usando il metodo di Katayama�
Soluzione ���
La grammatica risulta assolutamente aciclica�Utilizzando il metodo di Katayama costruiamo il seguente programma per il cal�
colo del valore degli attributi�
��
η σ1
σ2η σ1
σ2
η
σ2η σ1
η σ2
p
Y
c
σ2
σ2
η
η
3: Y b Y0 1
1
1: X X Y0 12: X a
X 0
X 1 Y
h
fg
i
k 7
X
a
4: Y c
m
Y0
Y1
k
Figure ��� Grammatica ad attributi GA
programprocedure RX����in of X�� T� out �� of X�
case alternativa�T� of
�� RX���� of X�� T� �� of X���
of X� �� f� of X���
of Y �� h� of X�� �� of X���
RY���� of Y � T�� �� of Y ��
�� of X �� i� of Y � �� of Y ��
�� �� of X �� ��
endcaseend RX����
procedure RX����in of X�� T� out �� of X��
case alternativa�T� of
�� of X� �� f� of X���
RX���� of X�� T�� �� of X���
�� of X� �� g��� of X���
�� �� of X� �� k� of X���
endcaseend RX����
��
procedure RY����in of Y�� T� out �� of Y��case alternativa�T� of
� of Y� �� k� of Y���RY���� of Y�� T�� �� of Y����� of Y� �� m��� of Y���
� �� of Y� �� p� of Y���endcase
end RY����
Leggi lalbero T�RX������T�� �� of X��
emetti il valore di �� of Xend
���� Esercizi proposti
����� Esercizio
Si deve calcolare per mezzo di una grammatica ad attributi il valore scritto comeuna frazione di una espressione di numeri frazionari� Ad esempio�
��� � ��� � � � ���� � ��� � �������� � ���� � �� � ����������� � ��� � indefinito
L�espressione pu�o contenere i numeri interi gli operatori � e � e le parentesi� Siprogettino la sintassi del linguaggio gli attributi semantici e le regole semantiche peril calcolo dell�attributo valore� Si disegni l�albero semantico decorato per il secondoesempio mostrato� Si indichi quale tecnica di valutazione degli attributi �e possibileimpiegare�
����� Esercizio
Un�agenzia marittima invia all�armatore dei telex codi�cati per annunciare la partenzadal porto �sigle NA LI GE VE TS ���� di una o pi�u navi� Ciascuna nave �eindividuata da un nome e dal prossimo porto di destinazione e contiene un insiemedi container� Ogni container �e individuato da un numero intero e da un porto didestinazione� All�arrivo il telex deve essere controllato e decodi�cato� Ad esempio il telex� NA �LAURA LI ����� LI ��� GE�� �COSTA TS ��� TA ���� AN ���VE�� deve essere tradotto nel messaggio�
�Da Napoli parte LAURA per Livorno con � container� ���� per Livorno ���per Genova� parte COSTA per Trieste con � container� ��� per Taranto ���� perAncona ��� per Venezia��
��
Si de�nisca una sintassi per i telex e uno schema di traduzione ad attributi percontrollare il telex �non possono esservi due navi con lo stesso nome n�e due containercon lo stesso numero ecc�� e per stampare il messaggio in chiaro�
Si costruisca almeno in parte il programma che calcola la traduzione de�nita dalloschema�
����� Esercizio
Si progetti una grammatica �oppure uno schema di traduzione� ad attributi percalcolare la derivata ���x di una espressione� Una espressione �e un polinomio icui termini possono essere costanti intere �ad esempio � o ��� potenze della va�riabile x �ad esempio x x�� x� � � �� o prodotti di costanti e potenze� Ad esempio ���x�x� � �x�� � �x � ��x��
Nel calcolo della derivata �e possibile non sempli�care le espressioni lasciandoanche termini o fattori inutili come ad esempio �x�
Si modi�chi la grammatica in modo che i termini possano contenere anche funzionitrigonometriche e loro potenze come in x�sin�x� � �x�cos��x��
����� Esercizio
Si consideri la grammatica ad attributi Ga�
�� S � X � of S �� g��� of X�� of X �� h��� of X�
�� X� � X�Y � of X� �� f��� of X� � of Y �� of X� �� g��� of X� � of X� � of Y �� of X� �� h��� of Y �� of Y �� h��� of X��
�� X � Y � of X �� f��� of Y �� of X �� g��� of Y �� of Y �� h��� of X�
�� Y � a � of Y �� cost� of Y �� g��� of Y � of Y �
�� Si indichino gli attributi sintetizzati ed ereditati� Si veri�chi se Ga �e in formanormale di Bochmann� Si veri�chi se Ga �e assolutamente aciclica e se �e valu�tabile in una o pi�u passate�
�� Si costruiscano le procedure semantiche del valutatore degli attributi�
����� Esercizio
�E data la seguente grammatica ad attributi
��
�� Z � X c of X �� a of X �� f of Z �� b of X � d of X
�� X� � Y X� c of X� �� c of X�
d of X� �� d of X�
a of X� �� a of X� � d of Y � d of X�
c of Y �� a of X�
e of Y �� d of Yb of X� �� b of Y � b of X�
�� Y � X a of X �� e of Y � c of Yc of X �� c of Yb of Y �� b of X
�� X � ab b of X �� a of Xd of X �� c of X
�� Si determini di quale tipo sono le dipendenze funzionali tra gli attributi �L S a pi�u passate assolutamente aciclica aciclica��
�� Si costruisca un valutatore degli attributi con una tecnica appropriata suppo�nendo noto l�albero sintattico�
��