PDA

View Full Version : Aiuto x Linguaggi e Ambienti di Programmazione


ErBestia
27-03-2006, 18:08
Salve a tutti! :D

Sto affrontando un corso di Linguaggi e Ambienti di programmazione, e trovo alcune difficoltà :muro: nella traduzione di codici in quadruple (o "codice a 3 indirizzi").

Ad esempio, davanti ad un esercizio del genere:

Scrivere il codice a quadruple (usando controllo di flusso per i booleani e metodo delle etichette per la generazione del codice) per il seguente frammento:

while (a > b) do
while (c < d) do begin
a := a/b;
c := c+1;
end

la soluzione potrebbe essere:

L1: if a > b goto L2
goto LNext
L2: if c < d goto L3
goto L1
L3: t1 := a/b
a := t1
t2 := c+1
c := t2
goto L2
LNext: ...

o bisogna aggiungere qualcos'altro per completare l'esercizio stesso?

Inoltre, volendo scrivere delle produzioni di un frammento di
grammatica che possa aver generato il codice precedente (produzioni + regole semantiche), mi chidedevo se si dovesse continuare così:

S --> while E do S1 { "codice while metodo etichette" }

S1 --> begin A end { S1.code := A.code}

S1 --> S { S1.code := S.code }

A --> id := B; A { NON SAPREI, MI POTETE AIUTARE? }

A --> id := B; { A.code := B.code ||
gen(id.place = B.place)}

B --> id1/id2 { B.place := newtemp;
B.code :=
gen(B.place := id1.place/id2.place)}

B --> id+1 { B.place := newtemp;
B.code :=
gen(B.place := id.place+1)}

E --> id1 relop id2 { E.code := gen(if id1.place relop.op
id2.place goto E.true) ||
gen(goto E.false) }

Ringrazio qualunque pio uomo x l'aiuto :help: , anche se capisco che la cosa può sembrare di non tanta rilevanza! :banned:

Ciauz ;)