diff --git a/eval-final-projet/input.cond/eval13-err.l b/eval-final-projet/input.cond/eval13-err.l
new file mode 100644
index 0000000..9c1bfc9
--- /dev/null
+++ b/eval-final-projet/input.cond/eval13-err.l
@@ -0,0 +1,4 @@
+main()
+{
+ ecrire( 1 ? 0 ? 1 : 1 ? 0 );
+}
diff --git a/eval-final-projet/input.cond/eval25.l b/eval-final-projet/input.cond/eval25.l
new file mode 100644
index 0000000..67ae97e
--- /dev/null
+++ b/eval-final-projet/input.cond/eval25.l
@@ -0,0 +1,6 @@
+entier $a;
+main()
+{
+ $a = lire();
+ ecrire( $a < 10 ? 0 : 1);
+}
diff --git a/eval-final-projet/input.cond/eval26.l b/eval-final-projet/input.cond/eval26.l
new file mode 100644
index 0000000..67e433f
--- /dev/null
+++ b/eval-final-projet/input.cond/eval26.l
@@ -0,0 +1,11 @@
+main()
+entier $temp, entier $g, entier $l, entier $v;
+{
+ $temp = lire(); # temperature de l'eau
+ $g = $temp < 0 | $temp = 0 ? 1 : 0; # glace ?
+ $l = $temp < 100 & 0 < $temp ? 1 : 0; # liquide ?
+ $v = !$g & !$l ? 1 : 0; # vapeur ?
+ ecrire($g);
+ ecrire($l);
+ ecrire($v);
+}
diff --git a/eval-final-projet/input.cond/eval27.l b/eval-final-projet/input.cond/eval27.l
new file mode 100644
index 0000000..b07dadc
--- /dev/null
+++ b/eval-final-projet/input.cond/eval27.l
@@ -0,0 +1,6 @@
+main()
+{
+ ecrire( 1 ? 0 : 1 ? 0 : 1 );
+ ecrire( ( 1 ? 0 : 1 ) ? 0 : 1 );
+ ecrire( 1 ? 0 : ( 1 ? 0 : 1 ) );
+}
diff --git a/eval-final-projet/input/eval20.l.d b/eval-final-projet/input/eval20.l
similarity index 100%
rename from eval-final-projet/input/eval20.l.d
rename to eval-final-projet/input/eval20.l
diff --git a/eval-final-projet/output/eval1.synt b/eval-final-projet/output/eval1.synt
index 038df30..5f5f8c0 100644
--- a/eval-final-projet/output/eval1.synt
+++ b/eval-final-projet/output/eval1.synt
@@ -1,113 +1,37 @@
-
-
-
-
- entier
- $a
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $a
-
-
-
- EGAL
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
+.data
+$$a: .space 4
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$a
+lw $t0, $$a
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval10.synt b/eval-final-projet/output/eval10.synt
index 5a20a3e..870d3f4 100644
--- a/eval-final-projet/output/eval10.synt
+++ b/eval-final-projet/output/eval10.synt
@@ -1,118 +1,54 @@
-
-
-
-
-
- procedure
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- retour
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- procedure
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
+.data
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+procedure :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0 4($fp) #Adresse de retour
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+jr $ra
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4 #Val Retour
+jal procedure
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval11.synt b/eval-final-projet/output/eval11.synt
index 9147791..649b873 100644
--- a/eval-final-projet/output/eval11.synt
+++ b/eval-final-projet/output/eval11.synt
@@ -1,146 +1,52 @@
-
-
-
-
-
- procedure
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- entier
- $a
-
-
-
-
-
-
- POINT_VIRGULE
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $a
-
-
-
- EGAL
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- procedure
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
+.data
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+procedure :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 4 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4 #Val Retour
+jal procedure
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval12.synt b/eval-final-projet/output/eval12.synt
index c855a07..19de312 100644
--- a/eval-final-projet/output/eval12.synt
+++ b/eval-final-projet/output/eval12.synt
@@ -1,112 +1,40 @@
-
-
-
-
- entier
- $a
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- si
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- alors
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
+.data
+$$a: .space 4
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $zero e0
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+j e1
+e0:
+e1:
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval13-err.synt.xml b/eval-final-projet/output/eval13-err.synt.xml
new file mode 100644
index 0000000..e69de29
diff --git a/eval-final-projet/output/eval13.synt b/eval-final-projet/output/eval13.synt
index f049cf1..4b91b0c 100644
--- a/eval-final-projet/output/eval13.synt
+++ b/eval-final-projet/output/eval13.synt
@@ -1,154 +1,51 @@
-
-
-
-
- entier
- $a
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- si
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- alors
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
- sinon
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
+.data
+$$a: .space 4
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $zero e0
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+j e1
+e0:
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+e1:
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval14.synt b/eval-final-projet/output/eval14.synt
index d0d0c20..04753b1 100644
--- a/eval-final-projet/output/eval14.synt
+++ b/eval-final-projet/output/eval14.synt
@@ -1,487 +1,140 @@
-
-
-
-
- entier
- $tab
-
- CROCHET_OUVRANT
- 10
- CROCHET_FERMANT
-
-
-
-
-
- POINT_VIRGULE
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- entier
- $a
-
-
-
-
-
-
- POINT_VIRGULE
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $a
-
-
-
- EGAL
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- tantque
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
- INFERIEUR
-
-
-
- 10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- faire
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
- EGAL
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $a
-
-
-
- EGAL
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
- PLUS
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
- $a
-
-
-
- EGAL
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- tantque
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
- INFERIEUR
-
-
-
- 10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- faire
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
-
- $a
-
-
-
- EGAL
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
- PLUS
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
+.data
+$$tab: .space 40
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+e0:
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 10
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e2
+li $t0, 0
+e2:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $0 e1
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$tab($t4)
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+add $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+j e0
+e1:
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+e3:
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 10
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e5
+li $t0, 0
+e5:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $0 e4
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, $$tab($t4)
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+add $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+j e3
+e4:
+addi $sp, $sp 4 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval15.synt b/eval-final-projet/output/eval15.synt
index f09da36..39381b4 100644
--- a/eval-final-projet/output/eval15.synt
+++ b/eval-final-projet/output/eval15.synt
@@ -1,170 +1,51 @@
-
-
-
-
- entier
- $tab
-
- CROCHET_OUVRANT
- 10
- CROCHET_FERMANT
-
-
-
-
-
- POINT_VIRGULE
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
- EGAL
-
-
-
-
-
-
-
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
+.data
+$$tab: .space 40
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 4
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 4
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$tab($t4)
+li $t0, 4
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, $$tab($t4)
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval16.synt b/eval-final-projet/output/eval16.synt
index 7dcd9b3..28928f9 100644
--- a/eval-final-projet/output/eval16.synt
+++ b/eval-final-projet/output/eval16.synt
@@ -1,110 +1,40 @@
-
-
-
-
- entier
- $a
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- tantque
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- faire
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
+.data
+$$a: .space 4
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+e0:
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $0 e1
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+j e0
+e1:
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval17.synt b/eval-final-projet/output/eval17.synt
index 812c711..66b00b6 100644
--- a/eval-final-projet/output/eval17.synt
+++ b/eval-final-projet/output/eval17.synt
@@ -1,222 +1,75 @@
-
-
-
-
- entier
- $a
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $a
-
-
-
- EGAL
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- tantque
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
- INFERIEUR
-
-
-
- 10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- faire
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
-
- $a
-
-
-
- EGAL
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
- PLUS
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
+.data
+$$a: .space 4
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$a
+e0:
+lw $t0, $$a
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 10
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e2
+li $t0, 0
+e2:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $0 e1
+lw $t0, $$a
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+lw $t0, $$a
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+add $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$a
+j e0
+e1:
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval18.synt b/eval-final-projet/output/eval18.synt
index 0adb6ca..aa464a5 100644
--- a/eval-final-projet/output/eval18.synt
+++ b/eval-final-projet/output/eval18.synt
@@ -1,401 +1,108 @@
-
-
-
-
- entier
- $t0
-
-
-
-
- VIRGULE
-
- entier
- $t1
-
-
-
-
- VIRGULE
-
- entier
- $123
-
-
-
-
- VIRGULE
-
- entier
- $
-
-
-
-
- VIRGULE
-
- entier
- $$
-
-
-
-
- VIRGULE
-
- entier
- $$$
-
-
-
-
- VIRGULE
-
- entier
- $f
-
-
-
-
- VIRGULE
-
- entier
- $_
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
- f
-
- PARENTHESE_OUVRANTE
-
-
-
- entier
- $$
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- entier
- $$$
-
-
-
-
- VIRGULE
-
- entier
- $f
-
-
-
-
- VIRGULE
-
- entier
- $_
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $
-
-
-
- EGAL
-
-
-
-
-
-
-
-
- $123
-
-
-
-
-
-
-
-
- PLUS
-
-
-
- $_
-
-
-
-
-
-
-
-
- PLUS
-
-
-
- $$
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- $
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $t0
-
-
-
- EGAL
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $123
-
-
-
- EGAL
-
-
-
-
-
-
-
-
- $t0
-
-
-
-
-
-
-
-
- PLUS
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- f
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
-
- $123
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
- POINT_VIRGULE
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
+.data
+$$t0: .space 4
+$$t1: .space 4
+$$123: .space 4
+$$: .space 4
+$$$: .space 4
+$$$$: .space 4
+$$f: .space 4
+$$_: .space 4
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+f :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4
+subi $sp, $sp, 4
+subi $sp, $sp, 4
+lw $t0, $$123
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, -16($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+add $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 4($fp) #variable argument $$
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+add $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$
+lw $t0, $$
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 12 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$t0
+lw $t0, $$t0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+add $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$123
+subi $sp, $sp, 4 #Val Retour
+lw $t0, $$123
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+jal f
+addi $sp, $sp, 4 #désalocation des arguments
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval19.mips b/eval-final-projet/output/eval19.mips
index 4c3f4c9..70547f5 100644
--- a/eval-final-projet/output/eval19.mips
+++ b/eval-final-projet/output/eval19.mips
@@ -16,11 +16,15 @@ sw $t0, 0($sp)
lw $t1, 0($sp)
addi $sp, $sp, 4
beq $zero, $t1, e1
+subi $sp, $sp, 4
+sw $t1, 0($sp)
li $t0, 2
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
beq $zero, $t2, e1
and $t0, $t1, $t2
j e0
diff --git a/eval-final-projet/output/eval19.synt b/eval-final-projet/output/eval19.synt
index 3f15bda..70547f5 100644
--- a/eval-final-projet/output/eval19.synt
+++ b/eval-final-projet/output/eval19.synt
@@ -1,80 +1,50 @@
-
-
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
- ET
-
-
-
-
-
- 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
+.data
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t1, e1
+subi $sp, $sp, 4
+sw $t1, 0($sp)
+li $t0, 2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t2, e1
+and $t0, $t1, $t2
+j e0
+ e1 :
+li $t0 0
+ e0 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval2.synt b/eval-final-projet/output/eval2.synt
index c3cf0f2..56e0446 100644
--- a/eval-final-projet/output/eval2.synt
+++ b/eval-final-projet/output/eval2.synt
@@ -1,283 +1,93 @@
-
-
-
-
- entier
- $i
-
-
-
-
- VIRGULE
-
- entier
- $carre
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $i
-
-
-
- EGAL
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- tantque
-
-
-
-
-
-
-
-
- $i
-
-
-
-
-
-
-
-
-
-
-
- INFERIEUR
-
-
-
- 10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- faire
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $carre
-
-
-
- EGAL
-
-
-
-
-
-
-
-
- $i
-
-
-
-
-
- FOIS
-
-
- $i
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- $carre
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
-
- $i
-
-
-
- EGAL
-
-
-
-
-
-
-
-
- $i
-
-
-
-
-
-
-
-
- PLUS
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
+.data
+$$i: .space 4
+$$carre: .space 4
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$i
+e0:
+lw $t0, $$i
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 10
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e2
+li $t0, 0
+e2:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $0 e1
+lw $t0, $$i
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, $$i
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+mult $t1, $t2
+mflo $t0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$carre
+lw $t0, $$carre
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+lw $t0, $$i
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+add $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$i
+j e0
+e1:
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval20.mips b/eval-final-projet/output/eval20.mips
index 0cf87dd..fb89e6a 100644
--- a/eval-final-projet/output/eval20.mips
+++ b/eval-final-projet/output/eval20.mips
@@ -49,11 +49,10 @@ subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
-e2 :
-or $t0, $t1, $t2
+or $t0, $zero, $t2
j e3
-e1 :
-or $t0, $t1, $t2
+e2 :
+move $t0 $t1
e3 :
subi $sp, $sp, 4
sw $t0, 0($sp)
diff --git a/eval-final-projet/output/eval20.synt b/eval-final-projet/output/eval20.synt
index 8c37de9..fb89e6a 100644
--- a/eval-final-projet/output/eval20.synt
+++ b/eval-final-projet/output/eval20.synt
@@ -1,408 +1,155 @@
-
-
-
-
-
- fact
-
- PARENTHESE_OUVRANTE
-
-
-
- entier
- $f
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- si
-
-
-
-
-
-
-
-
- $f
-
-
-
-
-
-
-
-
-
-
-
- EGAL
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- OU
-
-
-
-
-
-
-
- $f
-
-
-
-
-
-
-
-
-
-
-
- EGAL
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- alors
-
- ACCOLADE_OUVRANTE
-
-
-
- retour
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
- sinon
-
- ACCOLADE_OUVRANTE
-
-
-
- retour
-
-
-
-
-
-
-
-
- fact
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
-
- $f
-
-
-
-
-
-
-
-
- MOINS
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
- FOIS
-
-
- $f
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- entier
- $a
-
-
-
-
-
-
- POINT_VIRGULE
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $a
-
-
-
- EGAL
-
-
-
-
-
-
-
- lire
- PARENTHESE_OUVRANTE
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- fact
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
+.data
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+fact :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+lw $t0, 4($fp) #variable argument $f
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+beq $t1, $t2 e4
+li $t0, 0
+e4:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t1, e0
+j e2
+e0 :
+lw $t0, 4($fp) #variable argument $f
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+beq $t1, $t2 e5
+li $t0, 0
+e5:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+or $t0, $zero, $t2
+j e3
+e2 :
+move $t0 $t1
+e3 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $zero e6
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0 8($fp) #Adresse de retour
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+jr $ra
+j e7
+e6:
+subi $sp, $sp, 4 #Val Retour
+lw $t0, 4($fp) #variable argument $f
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+sub $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+jal fact
+addi $sp, $sp, 4 #désalocation des arguments
+lw $t0, 4($fp) #variable argument $f
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+mult $t1, $t2
+mflo $t0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0 8($fp) #Adresse de retour
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+jr $ra
+e7:
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4
+li $v0 5
+syscall
+move $t0, $v0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4 #Val Retour
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+jal fact
+addi $sp, $sp, 4 #désalocation des arguments
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 4 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval21.synt b/eval-final-projet/output/eval21.synt
index 1ca6407..7d118aa 100644
--- a/eval-final-projet/output/eval21.synt
+++ b/eval-final-projet/output/eval21.synt
@@ -1,360 +1,130 @@
-
-
-
-
-
- fibo
-
- PARENTHESE_OUVRANTE
-
-
-
- entier
- $n
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- si
-
-
-
-
-
-
-
-
- $n
-
-
-
-
-
-
-
-
-
-
-
- INFERIEUR
-
-
-
- 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- alors
-
- ACCOLADE_OUVRANTE
-
-
-
- retour
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
- sinon
-
- ACCOLADE_OUVRANTE
-
-
-
- retour
-
-
-
-
-
-
-
-
- fibo
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
-
- $n
-
-
-
-
-
-
-
-
- MOINS
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
-
-
- PLUS
-
-
-
- fibo
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
-
- $n
-
-
-
-
-
-
-
-
- MOINS
-
-
- 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- fibo
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- lire
- PARENTHESE_OUVRANTE
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
+.data
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+fibo :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+lw $t0, 4($fp) #variable argument $n
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e0
+li $t0, 0
+e0:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $zero e1
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0 8($fp) #Adresse de retour
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+jr $ra
+j e2
+e1:
+subi $sp, $sp, 4 #Val Retour
+lw $t0, 4($fp) #variable argument $n
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+sub $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+jal fibo
+addi $sp, $sp, 4 #désalocation des arguments
+subi $sp, $sp, 4 #Val Retour
+lw $t0, 4($fp) #variable argument $n
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+sub $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+jal fibo
+addi $sp, $sp, 4 #désalocation des arguments
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+add $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0 8($fp) #Adresse de retour
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+jr $ra
+e2:
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4 #Val Retour
+li $v0 5
+syscall
+move $t0, $v0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+jal fibo
+addi $sp, $sp, 4 #désalocation des arguments
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval22.synt b/eval-final-projet/output/eval22.synt
index 9f90605..89fd3f8 100644
--- a/eval-final-projet/output/eval22.synt
+++ b/eval-final-projet/output/eval22.synt
@@ -1,759 +1,197 @@
-
-
-
-
- entier
- $a
-
-
-
-
- VIRGULE
-
- entier
- $b
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
- pgcd
-
- PARENTHESE_OUVRANTE
-
-
-
- entier
- $a
-
-
-
-
- VIRGULE
-
- entier
- $b
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- entier
- $c
-
-
-
-
-
-
- POINT_VIRGULE
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $c
-
-
-
- EGAL
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
- MOINS
-
-
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
- DIVISE
-
-
- $b
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
- FOIS
-
-
- $b
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- si
-
-
-
-
-
-
-
-
- $c
-
-
-
-
-
-
-
-
-
-
-
- EGAL
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- alors
-
- ACCOLADE_OUVRANTE
-
-
-
- retour
-
-
-
-
-
-
-
-
- $b
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
- sinon
-
- ACCOLADE_OUVRANTE
-
-
-
- retour
-
-
-
-
-
-
-
-
- pgcd
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
-
- $b
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- VIRGULE
-
-
-
-
-
-
-
-
- $c
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $a
-
-
-
- EGAL
-
-
-
-
-
-
-
- lire
- PARENTHESE_OUVRANTE
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $b
-
-
-
- EGAL
-
-
-
-
-
-
-
- lire
- PARENTHESE_OUVRANTE
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- si
-
-
-
-
-
-
-
-
- $b
-
-
-
-
-
-
-
-
-
-
-
- INFERIEUR
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- alors
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- pgcd
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- VIRGULE
-
-
-
-
-
-
-
-
- $b
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
- sinon
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- pgcd
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
-
- $b
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- VIRGULE
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
+.data
+$$a: .space 4
+$$b: .space 4
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+pgcd :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4
+lw $t0, 8($fp) #variable argument $a
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 8($fp) #variable argument $a
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 4($fp) #variable argument $b
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+div $t1, $t2
+mflo $t0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 4($fp) #variable argument $b
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+mult $t1, $t2
+mflo $t0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+sub $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+beq $t1, $t2 e0
+li $t0, 0
+e0:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $zero e1
+lw $t0, 4($fp) #variable argument $b
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0 12($fp) #Adresse de retour
+addi $sp, $sp 4 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+jr $ra
+j e2
+e1:
+subi $sp, $sp, 4 #Val Retour
+lw $t0, 4($fp) #variable argument $b
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+jal pgcd
+addi $sp, $sp, 8 #désalocation des arguments
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0 12($fp) #Adresse de retour
+addi $sp, $sp 4 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+jr $ra
+e2:
+addi $sp, $sp 4 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $v0 5
+syscall
+move $t0, $v0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$a
+li $v0 5
+syscall
+move $t0, $v0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$b
+lw $t0, $$b
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, $$a
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e3
+li $t0, 0
+e3:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $zero e4
+subi $sp, $sp, 4 #Val Retour
+lw $t0, $$a
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, $$b
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+jal pgcd
+addi $sp, $sp, 8 #désalocation des arguments
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+j e5
+e4:
+subi $sp, $sp, 4 #Val Retour
+lw $t0, $$b
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, $$a
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+jal pgcd
+addi $sp, $sp, 8 #désalocation des arguments
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+e5:
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval23.mips b/eval-final-projet/output/eval23.mips
index 11fffbc..c108de2 100644
--- a/eval-final-projet/output/eval23.mips
+++ b/eval-final-projet/output/eval23.mips
@@ -25,7 +25,7 @@ subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
-or $t0, $t1, $t2
+or $t0, $zero, $t2
j e3
e2 :
move $t0 $t1
diff --git a/eval-final-projet/output/eval23.synt b/eval-final-projet/output/eval23.synt
index 08c8ac7..c108de2 100644
--- a/eval-final-projet/output/eval23.synt
+++ b/eval-final-projet/output/eval23.synt
@@ -1,127 +1,58 @@
-
-
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- si
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- OU
-
-
-
-
-
-
- lire
- PARENTHESE_OUVRANTE
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- alors
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
+.data
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t1, e0
+j e2
+e0 :
+li $v0 5
+syscall
+move $t0, $v0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+or $t0, $zero, $t2
+j e3
+e2 :
+move $t0 $t1
+e3 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $zero e4
+li $t0, 5
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+j e5
+e4:
+e5:
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval24.mips b/eval-final-projet/output/eval24.mips
index c010107..0fe2b31 100644
--- a/eval-final-projet/output/eval24.mips
+++ b/eval-final-projet/output/eval24.mips
@@ -23,7 +23,7 @@ subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
-or $t0, $t1, $t2
+or $t0, $zero, $t2
j e3
e2 :
move $t0 $t1
@@ -44,11 +44,15 @@ sw $t0, 0($sp)
lw $t1, 0($sp)
addi $sp, $sp, 4
beq $zero, $t1, e5
+subi $sp, $sp, 4
+sw $t1, 0($sp)
li $t0, 6
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
beq $zero, $t2, e5
and $t0, $t1, $t2
j e4
@@ -80,7 +84,7 @@ subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
-or $t0, $t1, $t2
+or $t0, $zero, $t2
j e9
e8 :
move $t0 $t1
@@ -101,6 +105,8 @@ sw $t0, 0($sp)
lw $t1, 0($sp)
addi $sp, $sp, 4
beq $zero, $t1, e11
+subi $sp, $sp, 4
+sw $t1, 0($sp)
li $v0 5
syscall
move $t0, $v0
@@ -108,6 +114,8 @@ subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
beq $zero, $t2, e11
and $t0, $t1, $t2
j e10
@@ -139,7 +147,7 @@ subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
-or $t0, $t1, $t2
+or $t0, $zero, $t2
j e15
e14 :
move $t0 $t1
@@ -160,6 +168,8 @@ sw $t0, 0($sp)
lw $t1, 0($sp)
addi $sp, $sp, 4
beq $zero, $t1, e17
+subi $sp, $sp, 4
+sw $t1, 0($sp)
li $v0 5
syscall
move $t0, $v0
@@ -167,6 +177,8 @@ subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
beq $zero, $t2, e17
and $t0, $t1, $t2
j e16
diff --git a/eval-final-projet/output/eval24.synt b/eval-final-projet/output/eval24.synt
index d08fc77..0fe2b31 100644
--- a/eval-final-projet/output/eval24.synt
+++ b/eval-final-projet/output/eval24.synt
@@ -1,375 +1,204 @@
-
-
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- OU
-
-
-
-
-
-
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 3
-
-
-
-
-
-
-
-
-
-
-
-
- ET
-
-
-
-
-
- 6
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- OU
-
-
-
-
-
-
- lire
- PARENTHESE_OUVRANTE
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 3
-
-
-
-
-
-
-
-
-
-
-
-
- ET
-
-
-
-
-
- lire
- PARENTHESE_OUVRANTE
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- OU
-
-
-
-
-
-
- lire
- PARENTHESE_OUVRANTE
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
- ET
-
-
-
-
-
- lire
- PARENTHESE_OUVRANTE
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
+.data
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 3
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t1, e0
+j e2
+e0 :
+li $t0, 4
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+or $t0, $zero, $t2
+j e3
+e2 :
+move $t0 $t1
+e3 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+li $t0, 3
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t1, e5
+subi $sp, $sp, 4
+sw $t1, 0($sp)
+li $t0, 6
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t2, e5
+and $t0, $t1, $t2
+j e4
+ e5 :
+li $t0 0
+ e4 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+li $t0, 3
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t1, e6
+j e8
+e6 :
+li $v0 5
+syscall
+move $t0, $v0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+or $t0, $zero, $t2
+j e9
+e8 :
+move $t0 $t1
+e9 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+li $t0, 3
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t1, e11
+subi $sp, $sp, 4
+sw $t1, 0($sp)
+li $v0 5
+syscall
+move $t0, $v0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t2, e11
+and $t0, $t1, $t2
+j e10
+ e11 :
+li $t0 0
+ e10 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t1, e12
+j e14
+e12 :
+li $v0 5
+syscall
+move $t0, $v0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+or $t0, $zero, $t2
+j e15
+e14 :
+move $t0 $t1
+e15 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t1, e17
+subi $sp, $sp, 4
+sw $t1, 0($sp)
+li $v0 5
+syscall
+move $t0, $v0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t2, e17
+and $t0, $t1, $t2
+j e16
+ e17 :
+li $t0 0
+ e16 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval25.asynt b/eval-final-projet/output/eval25.asynt
new file mode 100644
index 0000000..0c1876f
--- /dev/null
+++ b/eval-final-projet/output/eval25.asynt
@@ -0,0 +1,33 @@
+
+
+ $a
+
+
+
+ main
+
+
+ $a
+
+
+
+
+
+
+ condexp
+
+ inf
+
+ $a
+
+ 10
+
+ 0
+ 1
+
+
+
+
+
+
+
diff --git a/eval-final-projet/output/eval25.lex b/eval-final-projet/output/eval25.lex
new file mode 100644
index 0000000..6eb4a13
--- /dev/null
+++ b/eval-final-projet/output/eval25.lex
@@ -0,0 +1,26 @@
+entier mot_clef entier
+$a id_variable $a
+; symbole POINT_VIRGULE
+main id_fonction main
+( symbole PARENTHESE_OUVRANTE
+) symbole PARENTHESE_FERMANTE
+{ symbole ACCOLADE_OUVRANTE
+$a id_variable $a
+= symbole EGAL
+lire mot_clef lire
+( symbole PARENTHESE_OUVRANTE
+) symbole PARENTHESE_FERMANTE
+; symbole POINT_VIRGULE
+ecrire mot_clef ecrire
+( symbole PARENTHESE_OUVRANTE
+$a id_variable $a
+< symbole INFERIEUR
+10 nombre 10
+? symbole INTERROGATION
+0 nombre 0
+: symbole DEUXPOINTS
+1 nombre 1
+) symbole PARENTHESE_FERMANTE
+; symbole POINT_VIRGULE
+} symbole ACCOLADE_FERMANTE
+ symbole FIN
diff --git a/eval-final-projet/output/eval25.mips b/eval-final-projet/output/eval25.mips
new file mode 100644
index 0000000..a19008d
--- /dev/null
+++ b/eval-final-projet/output/eval25.mips
@@ -0,0 +1,70 @@
+.data
+$$a: .space 4
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $v0 5
+syscall
+move $t0, $v0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$a
+lw $t0, $$a
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 10
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e2
+li $t0, 0
+e2:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e0
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e1
+e0 :
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e1 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval25.synt b/eval-final-projet/output/eval25.synt
index e69de29..a19008d 100644
--- a/eval-final-projet/output/eval25.synt
+++ b/eval-final-projet/output/eval25.synt
@@ -0,0 +1,70 @@
+.data
+$$a: .space 4
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $v0 5
+syscall
+move $t0, $v0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$a
+lw $t0, $$a
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 10
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e2
+li $t0, 0
+e2:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e0
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e1
+e0 :
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e1 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval25.tab b/eval-final-projet/output/eval25.tab
new file mode 100644
index 0000000..91bc69d
--- /dev/null
+++ b/eval-final-projet/output/eval25.tab
@@ -0,0 +1,6 @@
+------------------------------------------
+base = 2
+sommet = 2
+0 $a GLOBALE ENTIER 0 -1
+1 main GLOBALE FONCTION 0 0
+------------------------------------------
diff --git a/eval-final-projet/output/eval26.asynt b/eval-final-projet/output/eval26.asynt
new file mode 100644
index 0000000..161447c
--- /dev/null
+++ b/eval-final-projet/output/eval26.asynt
@@ -0,0 +1,126 @@
+
+
+
+ main
+
+ $temp
+
+ $g
+
+ $l
+
+ $v
+
+
+
+
+
+
+ $temp
+
+
+
+
+
+ $g
+
+ condexp
+
+ ou
+
+ inf
+
+ $temp
+
+ 0
+
+
+ egal
+
+ $temp
+
+ 0
+
+
+ 1
+ 0
+
+
+
+
+ $l
+
+ condexp
+
+ et
+
+ inf
+
+ $temp
+
+ 100
+
+
+ inf
+ 0
+
+ $temp
+
+
+
+ 1
+ 0
+
+
+
+
+ $v
+
+ condexp
+
+ et
+
+ non
+
+ $g
+
+
+
+ non
+
+ $l
+
+
+
+ 1
+ 0
+
+
+
+
+
+ $g
+
+
+
+
+
+ $l
+
+
+
+
+
+ $v
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/eval-final-projet/output/eval26.lex b/eval-final-projet/output/eval26.lex
new file mode 100644
index 0000000..022387b
--- /dev/null
+++ b/eval-final-projet/output/eval26.lex
@@ -0,0 +1,79 @@
+main id_fonction main
+( symbole PARENTHESE_OUVRANTE
+) symbole PARENTHESE_FERMANTE
+entier mot_clef entier
+$temp id_variable $temp
+, symbole VIRGULE
+entier mot_clef entier
+$g id_variable $g
+, symbole VIRGULE
+entier mot_clef entier
+$l id_variable $l
+, symbole VIRGULE
+entier mot_clef entier
+$v id_variable $v
+; symbole POINT_VIRGULE
+{ symbole ACCOLADE_OUVRANTE
+$temp id_variable $temp
+= symbole EGAL
+lire mot_clef lire
+( symbole PARENTHESE_OUVRANTE
+) symbole PARENTHESE_FERMANTE
+; symbole POINT_VIRGULE
+$g id_variable $g
+= symbole EGAL
+$temp id_variable $temp
+< symbole INFERIEUR
+0 nombre 0
+| symbole OU
+$temp id_variable $temp
+= symbole EGAL
+0 nombre 0
+? symbole INTERROGATION
+1 nombre 1
+: symbole DEUXPOINTS
+0 nombre 0
+; symbole POINT_VIRGULE
+$l id_variable $l
+= symbole EGAL
+$temp id_variable $temp
+< symbole INFERIEUR
+100 nombre 100
+& symbole ET
+0 nombre 0
+< symbole INFERIEUR
+$temp id_variable $temp
+? symbole INTERROGATION
+1 nombre 1
+: symbole DEUXPOINTS
+0 nombre 0
+; symbole POINT_VIRGULE
+$v id_variable $v
+= symbole EGAL
+! symbole NON
+$g id_variable $g
+& symbole ET
+! symbole NON
+$l id_variable $l
+? symbole INTERROGATION
+1 nombre 1
+: symbole DEUXPOINTS
+0 nombre 0
+; symbole POINT_VIRGULE
+ecrire mot_clef ecrire
+( symbole PARENTHESE_OUVRANTE
+$g id_variable $g
+) symbole PARENTHESE_FERMANTE
+; symbole POINT_VIRGULE
+ecrire mot_clef ecrire
+( symbole PARENTHESE_OUVRANTE
+$l id_variable $l
+) symbole PARENTHESE_FERMANTE
+; symbole POINT_VIRGULE
+ecrire mot_clef ecrire
+( symbole PARENTHESE_OUVRANTE
+$v id_variable $v
+) symbole PARENTHESE_FERMANTE
+; symbole POINT_VIRGULE
+} symbole ACCOLADE_FERMANTE
+ symbole FIN
diff --git a/eval-final-projet/output/eval26.mips b/eval-final-projet/output/eval26.mips
new file mode 100644
index 0000000..91d4da3
--- /dev/null
+++ b/eval-final-projet/output/eval26.mips
@@ -0,0 +1,255 @@
+.data
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4
+subi $sp, $sp, 4
+subi $sp, $sp, 4
+subi $sp, $sp, 4
+li $v0 5
+syscall
+move $t0, $v0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e6
+li $t0, 0
+e6:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t1, e2
+j e4
+e2 :
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+beq $t1, $t2 e7
+li $t0, 0
+e7:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+or $t0, $zero, $t2
+j e5
+e4 :
+move $t0 $t1
+e5 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e0
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e1
+e0 :
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e1 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -12($fp) #variable locale
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 100
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e12
+li $t0, 0
+e12:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t1, e11
+subi $sp, $sp, 4
+sw $t1, 0($sp)
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e13
+li $t0, 0
+e13:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t2, e11
+and $t0, $t1, $t2
+j e10
+ e11 :
+li $t0 0
+ e10 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e8
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e9
+e8 :
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e9 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -16($fp) #variable locale
+lw $t0, -12($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+not $t0 $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t1, e17
+subi $sp, $sp, 4
+sw $t1, 0($sp)
+lw $t0, -16($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+not $t0 $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t2, e17
+and $t0, $t1, $t2
+j e16
+ e17 :
+li $t0 0
+ e16 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e14
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e15
+e14 :
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e15 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -20($fp) #variable locale
+lw $t0, -12($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+lw $t0, -16($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+lw $t0, -20($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 16 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval26.synt b/eval-final-projet/output/eval26.synt
new file mode 100644
index 0000000..91d4da3
--- /dev/null
+++ b/eval-final-projet/output/eval26.synt
@@ -0,0 +1,255 @@
+.data
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4
+subi $sp, $sp, 4
+subi $sp, $sp, 4
+subi $sp, $sp, 4
+li $v0 5
+syscall
+move $t0, $v0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e6
+li $t0, 0
+e6:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t1, e2
+j e4
+e2 :
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+beq $t1, $t2 e7
+li $t0, 0
+e7:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+or $t0, $zero, $t2
+j e5
+e4 :
+move $t0 $t1
+e5 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e0
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e1
+e0 :
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e1 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -12($fp) #variable locale
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 100
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e12
+li $t0, 0
+e12:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t1, e11
+subi $sp, $sp, 4
+sw $t1, 0($sp)
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e13
+li $t0, 0
+e13:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t2, e11
+and $t0, $t1, $t2
+j e10
+ e11 :
+li $t0 0
+ e10 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e8
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e9
+e8 :
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e9 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -16($fp) #variable locale
+lw $t0, -12($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+not $t0 $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t1, e17
+subi $sp, $sp, 4
+sw $t1, 0($sp)
+lw $t0, -16($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+not $t0 $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $zero, $t2, e17
+and $t0, $t1, $t2
+j e16
+ e17 :
+li $t0 0
+ e16 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e14
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e15
+e14 :
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e15 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -20($fp) #variable locale
+lw $t0, -12($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+lw $t0, -16($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+lw $t0, -20($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 16 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval26.tab b/eval-final-projet/output/eval26.tab
new file mode 100644
index 0000000..39e036b
--- /dev/null
+++ b/eval-final-projet/output/eval26.tab
@@ -0,0 +1,9 @@
+------------------------------------------
+base = 1
+sommet = 5
+0 main GLOBALE FONCTION 0 0
+1 $temp LOCALE ENTIER 0 -1
+2 $g LOCALE ENTIER 4 -1
+3 $l LOCALE ENTIER 8 -1
+4 $v LOCALE ENTIER 12 -1
+------------------------------------------
diff --git a/eval-final-projet/output/eval27.asynt b/eval-final-projet/output/eval27.asynt
new file mode 100644
index 0000000..40ef8a3
--- /dev/null
+++ b/eval-final-projet/output/eval27.asynt
@@ -0,0 +1,52 @@
+
+
+
+ main
+
+
+
+ condexp
+ 1
+ 0
+
+ condexp
+ 1
+ 0
+ 1
+
+
+
+
+
+
+ condexp
+
+ condexp
+ 1
+ 0
+ 1
+
+ 0
+ 1
+
+
+
+
+
+ condexp
+ 1
+ 0
+
+ condexp
+ 1
+ 0
+ 1
+
+
+
+
+
+
+
+
+
diff --git a/eval-final-projet/output/eval27.lex b/eval-final-projet/output/eval27.lex
new file mode 100644
index 0000000..f92a2e9
--- /dev/null
+++ b/eval-final-projet/output/eval27.lex
@@ -0,0 +1,49 @@
+main id_fonction main
+( symbole PARENTHESE_OUVRANTE
+) symbole PARENTHESE_FERMANTE
+{ symbole ACCOLADE_OUVRANTE
+ecrire mot_clef ecrire
+( symbole PARENTHESE_OUVRANTE
+1 nombre 1
+? symbole INTERROGATION
+0 nombre 0
+: symbole DEUXPOINTS
+1 nombre 1
+? symbole INTERROGATION
+0 nombre 0
+: symbole DEUXPOINTS
+1 nombre 1
+) symbole PARENTHESE_FERMANTE
+; symbole POINT_VIRGULE
+ecrire mot_clef ecrire
+( symbole PARENTHESE_OUVRANTE
+( symbole PARENTHESE_OUVRANTE
+1 nombre 1
+? symbole INTERROGATION
+0 nombre 0
+: symbole DEUXPOINTS
+1 nombre 1
+) symbole PARENTHESE_FERMANTE
+? symbole INTERROGATION
+0 nombre 0
+: symbole DEUXPOINTS
+1 nombre 1
+) symbole PARENTHESE_FERMANTE
+; symbole POINT_VIRGULE
+ecrire mot_clef ecrire
+( symbole PARENTHESE_OUVRANTE
+1 nombre 1
+? symbole INTERROGATION
+0 nombre 0
+: symbole DEUXPOINTS
+( symbole PARENTHESE_OUVRANTE
+1 nombre 1
+? symbole INTERROGATION
+0 nombre 0
+: symbole DEUXPOINTS
+1 nombre 1
+) symbole PARENTHESE_FERMANTE
+) symbole PARENTHESE_FERMANTE
+; symbole POINT_VIRGULE
+} symbole ACCOLADE_FERMANTE
+ symbole FIN
diff --git a/eval-final-projet/output/eval27.mips b/eval-final-projet/output/eval27.mips
new file mode 100644
index 0000000..d0619ce
--- /dev/null
+++ b/eval-final-projet/output/eval27.mips
@@ -0,0 +1,160 @@
+.data
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e0
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e1
+e0 :
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e2
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e3
+e2 :
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e3 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e1 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e6
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e7
+e6 :
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e7 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e4
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e5
+e4 :
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e5 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e8
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e9
+e8 :
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e10
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e11
+e10 :
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e11 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e9 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval27.synt b/eval-final-projet/output/eval27.synt
new file mode 100644
index 0000000..d0619ce
--- /dev/null
+++ b/eval-final-projet/output/eval27.synt
@@ -0,0 +1,160 @@
+.data
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e0
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e1
+e0 :
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e2
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e3
+e2 :
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e3 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e1 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e6
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e7
+e6 :
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e7 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e4
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e5
+e4 :
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e5 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e8
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e9
+e8 :
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+beq $t1, $zero e10
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+j e11
+e10 :
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e11 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+e9 :
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval27.tab b/eval-final-projet/output/eval27.tab
new file mode 100644
index 0000000..2a3c2e8
--- /dev/null
+++ b/eval-final-projet/output/eval27.tab
@@ -0,0 +1,5 @@
+------------------------------------------
+base = 1
+sommet = 1
+0 main GLOBALE FONCTION 0 0
+------------------------------------------
diff --git a/eval-final-projet/output/eval3.synt b/eval-final-projet/output/eval3.synt
index 4d058f0..74cae41 100644
--- a/eval-final-projet/output/eval3.synt
+++ b/eval-final-projet/output/eval3.synt
@@ -1,77 +1,42 @@
-
-
-
-
- entier
- $a
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 5
-
-
- FOIS
-
- 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
+.data
+$$a: .space 4
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 5
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+mult $t1, $t2
+mflo $t0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval4.synt b/eval-final-projet/output/eval4.synt
index 08f06d7..187d585 100644
--- a/eval-final-projet/output/eval4.synt
+++ b/eval-final-projet/output/eval4.synt
@@ -1,513 +1,146 @@
-
-
-
-
-
- max
-
- PARENTHESE_OUVRANTE
-
-
-
- entier
- $a
-
-
-
-
- VIRGULE
-
- entier
- $b
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- si
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
- INFERIEUR
-
-
-
-
- $b
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- alors
-
- ACCOLADE_OUVRANTE
-
-
-
- retour
-
-
-
-
-
-
-
-
- $b
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
-
- retour
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- entier
- $v_1
-
-
-
-
- VIRGULE
-
- entier
- $v_2
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $v_1
-
-
-
- EGAL
-
-
-
-
-
-
-
- lire
- PARENTHESE_OUVRANTE
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $v_2
-
-
-
- EGAL
-
-
-
-
-
-
-
- lire
- PARENTHESE_OUVRANTE
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- si
-
-
-
-
-
-
-
-
- max
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
-
- $v_1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- VIRGULE
-
-
-
-
-
-
-
-
- $v_2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
-
-
-
-
-
- EGAL
-
-
-
-
- $v_1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- alors
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- $v_1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
- sinon
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- $v_2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
+.data
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+max :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+lw $t0, 8($fp) #variable argument $a
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 4($fp) #variable argument $b
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e0
+li $t0, 0
+e0:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $zero e1
+lw $t0, 4($fp) #variable argument $b
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0 12($fp) #Adresse de retour
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+jr $ra
+j e2
+e1:
+e2:
+lw $t0, 8($fp) #variable argument $a
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0 12($fp) #Adresse de retour
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+jr $ra
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4
+subi $sp, $sp, 4
+li $v0 5
+syscall
+move $t0, $v0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+li $v0 5
+syscall
+move $t0, $v0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -12($fp) #variable locale
+subi $sp, $sp, 4 #Val Retour
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, -12($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+jal max
+addi $sp, $sp, 8 #désalocation des arguments
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+beq $t1, $t2 e3
+li $t0, 0
+e3:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $zero e4
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+j e5
+e4:
+lw $t0, -12($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+e5:
+addi $sp, $sp 8 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval5.synt b/eval-final-projet/output/eval5.synt
index 77a518b..3557338 100644
--- a/eval-final-projet/output/eval5.synt
+++ b/eval-final-projet/output/eval5.synt
@@ -1,2146 +1,527 @@
-
-
-
-
- entier
- $tab
-
- CROCHET_OUVRANT
- 10
- CROCHET_FERMANT
-
-
-
-
-
- POINT_VIRGULE
-
-
-
- initialiser
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
- EGAL
-
-
-
-
-
-
-
- 8
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
- EGAL
-
-
-
-
-
-
-
- 6
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
- 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
- EGAL
-
-
-
-
-
-
-
- 9
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
- 3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
- EGAL
-
-
-
-
-
-
-
- 9
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
- EGAL
-
-
-
-
-
-
-
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
- 5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
- EGAL
-
-
-
-
-
-
-
- 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
- 6
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
- EGAL
-
-
-
-
-
-
-
- 3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
- 7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
- EGAL
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
- 8
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
- EGAL
-
-
-
-
-
-
-
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
- 9
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
- EGAL
-
-
-
-
-
-
-
- 5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
- afficher
-
- PARENTHESE_OUVRANTE
-
-
-
- entier
- $n
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- entier
- $i
-
-
-
-
-
-
- POINT_VIRGULE
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $i
-
-
-
- EGAL
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- tantque
-
-
-
-
-
-
-
-
- $i
-
-
-
-
-
-
-
-
-
-
-
- INFERIEUR
-
-
-
-
- $n
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- faire
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
-
- $i
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
-
- $i
-
-
-
- EGAL
-
-
-
-
-
-
-
-
- $i
-
-
-
-
-
-
-
-
- PLUS
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
- echanger
-
- PARENTHESE_OUVRANTE
-
-
-
- entier
- $i
-
-
-
-
- VIRGULE
-
- entier
- $j
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- entier
- $temp
-
-
-
-
-
-
- POINT_VIRGULE
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $temp
-
-
-
- EGAL
-
-
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
-
- $j
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
-
- $j
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
- EGAL
-
-
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
-
- $i
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
-
- $i
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
- EGAL
-
-
-
-
-
-
-
-
- $temp
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
- trier
-
- PARENTHESE_OUVRANTE
-
-
-
- entier
- $n
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- entier
- $echange
-
-
-
-
- VIRGULE
-
- entier
- $j
-
-
-
-
- VIRGULE
-
- entier
- $m
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $m
-
-
-
- EGAL
-
-
-
-
-
-
-
-
- $n
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $echange
-
-
-
- EGAL
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- tantque
-
-
-
-
-
-
-
-
- $echange
-
-
-
-
-
-
-
-
-
-
-
- EGAL
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- faire
-
- ACCOLADE_OUVRANTE
-
-
-
-
- $echange
-
-
-
- EGAL
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- $j
-
-
-
- EGAL
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
- tantque
-
-
-
-
-
-
-
-
- $j
-
-
-
-
-
-
-
-
-
-
-
- INFERIEUR
-
-
-
-
- $m
-
-
-
-
-
-
-
-
- MOINS
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- faire
-
- ACCOLADE_OUVRANTE
-
-
-
- si
-
-
-
-
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
-
- $j
-
-
-
-
-
-
-
-
- PLUS
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
-
-
-
-
-
-
-
-
- INFERIEUR
-
-
-
-
- $tab
-
- CROCHET_OUVRANT
-
-
-
-
-
-
-
-
- $j
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CROCHET_FERMANT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- alors
-
- ACCOLADE_OUVRANTE
-
-
-
-
- echanger
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
-
- $j
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- VIRGULE
-
-
-
-
-
-
-
-
- $j
-
-
-
-
-
-
-
-
- PLUS
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
- POINT_VIRGULE
-
-
-
-
-
-
- $echange
-
-
-
- EGAL
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
-
-
- $j
-
-
-
- EGAL
-
-
-
-
-
-
-
-
- $j
-
-
-
-
-
-
-
-
- PLUS
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
- $m
-
-
-
- EGAL
-
-
-
-
-
-
-
-
- $m
-
-
-
-
-
-
-
-
- MOINS
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- initialiser
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
- POINT_VIRGULE
-
-
-
-
-
-
- afficher
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- 10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
- POINT_VIRGULE
-
-
-
-
-
-
- trier
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- 10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
- POINT_VIRGULE
-
-
-
-
-
-
- afficher
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- 10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
- POINT_VIRGULE
-
-
-
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
-
-
-
+.data
+$$tab: .space 40
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+initialiser :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 8
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$tab($t4)
+li $t0, 6
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$tab($t4)
+li $t0, 9
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$tab($t4)
+li $t0, 9
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 3
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$tab($t4)
+li $t0, 4
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 4
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$tab($t4)
+li $t0, 2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 5
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$tab($t4)
+li $t0, 3
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 6
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$tab($t4)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 7
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$tab($t4)
+li $t0, 4
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 8
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$tab($t4)
+li $t0, 5
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 9
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$tab($t4)
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
+afficher :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+e0:
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 4($fp) #variable argument $n
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e2
+li $t0, 0
+e2:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $0 e1
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, $$tab($t4)
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+add $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+j e0
+e1:
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 4 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
+echanger :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4
+lw $t0, 4($fp) #variable argument $j
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, $$tab($t4)
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+lw $t0, 8($fp) #variable argument $i
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, $$tab($t4)
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 4($fp) #variable argument $j
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$tab($t4)
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 8($fp) #variable argument $i
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, $$tab($t4)
+addi $sp, $sp 4 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
+trier :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4
+subi $sp, $sp, 4
+subi $sp, $sp, 4
+lw $t0, 4($fp) #variable argument $n
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -16($fp) #variable locale
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+e3:
+lw $t0, -8($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+beq $t1, $t2 e5
+li $t0, 0
+e5:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $0 e4
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+li $t0, 0
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -12($fp) #variable locale
+e6:
+lw $t0, -12($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, -16($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+sub $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e8
+li $t0, 0
+e8:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $0 e7
+lw $t0, -12($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+add $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, $$tab($t4)
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, -12($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t4, 0($sp)
+addi $sp, $sp, 4
+add $t4,$t4,$t4
+add $t4,$t4,$t4
+lw $t0, $$tab($t4)
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+li $t0, 1
+blt $t1, $t2 e9
+li $t0, 0
+e9:
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+beq $t0 $zero e10
+subi $sp, $sp, 4 #Val Retour
+lw $t0, -12($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, -12($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+add $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+jal echanger
+addi $sp, $sp, 8 #désalocation des arguments
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -8($fp) #variable locale
+j e11
+e10:
+e11:
+lw $t0, -12($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+add $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -12($fp) #variable locale
+j e6
+e7:
+lw $t0, -16($fp) #variable locale
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+sub $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+sw $t0, -16($fp) #variable locale
+j e3
+e4:
+addi $sp, $sp 12 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4 #Val Retour
+jal initialiser
+subi $sp, $sp, 4 #Val Retour
+li $t0, 10
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+jal afficher
+addi $sp, $sp, 4 #désalocation des arguments
+subi $sp, $sp, 4 #Val Retour
+li $t0, 10
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+jal trier
+addi $sp, $sp, 4 #désalocation des arguments
+subi $sp, $sp, 4 #Val Retour
+li $t0, 10
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+jal afficher
+addi $sp, $sp, 4 #désalocation des arguments
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval6.synt b/eval-final-projet/output/eval6.synt
index 8451b47..afeb2bf 100644
--- a/eval-final-projet/output/eval6.synt
+++ b/eval-final-projet/output/eval6.synt
@@ -1,104 +1,46 @@
-
-
-
-
- entier
- $a
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
- procedure
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- procedure
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
+.data
+$$a: .space 4
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+procedure :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4 #Val Retour
+jal procedure
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval7.synt b/eval-final-projet/output/eval7.synt
index 62e65c9..bc714e6 100644
--- a/eval-final-projet/output/eval7.synt
+++ b/eval-final-projet/output/eval7.synt
@@ -1,91 +1,51 @@
-
-
-
-
- entier
- $a
-
-
-
-
-
-
- POINT_VIRGULE
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 5
-
-
-
-
-
- MOINS
-
-
- 3
-
-
-
-
-
- PLUS
-
-
- 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
+.data
+$$a: .space 4
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 5
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 3
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+sub $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+li $t0, 2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t2, 0($sp)
+addi $sp, $sp, 4
+lw $t1, 0($sp)
+addi $sp, $sp, 4
+add $t0, $t1, $t2
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval8.synt b/eval-final-projet/output/eval8.synt
index ab621d9..a04e648 100644
--- a/eval-final-projet/output/eval8.synt
+++ b/eval-final-projet/output/eval8.synt
@@ -1,134 +1,49 @@
-
-
-
-
-
- procedure
-
- PARENTHESE_OUVRANTE
-
-
-
- entier
- $a
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- $a
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- procedure
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
-
- 10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
-
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
+.data
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+procedure :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+lw $t0, 4($fp) #variable argument $a
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4 #Val Retour
+li $t0, 10
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+jal procedure
+addi $sp, $sp, 4 #désalocation des arguments
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/output/eval9.synt b/eval-final-projet/output/eval9.synt
index cf9f1f3..a661af0 100644
--- a/eval-final-projet/output/eval9.synt
+++ b/eval-final-projet/output/eval9.synt
@@ -1,93 +1,45 @@
-
-
-
-
-
- procedure
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
- ecrire
- PARENTHESE_OUVRANTE
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PARENTHESE_FERMANTE
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
- main
-
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
-
-
-
- ACCOLADE_OUVRANTE
-
-
-
-
- procedure
- PARENTHESE_OUVRANTE
-
-
- PARENTHESE_FERMANTE
-
- POINT_VIRGULE
-
-
-
-
-
- ACCOLADE_FERMANTE
-
-
-
-
-
-
-
+.data
+.text
+__start:
+jal main
+li $v0, 10
+syscall
+procedure :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+li $t0, 1
+subi $sp, $sp, 4
+sw $t0, 0($sp)
+lw $t0, 0($sp)
+addi $sp, $sp, 4
+move $a0, $t0
+li $v0, 1
+syscall
+li $a0, '\n'
+li $v0, 11
+syscall
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
+main :
+subi $sp, $sp, 4
+sw $fp, 0($sp)
+move $fp, $sp
+subi $sp, $sp, 4
+sw $ra, 0($sp)
+subi $sp, $sp, 4 #Val Retour
+jal procedure
+addi $sp, $sp 0 # desallocation variables locales
+lw $ra, 0($sp)
+addi $sp, $sp, 4
+lw $fp, 0($sp)
+addi $sp, $sp, 4
+addi $sp, $sp, 4 #ignore valeur de retour
+jr $ra
diff --git a/eval-final-projet/testAll.sh b/eval-final-projet/testAll.sh
index b811c47..315f349 100755
--- a/eval-final-projet/testAll.sh
+++ b/eval-final-projet/testAll.sh
@@ -36,7 +36,7 @@ MYCOMPILO="../compilateur-l"
MYCOMPILODEFAULT="${MYCOMPILO}" # utilisé pour test reconnaissance et erreur
MYCOMPILOLEX="${MYCOMPILO} -l" # exécuter l'analyseur lexical
-MYCOMPILOSYNT="${MYCOMPILO} -s" # exécuter l'analyseur syntaxique
+#MYCOMPILOSYNT="${MYCOMPILO} -s" # exécuter l'analyseur syntaxique
MYCOMPILOASYNT="${MYCOMPILO} -a" # afficher l'arbre abstrait
MYCOMPILOTAB="${MYCOMPILO} -t" # afficher les tables des symboles
MYCOMPILOMIPS="${MYCOMPILO} -m" # générer code MIPS
diff --git a/header/analyseur_syntaxyque.h b/header/analyseur_syntaxyque.h
index 361ba37..f581417 100644
--- a/header/analyseur_syntaxyque.h
+++ b/header/analyseur_syntaxyque.h
@@ -44,12 +44,13 @@ n_instr *instructionPour (void);
n_instr *instructionVide (void);
n_exp *expression (void);
n_exp *expressionBis (n_exp *herite);
+n_exp *condition (void);
+n_exp *conditionBis(n_exp *herite);
n_exp *conjonction (void);
n_exp *conjonctionBis(n_exp *herite);
n_exp *negation (void);
n_exp *comparaison (void);
n_exp *comparaisonBis (n_exp *herite);
-n_exp *expression (void);
n_exp *expArith (void);
n_exp *expArithBis(n_exp *herite);
n_exp *terme (void);
diff --git a/header/symboles.h b/header/symboles.h
index 2501b9a..ba0da0a 100644
--- a/header/symboles.h
+++ b/header/symboles.h
@@ -2,7 +2,7 @@
#define EPSILON 0
-#define NB_NON_TERMINAUX 43
+#define NB_NON_TERMINAUX 45
#define _listeDecVariables_ 1
#define _listeDecFonctions_ 2
@@ -45,11 +45,13 @@
#define _instructionFaire_ 40
#define _optListeDecVariables_ 41
#define _instructionPour_ 42
+#define _condition_ 43
+#define _conditionBis_ 44
/* symboles terminaux */
-#define NB_TERMINAUX 32
+#define NB_TERMINAUX 34
#define POINT_VIRGULE 1
#define PLUS 2
@@ -81,4 +83,6 @@
#define NOMBRE 28
#define FIN 29
#define VIRGULE 30
-#define POUR 31
\ No newline at end of file
+#define POUR 31
+#define INTERROGATION 32
+#define DEUXPOINTS 33
\ No newline at end of file
diff --git a/header/syntabs.h b/header/syntabs.h
index fbfd414..8f4896a 100644
--- a/header/syntabs.h
+++ b/header/syntabs.h
@@ -39,12 +39,12 @@ n_dec *cree_n_dec_fonc(char *nom, n_l_dec *param, n_l_dec *variables, n_instr *c
/* ATTENTION : negatif => - unaire, comme dans -5
non => négation logique
Le opérateurs unaires ont op2 = NULL par convention */
-typedef enum {plus, moins, fois, divise, modulo, egal, diff, inf, sup, infeg, supeg, ou, et, non, negatif} operation;
+typedef enum {plus, moins, fois, divise, modulo, egal, diff, inf, sup, infeg, supeg, ou, et, non, negatif, cond} operation;
struct n_exp_ {
enum{varExp, opExp, intExp, appelExp, lireExp, incrExp} type;
union{
- struct{operation op; struct n_exp_ *op1; struct n_exp_ *op2;} opExp_;
+ struct{operation op; struct n_exp_ *op1; struct n_exp_ *op2; struct n_exp_ *op3;} opExp_;
n_var *var;
n_var *incr;
int entier;
@@ -52,7 +52,7 @@ struct n_exp_ {
}u;
};
-n_exp *cree_n_exp_op(operation type, n_exp *op1, n_exp *op2);
+n_exp *cree_n_exp_op(operation type, n_exp *op1, n_exp *op2, n_exp *op3);
n_exp *cree_n_exp_entier(int entier);
n_exp *cree_n_exp_var(n_var *var);
n_exp *cree_n_exp_appel(n_appel *app);
diff --git a/src/affiche_arbre_abstrait.c b/src/affiche_arbre_abstrait.c
index 27bf654..41abed9 100644
--- a/src/affiche_arbre_abstrait.c
+++ b/src/affiche_arbre_abstrait.c
@@ -207,12 +207,17 @@ void affiche_opExp(n_exp *n)
else if(n->u.opExp_.op == ou) affiche_texte("ou", trace_abs);
else if(n->u.opExp_.op == et) affiche_texte("et", trace_abs);
else if(n->u.opExp_.op == non) affiche_texte("non", trace_abs);
+ else if(n->u.opExp_.op == cond) affiche_texte("condexp", trace_abs);
+
if( n->u.opExp_.op1 != NULL ) {
affiche_exp(n->u.opExp_.op1);
}
if( n->u.opExp_.op2 != NULL ) {
affiche_exp(n->u.opExp_.op2);
}
+ if( n->u.opExp_.op3 != NULL ) {
+ affiche_exp(n->u.opExp_.op3);
+ }
affiche_balise_fermante(fct, trace_abs);
}
diff --git a/src/analyseur_lexical.c b/src/analyseur_lexical.c
index 334860e..e18b103 100644
--- a/src/analyseur_lexical.c
+++ b/src/analyseur_lexical.c
@@ -18,15 +18,15 @@ extern FILE *yyin;
char tableSymbole[] = {
';', ',', '(', ')', '[', ']', '{', '}', // Code
'+', '-', '*', '/', // Arithmetique
- '<', '=', // Comparaison
- '&','|', '!' , // Logique
+ '<', '=', '?', ':', // Comparaison
+ '&','|', '!', // Logique
'\0'
};
int codeSymbole[] = {
POINT_VIRGULE, VIRGULE, PARENTHESE_OUVRANTE, PARENTHESE_FERMANTE, CROCHET_OUVRANT, CROCHET_FERMANT, ACCOLADE_OUVRANTE, ACCOLADE_FERMANTE,
PLUS, MOINS, FOIS, DIVISE,
- INFERIEUR, EGAL,
+ INFERIEUR, EGAL, INTERROGATION, DEUXPOINTS,
ET, OU, NON
};
@@ -209,6 +209,8 @@ void nom_token( int token, char *nom, char *valeur ) {
else if(token == NON) strcpy(valeur, "NON");
else if(token == FIN) strcpy(valeur, "FIN");
else if(token == VIRGULE) strcpy(valeur, "VIRGULE");
+ else if(token == INTERROGATION) strcpy(valeur, "INTERROGATION");
+ else if(token == DEUXPOINTS) strcpy(valeur, "DEUXPOINTS");
else if( token == ID_VAR ) {
strcpy( nom, "id_variable" );
diff --git a/src/analyseur_syntaxyque.c b/src/analyseur_syntaxyque.c
index ab69bc8..590ae79 100644
--- a/src/analyseur_syntaxyque.c
+++ b/src/analyseur_syntaxyque.c
@@ -592,8 +592,8 @@ n_exp *expression() {
openSection( __func__ );
n_exp *herite_conj = NULL;
n_exp *sreturn = NULL;
- if( est_premier( _conjonction_, uniteCourante ) ) {
- herite_conj = conjonction();
+ if( est_premier( _condition_, uniteCourante ) ) {
+ herite_conj = condition();
sreturn = expressionBis(herite_conj);
} else {
syntaxError();
@@ -603,6 +603,51 @@ n_exp *expression() {
}
n_exp *expressionBis(n_exp *herite) {
+ openSection( __func__ );
+ n_exp *expression1 = NULL;
+ n_exp *expression2 = NULL;
+ n_exp *sreturn = herite;
+
+ if( uniteCourante == INTERROGATION ) {
+ elementConsome();
+ uniteCourante = yylex();
+
+ expression1 = expression();
+
+ if( uniteCourante == DEUXPOINTS ) {
+ elementConsome();
+ uniteCourante = yylex();
+
+ expression2 = expression();
+
+ sreturn = cree_n_exp_op(cond, herite, expression1, expression2);
+ } else {
+ syntaxErrorMsg( "':' été attendu" );
+ }
+
+ } else if( !est_suivant( _expressionBis_, uniteCourante ) ) {
+ syntaxError();
+ }
+
+ closeSection( __func__ );
+ return sreturn;
+}
+
+n_exp *condition() {
+ openSection( __func__ );
+ n_exp *herite_conj = NULL;
+ n_exp *sreturn = NULL;
+ if( est_premier( _conjonction_, uniteCourante ) ) {
+ herite_conj = conjonction();
+ sreturn = conditionBis(herite_conj);
+ } else {
+ syntaxError();
+ }
+ closeSection( __func__ );
+ return sreturn;
+}
+
+n_exp *conditionBis(n_exp *herite) {
openSection( __func__ );
n_exp *conj = NULL;
n_exp *sreturn = herite;
@@ -612,9 +657,9 @@ n_exp *expressionBis(n_exp *herite) {
uniteCourante = yylex();
conj = conjonction();
- herite = cree_n_exp_op(ou, herite,conj);
- sreturn = expressionBis(herite);
- } else if( !est_suivant( _expressionBis_, uniteCourante ) ) {
+ herite = cree_n_exp_op(ou, herite,conj, NULL);
+ sreturn = conditionBis(herite);
+ } else if( !est_suivant( _conditionBis_, uniteCourante ) ) {
syntaxError();
}
@@ -646,7 +691,7 @@ n_exp *conjonctionBis(n_exp *herite) {
elementConsome();
uniteCourante = yylex();
herite_neg = negation();
- herite_neg = cree_n_exp_op(et, herite, herite_neg);
+ herite_neg = cree_n_exp_op(et, herite, herite_neg, NULL);
sreturn = conjonctionBis(herite_neg);
} else if( !est_suivant( _conjonctionBis_, uniteCourante ) ) {
syntaxError();
@@ -666,7 +711,7 @@ n_exp *negation() {
uniteCourante = yylex();
expression = comparaison();
- sreturn = cree_n_exp_op(non,expression,NULL);
+ sreturn = cree_n_exp_op(non,expression,NULL, NULL);
} else if (est_premier( _comparaison_, uniteCourante )) {
sreturn = comparaison();
} else {
@@ -700,14 +745,14 @@ n_exp *comparaisonBis(n_exp *herite) {
uniteCourante = yylex();
herite_exp = expArith();
- herite_exp = cree_n_exp_op(egal,herite,herite_exp);
+ herite_exp = cree_n_exp_op(egal,herite,herite_exp, NULL);
sreturn = comparaisonBis(herite_exp);
} else if( uniteCourante == INFERIEUR) {
elementConsome();
uniteCourante = yylex();
herite_exp = expArith();
- herite_exp = cree_n_exp_op(inf,herite,herite_exp);
+ herite_exp = cree_n_exp_op(inf,herite,herite_exp, NULL);
sreturn = comparaisonBis(herite_exp);
} else if( !est_suivant( _comparaisonBis_, uniteCourante ) ) {
@@ -748,14 +793,14 @@ n_exp *expArithBis(n_exp *herite) {
uniteCourante = yylex();
s = terme();
- herite_fils = cree_n_exp_op(plus, herite, s);
+ herite_fils = cree_n_exp_op(plus, herite, s, NULL);
sreturn = expArithBis(herite_fils);
} else if( uniteCourante == MOINS) {
elementConsome();
uniteCourante = yylex();
s = terme();
- herite_fils = cree_n_exp_op(moins, herite, s);
+ herite_fils = cree_n_exp_op(moins, herite, s, NULL);
sreturn = expArithBis(herite_fils);
} else if( !est_suivant( _expArithBis_, uniteCourante ) ) {
syntaxError();
@@ -796,14 +841,14 @@ n_exp *termeBis(n_exp *herite) {
uniteCourante = yylex();
s = facteur();
- herite_fils = cree_n_exp_op(fois, herite, s);
+ herite_fils = cree_n_exp_op(fois, herite, s, NULL);
sreturn = termeBis(herite_fils);
} else if( uniteCourante == DIVISE) {
elementConsome();
uniteCourante = yylex();
s = facteur();
- herite_fils = cree_n_exp_op(divise, herite, s);
+ herite_fils = cree_n_exp_op(divise, herite, s, NULL);
sreturn = termeBis(herite_fils);
} else if( !est_suivant( _termeBis_, uniteCourante ) ) {
syntaxError();
diff --git a/src/parcours.c b/src/parcours.c
index 20826fc..590f419 100644
--- a/src/parcours.c
+++ b/src/parcours.c
@@ -510,7 +510,7 @@ void parcours_opExp(n_exp *n)
sprintf(tmp, "$t%d", iRegistre3);
depile(tmp);
- sprintf(tmp,"or $t%d, $t%d, $t%d",iRegistre, iRegistre2, iRegistre3);
+ sprintf(tmp,"or $t%d, $zero, $t%d",iRegistre, iRegistre3);
printMips(tmp);
sprintf(tmp,"j %s",empile);
@@ -523,31 +523,36 @@ void parcours_opExp(n_exp *n)
sprintf(tmp,"%s : ", empile);
printMips(tmp);
} else if(n->u.opExp_.op == et) {
- char empile[256];
+ char fin[256];
char faux[256];
- new_tag(empile);
+ new_tag(fin);
new_tag(faux);
parcours_exp(n->u.opExp_.op1);
sprintf(tmp, "$t%d", iRegistre2);
depile(tmp);
- //sprintf(tmp,"li $t%d, 1",iRegistre);
- //printMips(tmp);
+
sprintf(tmp,"beq $zero, $t%d, %s",iRegistre2,faux);
printMips(tmp);
-
+
+ sprintf(tmp, "$t%d", iRegistre2);
+ empile(tmp);
+
parcours_exp(n->u.opExp_.op2);
sprintf(tmp, "$t%d", iRegistre3);
depile(tmp);
- sprintf(tmp,"beq $zero, $t%d, %s",iRegistre3,faux);
+
+ sprintf(tmp, "$t%d", iRegistre2);
+ depile(tmp);
+
+ sprintf(tmp,"beq $zero, $t%d, %s", iRegistre3, faux);
printMips(tmp);
+
- //--
sprintf(tmp,"and $t%d, $t%d, $t%d",iRegistre, iRegistre2, iRegistre3);
printMips(tmp);
- //--
- sprintf(tmp,"j %s", empile);
+ sprintf(tmp,"j %s", fin);
printMips(tmp);
sprintf(tmp," %s :",faux);
@@ -555,23 +560,46 @@ void parcours_opExp(n_exp *n)
sprintf(tmp,"li $t%d 0",iRegistre);
printMips(tmp);
- sprintf(tmp ," %s :",empile);
+ sprintf(tmp ," %s :",fin);
printMips(tmp);
} else if(n->u.opExp_.op == non) {
parcours_exp(n->u.opExp_.op1);
- char fin[256];
- new_tag(fin);
+
sprintf(tmp, "$t%d", iRegistre3);
depile(tmp);
- sprintf(tmp,"li $t%d 1",iRegistre);
+
+ sprintf(tmp,"not $t%d $t%d",iRegistre,iRegistre3);
printMips(tmp);
- sprintf(tmp,"beq $t%d, $zero %s",iRegistre3,fin);
+ } else if(n->u.opExp_.op == cond) {
+ char tmp[256];
+ char faux[256];
+ char empile[256];
+ new_tag(faux);
+ new_tag(empile);
+
+ parcours_exp(n->u.opExp_.op1);
+
+ sprintf(tmp, "$t%d", iRegistre2);
+ depile(tmp);
+ sprintf(tmp,"beq $t%d, $zero %s",iRegistre2, faux);
printMips(tmp);
- sprintf(tmp,"li $t%d 0",iRegistre);
+
+ parcours_exp(n->u.opExp_.op2);
+
+ sprintf(tmp, "$t%d", iRegistre);
+ depile(tmp);
+ sprintf(tmp,"j %s", empile);
printMips(tmp);
- sprintf(tmp, "%s :",fin);
+
+ sprintf(tmp, "%s :", faux);
+ printMips(tmp);
+ parcours_exp(n->u.opExp_.op3);
+ sprintf(tmp, "$t%d", iRegistre);
+ depile(tmp);
+
+ sprintf(tmp, "%s :", empile);
printMips(tmp);
}
sprintf(tmp, "$t%d", iRegistre);
diff --git a/src/premiers.c b/src/premiers.c
index a9b7292..05795bd 100644
--- a/src/premiers.c
+++ b/src/premiers.c
@@ -85,9 +85,19 @@ void initialise_premiers(void){
premiers[_expression_][ID_VAR] = 1;
premiers[_expression_][LIRE] = 1;
- premiers[_expressionBis_][OU] = 1;
+ premiers[_expressionBis_][INTERROGATION] = 1;
premiers[_expressionBis_][EPSILON] = 1;
+ premiers[_condition_][NON] = 1;
+ premiers[_condition_][PARENTHESE_OUVRANTE] = 1;
+ premiers[_condition_][NOMBRE] = 1;
+ premiers[_condition_][ID_FCT] = 1;
+ premiers[_condition_][ID_VAR] = 1;
+ premiers[_condition_][LIRE] = 1;
+
+ premiers[_conditionBis_][OU] = 1;
+ premiers[_conditionBis_][EPSILON] = 1;
+
premiers[_conjonction_][NON] = 1;
premiers[_conjonction_][PARENTHESE_OUVRANTE] = 1;
premiers[_conjonction_][NOMBRE] = 1;
diff --git a/src/suivants.c b/src/suivants.c
index c158faa..b5c606c 100644
--- a/src/suivants.c
+++ b/src/suivants.c
@@ -170,6 +170,7 @@ void initialise_suivants(void){
suivants[_expression_][PARENTHESE_FERMANTE] = 1;
suivants[_expression_][CROCHET_FERMANT] = 1;
suivants[_expression_][VIRGULE] = 1;
+ suivants[_expression_][DEUXPOINTS] = 1;
suivants[_expressionBis_][POINT_VIRGULE] = 1;
suivants[_expressionBis_][ALORS] = 1;
@@ -177,6 +178,25 @@ void initialise_suivants(void){
suivants[_expressionBis_][PARENTHESE_FERMANTE] = 1;
suivants[_expressionBis_][CROCHET_FERMANT] = 1;
suivants[_expressionBis_][VIRGULE] = 1;
+ suivants[_expressionBis_][DEUXPOINTS] = 1;
+
+ suivants[_condition_][POINT_VIRGULE] = 1;
+ suivants[_condition_][ALORS] = 1;
+ suivants[_condition_][FAIRE] = 1;
+ suivants[_condition_][PARENTHESE_FERMANTE] = 1;
+ suivants[_condition_][CROCHET_FERMANT] = 1;
+ suivants[_condition_][VIRGULE] = 1;
+ suivants[_condition_][INTERROGATION] = 1;
+ suivants[_condition_][DEUXPOINTS] = 1;
+
+ suivants[_conditionBis_][POINT_VIRGULE] = 1;
+ suivants[_conditionBis_][ALORS] = 1;
+ suivants[_conditionBis_][FAIRE] = 1;
+ suivants[_conditionBis_][PARENTHESE_FERMANTE] = 1;
+ suivants[_conditionBis_][CROCHET_FERMANT] = 1;
+ suivants[_conditionBis_][VIRGULE] = 1;
+ suivants[_conditionBis_][INTERROGATION] = 1;
+ suivants[_conditionBis_][DEUXPOINTS] = 1;
suivants[_conjonction_][OU] = 1;
suivants[_conjonction_][POINT_VIRGULE] = 1;
@@ -185,6 +205,8 @@ void initialise_suivants(void){
suivants[_conjonction_][PARENTHESE_FERMANTE] = 1;
suivants[_conjonction_][CROCHET_FERMANT] = 1;
suivants[_conjonction_][VIRGULE] = 1;
+ suivants[_conjonction_][INTERROGATION] = 1;
+ suivants[_conjonction_][DEUXPOINTS] = 1;
suivants[_conjonctionBis_][OU] = 1;
suivants[_conjonctionBis_][POINT_VIRGULE] = 1;
@@ -193,6 +215,8 @@ void initialise_suivants(void){
suivants[_conjonctionBis_][PARENTHESE_FERMANTE] = 1;
suivants[_conjonctionBis_][CROCHET_FERMANT] = 1;
suivants[_conjonctionBis_][VIRGULE] = 1;
+ suivants[_conjonctionBis_][INTERROGATION] = 1;
+ suivants[_conjonctionBis_][DEUXPOINTS] = 1;
suivants[_negation_][ET] = 1;
suivants[_negation_][OU] = 1;
@@ -202,6 +226,8 @@ void initialise_suivants(void){
suivants[_negation_][PARENTHESE_FERMANTE] = 1;
suivants[_negation_][CROCHET_FERMANT] = 1;
suivants[_negation_][VIRGULE] = 1;
+ suivants[_negation_][INTERROGATION] = 1;
+ suivants[_negation_][DEUXPOINTS] = 1;
suivants[_comparaison_][ET] = 1;
suivants[_comparaison_][OU] = 1;
@@ -211,6 +237,8 @@ void initialise_suivants(void){
suivants[_comparaison_][PARENTHESE_FERMANTE] = 1;
suivants[_comparaison_][CROCHET_FERMANT] = 1;
suivants[_comparaison_][VIRGULE] = 1;
+ suivants[_comparaison_][INTERROGATION] = 1;
+ suivants[_comparaison_][DEUXPOINTS] = 1;
suivants[_comparaisonBis_][ET] = 1;
suivants[_comparaisonBis_][OU] = 1;
@@ -220,6 +248,8 @@ void initialise_suivants(void){
suivants[_comparaisonBis_][PARENTHESE_FERMANTE] = 1;
suivants[_comparaisonBis_][CROCHET_FERMANT] = 1;
suivants[_comparaisonBis_][VIRGULE] = 1;
+ suivants[_comparaisonBis_][INTERROGATION] = 1;
+ suivants[_comparaisonBis_][DEUXPOINTS] = 1;
suivants[_expArith_][EGAL] = 1;
suivants[_expArith_][INFERIEUR] = 1;
@@ -231,6 +261,8 @@ void initialise_suivants(void){
suivants[_expArith_][PARENTHESE_FERMANTE] = 1;
suivants[_expArith_][CROCHET_FERMANT] = 1;
suivants[_expArith_][VIRGULE] = 1;
+ suivants[_expArith_][INTERROGATION] = 1;
+ suivants[_expArith_][DEUXPOINTS] = 1;
suivants[_expArithBis_][EGAL] = 1;
suivants[_expArithBis_][INFERIEUR] = 1;
@@ -242,6 +274,8 @@ void initialise_suivants(void){
suivants[_expArithBis_][PARENTHESE_FERMANTE] = 1;
suivants[_expArithBis_][CROCHET_FERMANT] = 1;
suivants[_expArithBis_][VIRGULE] = 1;
+ suivants[_expArithBis_][INTERROGATION] = 1;
+ suivants[_expArithBis_][DEUXPOINTS] = 1;
suivants[_terme_][PLUS] = 1;
suivants[_terme_][MOINS] = 1;
@@ -255,6 +289,8 @@ void initialise_suivants(void){
suivants[_terme_][PARENTHESE_FERMANTE] = 1;
suivants[_terme_][CROCHET_FERMANT] = 1;
suivants[_terme_][VIRGULE] = 1;
+ suivants[_terme_][INTERROGATION] = 1;
+ suivants[_terme_][DEUXPOINTS] = 1;
suivants[_termeBis_][PLUS] = 1;
suivants[_termeBis_][MOINS] = 1;
@@ -268,6 +304,8 @@ void initialise_suivants(void){
suivants[_termeBis_][PARENTHESE_FERMANTE] = 1;
suivants[_termeBis_][CROCHET_FERMANT] = 1;
suivants[_termeBis_][VIRGULE] = 1;
+ suivants[_termeBis_][INTERROGATION] = 1;
+ suivants[_termeBis_][DEUXPOINTS] = 1;
suivants[_facteur_][FOIS] = 1;
suivants[_facteur_][DIVISE] = 1;
@@ -283,6 +321,8 @@ void initialise_suivants(void){
suivants[_facteur_][PARENTHESE_FERMANTE] = 1;
suivants[_facteur_][CROCHET_FERMANT] = 1;
suivants[_facteur_][VIRGULE] = 1;
+ suivants[_facteur_][INTERROGATION] = 1;
+ suivants[_facteur_][DEUXPOINTS] = 1;
suivants[_var_][FOIS] = 1;
suivants[_var_][DIVISE] = 1;
@@ -298,6 +338,8 @@ void initialise_suivants(void){
suivants[_var_][PARENTHESE_FERMANTE] = 1;
suivants[_var_][CROCHET_FERMANT] = 1;
suivants[_var_][VIRGULE] = 1;
+ suivants[_var_][INTERROGATION] = 1;
+ suivants[_var_][DEUXPOINTS] = 1;
suivants[_optIndice_][FOIS] = 1;
suivants[_optIndice_][DIVISE] = 1;
@@ -313,6 +355,8 @@ void initialise_suivants(void){
suivants[_optIndice_][PARENTHESE_FERMANTE] = 1;
suivants[_optIndice_][CROCHET_FERMANT] = 1;
suivants[_optIndice_][VIRGULE] = 1;
+ suivants[_optIndice_][INTERROGATION] = 1;
+ suivants[_optIndice_][DEUXPOINTS] = 1;
suivants[_appelFct_][FOIS] = 1;
suivants[_appelFct_][DIVISE] = 1;
@@ -328,6 +372,8 @@ void initialise_suivants(void){
suivants[_appelFct_][PARENTHESE_FERMANTE] = 1;
suivants[_appelFct_][CROCHET_FERMANT] = 1;
suivants[_appelFct_][VIRGULE] = 1;
+ suivants[_appelFct_][INTERROGATION] = 1;
+ suivants[_appelFct_][DEUXPOINTS] = 1;
suivants[_listeExpressions_][PARENTHESE_FERMANTE] = 1;
diff --git a/src/syntabs.c b/src/syntabs.c
index 7c4bc07..47dbd08 100644
--- a/src/syntabs.c
+++ b/src/syntabs.c
@@ -36,13 +36,14 @@ n_var *cree_n_var_indicee(char *nom, n_exp *indice)
return n;
}
-n_exp *cree_n_exp_op(operation op, n_exp *op1, n_exp *op2)
+n_exp *cree_n_exp_op(operation op, n_exp *op1, n_exp *op2, n_exp *op3)
{
n_exp *n = malloc(sizeof(n_exp));
n->type = opExp;
n->u.opExp_.op = op;
n->u.opExp_.op1 = op1;
n->u.opExp_.op2 = op2;
+ n->u.opExp_.op3 = op3;
return n;
}