Esercizio su SDD - Traduzione guidata dalla sintassi

Messaggioda stefano86 » 29/11/2014, 00:20

Ciao a tutti, data questa grammatica:

$S -> (L)$
$S -> a$
$L -> L, S$
$L -> S$

devo definire le opportune azioni semantiche per calcolare, per ciascuna stringa del linguaggio, il numero di coppie di parentesi presenti nella stringa.

Per svolgere questi esercizi di solito costruisco un albero di derivazione per una stringa qualsiasi e poi cerco di creare le azioni semantiche.
Quindi ho creato l'albero per la stringa "((a, (a), a))" che dovrebbe avere come risultato 3 in quanto ci sono 3 coppie di parentesi.

Il mio problema è che non so come scrivere le azioni semantiche, a logica direi che mi serve un contatore che viene incrementato ogni qualvolta trovo una coppia di parentesi. Ma come scrivere tutto questo? Come e dove inizializzo il contatore?

In ogni caso, ho provato a fare così ma non so se sia giusto..

$S -> (L) {S.p = counter + 1}$
$S -> a {\text{do nothing}}$
$L -> L, S {L.p = S.p}$
$L -> S {L.p = S.p}$

$.p$ è un attributo sintetizzato.

Potrebbe essere giusto?

Grazie :D
stefano86
Junior Member
Junior Member
 
Messaggio: 32 di 266
Iscritto il: 09/08/2014, 17:56

Re: Esercizio su SDD - Traduzione guidata dalla sintassi

Messaggioda stefano86 » 02/12/2014, 20:51

Nessuno sa aiutarmi? :)
stefano86
Junior Member
Junior Member
 
Messaggio: 33 di 266
Iscritto il: 09/08/2014, 17:56


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite