Traducteur de code Pascal vers code 3 address (Flex et Bison)
salut
j'ai un mini projet qui la réalisation d'un traducteur de code pascal vers un code 3 adresse(génération du code intermédiaire ) en utilisant flex et bison
le problème c'est comment généré les variable temp par exemple:
le fragment de programme C a=b*c+b*(b-c)*(-c) devient
Code:
1 2 3 4 5
|
(1) t1 := b*c (5) t5 := t3*t4
(2) t2 := b-c (6) t6 := t1+t5
(3) t3 := b*t2 (7) a := t6
(4) t4 := -c |
avec une boucle :
: soit le fragment de code C suivant
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| z=0;
do {
x++;
if (y<10)
{
z=z+2*x;
h=5;
}
else
h=-5;
y+=h;
} while (x<=50 && z<=5*y); |
Le code à 3 adresses correspondant est
Code:
1 2 3 4 5 6 7 8 9 10 11
|
(1) t1 := 0 (11) aller a (14)
(2) z := t1 (12) t6 := -5
(3) t2 := x + 1 (13) h := t6
(4) x := t2 (14) t7 := y+h
(5) si y>=10 aller a (12) (15) y := t7
(6) t3 := 2*x (16) si x>50 aller a (20)
(7) t4 := t3+z (17) t8 := 5*y
(8) z := t4 (18) si z>t8 aller a (20)
(9) t5 := 5 (19) aller a (3)
(10) h := t5 (20) ... |
si il y a quelqu'un déjà une expérience avec la compilation j'attends son aide et merci :);)