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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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