EVAL FINAL ESAYYYYYYY
This commit is contained in:
4
eval-final-projet/input.cond/eval13-err.l
Normal file
4
eval-final-projet/input.cond/eval13-err.l
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
main()
|
||||||
|
{
|
||||||
|
ecrire( 1 ? 0 ? 1 : 1 ? 0 );
|
||||||
|
}
|
||||||
6
eval-final-projet/input.cond/eval25.l
Normal file
6
eval-final-projet/input.cond/eval25.l
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
entier $a;
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
$a = lire();
|
||||||
|
ecrire( $a < 10 ? 0 : 1);
|
||||||
|
}
|
||||||
11
eval-final-projet/input.cond/eval26.l
Normal file
11
eval-final-projet/input.cond/eval26.l
Normal file
@@ -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);
|
||||||
|
}
|
||||||
6
eval-final-projet/input.cond/eval27.l
Normal file
6
eval-final-projet/input.cond/eval27.l
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
main()
|
||||||
|
{
|
||||||
|
ecrire( 1 ? 0 : 1 ? 0 : 1 );
|
||||||
|
ecrire( ( 1 ? 0 : 1 ) ? 0 : 1 );
|
||||||
|
ecrire( 1 ? 0 : ( 1 ? 0 : 1 ) );
|
||||||
|
}
|
||||||
@@ -1,113 +1,37 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
$$a: .space 4
|
||||||
<listeDecVariables>
|
.text
|
||||||
<declarationVariable>
|
__start:
|
||||||
<mot_clef>entier</mot_clef>
|
jal main
|
||||||
<id_variable>$a</id_variable>
|
li $v0, 10
|
||||||
<optTailleTableau>
|
syscall
|
||||||
</optTailleTableau>
|
main :
|
||||||
</declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
sw $fp, 0($sp)
|
||||||
</listeDecVariablesBis>
|
move $fp, $sp
|
||||||
</listeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
sw $ra, 0($sp)
|
||||||
</optDecVariables>
|
li $t0, 1
|
||||||
<listeDecFonctions>
|
subi $sp, $sp, 4
|
||||||
<declarationFonction>
|
sw $t0, 0($sp)
|
||||||
<id_fonction>main</id_fonction>
|
lw $t0, 0($sp)
|
||||||
<listeParam>
|
addi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
sw $t0, $$a
|
||||||
<optListeDecVariables>
|
lw $t0, $$a
|
||||||
</optListeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
sw $t0, 0($sp)
|
||||||
</listeParam>
|
lw $t0, 0($sp)
|
||||||
<optDecVariables>
|
addi $sp, $sp, 4
|
||||||
</optDecVariables>
|
move $a0, $t0
|
||||||
<instructionBloc>
|
li $v0, 1
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
syscall
|
||||||
<listeInstructions>
|
li $a0, '\n'
|
||||||
<instruction>
|
li $v0, 11
|
||||||
<instructionAffect>
|
syscall
|
||||||
<var>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<id_variable>$a</id_variable>
|
lw $ra, 0($sp)
|
||||||
<optIndice>
|
addi $sp, $sp, 4
|
||||||
</optIndice>
|
lw $fp, 0($sp)
|
||||||
</var>
|
addi $sp, $sp, 4
|
||||||
<symbole>EGAL</symbole>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<expression>
|
jr $ra
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>1</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -1,118 +1,54 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
.text
|
||||||
</optDecVariables>
|
__start:
|
||||||
<listeDecFonctions>
|
jal main
|
||||||
<declarationFonction>
|
li $v0, 10
|
||||||
<id_fonction>procedure</id_fonction>
|
syscall
|
||||||
<listeParam>
|
procedure :
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
<optListeDecVariables>
|
sw $fp, 0($sp)
|
||||||
</optListeDecVariables>
|
move $fp, $sp
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
</listeParam>
|
sw $ra, 0($sp)
|
||||||
<optDecVariables>
|
li $t0, 1
|
||||||
</optDecVariables>
|
subi $sp, $sp, 4
|
||||||
<instructionBloc>
|
sw $t0, 0($sp)
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
lw $t0, 0($sp)
|
||||||
<listeInstructions>
|
addi $sp, $sp, 4
|
||||||
<instruction>
|
sw $t0 4($fp) #Adresse de retour
|
||||||
<instructionRetour>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<mot_clef>retour</mot_clef>
|
lw $ra, 0($sp)
|
||||||
<expression>
|
addi $sp, $sp, 4
|
||||||
<conjonction>
|
lw $fp, 0($sp)
|
||||||
<negation>
|
addi $sp, $sp, 4
|
||||||
<comparaison>
|
jr $ra
|
||||||
<expArith>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<terme>
|
lw $ra, 0($sp)
|
||||||
<facteur>
|
addi $sp, $sp, 4
|
||||||
<nombre>1</nombre>
|
lw $fp, 0($sp)
|
||||||
</facteur>
|
addi $sp, $sp, 4
|
||||||
<termeBis>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
</termeBis>
|
jr $ra
|
||||||
</terme>
|
main :
|
||||||
<expArithBis>
|
subi $sp, $sp, 4
|
||||||
</expArithBis>
|
sw $fp, 0($sp)
|
||||||
</expArith>
|
move $fp, $sp
|
||||||
<comparaisonBis>
|
subi $sp, $sp, 4
|
||||||
</comparaisonBis>
|
sw $ra, 0($sp)
|
||||||
</comparaison>
|
subi $sp, $sp, 4 #Val Retour
|
||||||
</negation>
|
jal procedure
|
||||||
<conjonctionBis>
|
lw $t0, 0($sp)
|
||||||
</conjonctionBis>
|
addi $sp, $sp, 4
|
||||||
</conjonction>
|
move $a0, $t0
|
||||||
<expressionBis>
|
li $v0, 1
|
||||||
</expressionBis>
|
syscall
|
||||||
</expression>
|
li $a0, '\n'
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
li $v0, 11
|
||||||
</instructionRetour>
|
syscall
|
||||||
</instruction>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<listeInstructions>
|
lw $ra, 0($sp)
|
||||||
</listeInstructions>
|
addi $sp, $sp, 4
|
||||||
</listeInstructions>
|
lw $fp, 0($sp)
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
addi $sp, $sp, 4
|
||||||
</instructionBloc>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
</declarationFonction>
|
jr $ra
|
||||||
<listeDecFonctions>
|
|
||||||
<declarationFonction>
|
|
||||||
<id_fonction>main</id_fonction>
|
|
||||||
<listeParam>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<optListeDecVariables>
|
|
||||||
</optListeDecVariables>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</listeParam>
|
|
||||||
<optDecVariables>
|
|
||||||
</optDecVariables>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<appelFct>
|
|
||||||
<id_fonction>procedure</id_fonction>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<listeExpressions>
|
|
||||||
</listeExpressions>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</appelFct>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -1,146 +1,52 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
.text
|
||||||
</optDecVariables>
|
__start:
|
||||||
<listeDecFonctions>
|
jal main
|
||||||
<declarationFonction>
|
li $v0, 10
|
||||||
<id_fonction>procedure</id_fonction>
|
syscall
|
||||||
<listeParam>
|
procedure :
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
<optListeDecVariables>
|
sw $fp, 0($sp)
|
||||||
</optListeDecVariables>
|
move $fp, $sp
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
</listeParam>
|
sw $ra, 0($sp)
|
||||||
<optDecVariables>
|
subi $sp, $sp, 4
|
||||||
<listeDecVariables>
|
li $t0, 1
|
||||||
<declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<mot_clef>entier</mot_clef>
|
sw $t0, 0($sp)
|
||||||
<id_variable>$a</id_variable>
|
lw $t0, 0($sp)
|
||||||
<optTailleTableau>
|
addi $sp, $sp, 4
|
||||||
</optTailleTableau>
|
sw $t0, -8($fp) #variable locale
|
||||||
</declarationVariable>
|
lw $t0, -8($fp) #variable locale
|
||||||
<listeDecVariablesBis>
|
subi $sp, $sp, 4
|
||||||
</listeDecVariablesBis>
|
sw $t0, 0($sp)
|
||||||
</listeDecVariables>
|
lw $t0, 0($sp)
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
addi $sp, $sp, 4
|
||||||
</optDecVariables>
|
move $a0, $t0
|
||||||
<instructionBloc>
|
li $v0, 1
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
syscall
|
||||||
<listeInstructions>
|
li $a0, '\n'
|
||||||
<instruction>
|
li $v0, 11
|
||||||
<instructionAffect>
|
syscall
|
||||||
<var>
|
addi $sp, $sp 4 # desallocation variables locales
|
||||||
<id_variable>$a</id_variable>
|
lw $ra, 0($sp)
|
||||||
<optIndice>
|
addi $sp, $sp, 4
|
||||||
</optIndice>
|
lw $fp, 0($sp)
|
||||||
</var>
|
addi $sp, $sp, 4
|
||||||
<symbole>EGAL</symbole>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<expression>
|
jr $ra
|
||||||
<conjonction>
|
main :
|
||||||
<negation>
|
subi $sp, $sp, 4
|
||||||
<comparaison>
|
sw $fp, 0($sp)
|
||||||
<expArith>
|
move $fp, $sp
|
||||||
<terme>
|
subi $sp, $sp, 4
|
||||||
<facteur>
|
sw $ra, 0($sp)
|
||||||
<nombre>1</nombre>
|
subi $sp, $sp, 4 #Val Retour
|
||||||
</facteur>
|
jal procedure
|
||||||
<termeBis>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
</termeBis>
|
lw $ra, 0($sp)
|
||||||
</terme>
|
addi $sp, $sp, 4
|
||||||
<expArithBis>
|
lw $fp, 0($sp)
|
||||||
</expArithBis>
|
addi $sp, $sp, 4
|
||||||
</expArith>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<comparaisonBis>
|
jr $ra
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
<declarationFonction>
|
|
||||||
<id_fonction>main</id_fonction>
|
|
||||||
<listeParam>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<optListeDecVariables>
|
|
||||||
</optListeDecVariables>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</listeParam>
|
|
||||||
<optDecVariables>
|
|
||||||
</optDecVariables>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAppel>
|
|
||||||
<appelFct>
|
|
||||||
<id_fonction>procedure</id_fonction>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<listeExpressions>
|
|
||||||
</listeExpressions>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</appelFct>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAppel>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -1,112 +1,40 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
$$a: .space 4
|
||||||
<listeDecVariables>
|
.text
|
||||||
<declarationVariable>
|
__start:
|
||||||
<mot_clef>entier</mot_clef>
|
jal main
|
||||||
<id_variable>$a</id_variable>
|
li $v0, 10
|
||||||
<optTailleTableau>
|
syscall
|
||||||
</optTailleTableau>
|
main :
|
||||||
</declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
sw $fp, 0($sp)
|
||||||
</listeDecVariablesBis>
|
move $fp, $sp
|
||||||
</listeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
sw $ra, 0($sp)
|
||||||
</optDecVariables>
|
li $t0, 1
|
||||||
<listeDecFonctions>
|
subi $sp, $sp, 4
|
||||||
<declarationFonction>
|
sw $t0, 0($sp)
|
||||||
<id_fonction>main</id_fonction>
|
lw $t0, 0($sp)
|
||||||
<listeParam>
|
addi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
beq $t0 $zero e0
|
||||||
<optListeDecVariables>
|
li $t0, 1
|
||||||
</optListeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
sw $t0, 0($sp)
|
||||||
</listeParam>
|
lw $t0, 0($sp)
|
||||||
<optDecVariables>
|
addi $sp, $sp, 4
|
||||||
</optDecVariables>
|
move $a0, $t0
|
||||||
<instructionBloc>
|
li $v0, 1
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
syscall
|
||||||
<listeInstructions>
|
li $a0, '\n'
|
||||||
<instruction>
|
li $v0, 11
|
||||||
<instructionSi>
|
syscall
|
||||||
<mot_clef>si</mot_clef>
|
j e1
|
||||||
<expression>
|
e0:
|
||||||
<conjonction>
|
e1:
|
||||||
<negation>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<comparaison>
|
lw $ra, 0($sp)
|
||||||
<expArith>
|
addi $sp, $sp, 4
|
||||||
<terme>
|
lw $fp, 0($sp)
|
||||||
<facteur>
|
addi $sp, $sp, 4
|
||||||
<nombre>1</nombre>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
</facteur>
|
jr $ra
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<mot_clef>alors</mot_clef>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>1</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
<optSinon>
|
|
||||||
</optSinon>
|
|
||||||
</instructionSi>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
0
eval-final-projet/output/eval13-err.synt.xml
Normal file
0
eval-final-projet/output/eval13-err.synt.xml
Normal file
@@ -1,154 +1,51 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
$$a: .space 4
|
||||||
<listeDecVariables>
|
.text
|
||||||
<declarationVariable>
|
__start:
|
||||||
<mot_clef>entier</mot_clef>
|
jal main
|
||||||
<id_variable>$a</id_variable>
|
li $v0, 10
|
||||||
<optTailleTableau>
|
syscall
|
||||||
</optTailleTableau>
|
main :
|
||||||
</declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
sw $fp, 0($sp)
|
||||||
</listeDecVariablesBis>
|
move $fp, $sp
|
||||||
</listeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
sw $ra, 0($sp)
|
||||||
</optDecVariables>
|
li $t0, 0
|
||||||
<listeDecFonctions>
|
subi $sp, $sp, 4
|
||||||
<declarationFonction>
|
sw $t0, 0($sp)
|
||||||
<id_fonction>main</id_fonction>
|
lw $t0, 0($sp)
|
||||||
<listeParam>
|
addi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
beq $t0 $zero e0
|
||||||
<optListeDecVariables>
|
li $t0, 1
|
||||||
</optListeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
sw $t0, 0($sp)
|
||||||
</listeParam>
|
lw $t0, 0($sp)
|
||||||
<optDecVariables>
|
addi $sp, $sp, 4
|
||||||
</optDecVariables>
|
move $a0, $t0
|
||||||
<instructionBloc>
|
li $v0, 1
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
syscall
|
||||||
<listeInstructions>
|
li $a0, '\n'
|
||||||
<instruction>
|
li $v0, 11
|
||||||
<instructionSi>
|
syscall
|
||||||
<mot_clef>si</mot_clef>
|
j e1
|
||||||
<expression>
|
e0:
|
||||||
<conjonction>
|
li $t0, 0
|
||||||
<negation>
|
subi $sp, $sp, 4
|
||||||
<comparaison>
|
sw $t0, 0($sp)
|
||||||
<expArith>
|
lw $t0, 0($sp)
|
||||||
<terme>
|
addi $sp, $sp, 4
|
||||||
<facteur>
|
move $a0, $t0
|
||||||
<nombre>0</nombre>
|
li $v0, 1
|
||||||
</facteur>
|
syscall
|
||||||
<termeBis>
|
li $a0, '\n'
|
||||||
</termeBis>
|
li $v0, 11
|
||||||
</terme>
|
syscall
|
||||||
<expArithBis>
|
e1:
|
||||||
</expArithBis>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
</expArith>
|
lw $ra, 0($sp)
|
||||||
<comparaisonBis>
|
addi $sp, $sp, 4
|
||||||
</comparaisonBis>
|
lw $fp, 0($sp)
|
||||||
</comparaison>
|
addi $sp, $sp, 4
|
||||||
</negation>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<conjonctionBis>
|
jr $ra
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<mot_clef>alors</mot_clef>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>1</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
<optSinon>
|
|
||||||
<mot_clef>sinon</mot_clef>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>0</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</optSinon>
|
|
||||||
</instructionSi>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -1,487 +1,140 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
$$tab: .space 40
|
||||||
<listeDecVariables>
|
.text
|
||||||
<declarationVariable>
|
__start:
|
||||||
<mot_clef>entier</mot_clef>
|
jal main
|
||||||
<id_variable>$tab</id_variable>
|
li $v0, 10
|
||||||
<optTailleTableau>
|
syscall
|
||||||
<symbole>CROCHET_OUVRANT</symbole>
|
main :
|
||||||
<nombre>10</nombre>
|
subi $sp, $sp, 4
|
||||||
<symbole>CROCHET_FERMANT</symbole>
|
sw $fp, 0($sp)
|
||||||
</optTailleTableau>
|
move $fp, $sp
|
||||||
</declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
sw $ra, 0($sp)
|
||||||
</listeDecVariablesBis>
|
subi $sp, $sp, 4
|
||||||
</listeDecVariables>
|
li $t0, 0
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
subi $sp, $sp, 4
|
||||||
</optDecVariables>
|
sw $t0, 0($sp)
|
||||||
<listeDecFonctions>
|
lw $t0, 0($sp)
|
||||||
<declarationFonction>
|
addi $sp, $sp, 4
|
||||||
<id_fonction>main</id_fonction>
|
sw $t0, -8($fp) #variable locale
|
||||||
<listeParam>
|
e0:
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
lw $t0, -8($fp) #variable locale
|
||||||
<optListeDecVariables>
|
subi $sp, $sp, 4
|
||||||
</optListeDecVariables>
|
sw $t0, 0($sp)
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
li $t0, 10
|
||||||
</listeParam>
|
subi $sp, $sp, 4
|
||||||
<optDecVariables>
|
sw $t0, 0($sp)
|
||||||
<listeDecVariables>
|
lw $t2, 0($sp)
|
||||||
<declarationVariable>
|
addi $sp, $sp, 4
|
||||||
<mot_clef>entier</mot_clef>
|
lw $t1, 0($sp)
|
||||||
<id_variable>$a</id_variable>
|
addi $sp, $sp, 4
|
||||||
<optTailleTableau>
|
li $t0, 1
|
||||||
</optTailleTableau>
|
blt $t1, $t2 e2
|
||||||
</declarationVariable>
|
li $t0, 0
|
||||||
<listeDecVariablesBis>
|
e2:
|
||||||
</listeDecVariablesBis>
|
subi $sp, $sp, 4
|
||||||
</listeDecVariables>
|
sw $t0, 0($sp)
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
lw $t0, 0($sp)
|
||||||
</optDecVariables>
|
addi $sp, $sp, 4
|
||||||
<instructionBloc>
|
beq $t0 $0 e1
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
lw $t0, -8($fp) #variable locale
|
||||||
<listeInstructions>
|
subi $sp, $sp, 4
|
||||||
<instruction>
|
sw $t0, 0($sp)
|
||||||
<instructionAffect>
|
lw $t0, -8($fp) #variable locale
|
||||||
<var>
|
subi $sp, $sp, 4
|
||||||
<id_variable>$a</id_variable>
|
sw $t0, 0($sp)
|
||||||
<optIndice>
|
lw $t4, 0($sp)
|
||||||
</optIndice>
|
addi $sp, $sp, 4
|
||||||
</var>
|
add $t4,$t4,$t4
|
||||||
<symbole>EGAL</symbole>
|
add $t4,$t4,$t4
|
||||||
<expression>
|
lw $t0, 0($sp)
|
||||||
<conjonction>
|
addi $sp, $sp, 4
|
||||||
<negation>
|
sw $t0, $$tab($t4)
|
||||||
<comparaison>
|
lw $t0, -8($fp) #variable locale
|
||||||
<expArith>
|
subi $sp, $sp, 4
|
||||||
<terme>
|
sw $t0, 0($sp)
|
||||||
<facteur>
|
li $t0, 1
|
||||||
<nombre>0</nombre>
|
subi $sp, $sp, 4
|
||||||
</facteur>
|
sw $t0, 0($sp)
|
||||||
<termeBis>
|
lw $t2, 0($sp)
|
||||||
</termeBis>
|
addi $sp, $sp, 4
|
||||||
</terme>
|
lw $t1, 0($sp)
|
||||||
<expArithBis>
|
addi $sp, $sp, 4
|
||||||
</expArithBis>
|
add $t0, $t1, $t2
|
||||||
</expArith>
|
subi $sp, $sp, 4
|
||||||
<comparaisonBis>
|
sw $t0, 0($sp)
|
||||||
</comparaisonBis>
|
lw $t0, 0($sp)
|
||||||
</comparaison>
|
addi $sp, $sp, 4
|
||||||
</negation>
|
sw $t0, -8($fp) #variable locale
|
||||||
<conjonctionBis>
|
j e0
|
||||||
</conjonctionBis>
|
e1:
|
||||||
</conjonction>
|
li $t0, 0
|
||||||
<expressionBis>
|
subi $sp, $sp, 4
|
||||||
</expressionBis>
|
sw $t0, 0($sp)
|
||||||
</expression>
|
lw $t0, 0($sp)
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
addi $sp, $sp, 4
|
||||||
</instructionAffect>
|
sw $t0, -8($fp) #variable locale
|
||||||
</instruction>
|
e3:
|
||||||
<listeInstructions>
|
lw $t0, -8($fp) #variable locale
|
||||||
<instruction>
|
subi $sp, $sp, 4
|
||||||
<instructionTantque>
|
sw $t0, 0($sp)
|
||||||
<mot_clef>tantque</mot_clef>
|
li $t0, 10
|
||||||
<expression>
|
subi $sp, $sp, 4
|
||||||
<conjonction>
|
sw $t0, 0($sp)
|
||||||
<negation>
|
lw $t2, 0($sp)
|
||||||
<comparaison>
|
addi $sp, $sp, 4
|
||||||
<expArith>
|
lw $t1, 0($sp)
|
||||||
<terme>
|
addi $sp, $sp, 4
|
||||||
<facteur>
|
li $t0, 1
|
||||||
<var>
|
blt $t1, $t2 e5
|
||||||
<id_variable>$a</id_variable>
|
li $t0, 0
|
||||||
<optIndice>
|
e5:
|
||||||
</optIndice>
|
subi $sp, $sp, 4
|
||||||
</var>
|
sw $t0, 0($sp)
|
||||||
</facteur>
|
lw $t0, 0($sp)
|
||||||
<termeBis>
|
addi $sp, $sp, 4
|
||||||
</termeBis>
|
beq $t0 $0 e4
|
||||||
</terme>
|
lw $t0, -8($fp) #variable locale
|
||||||
<expArithBis>
|
subi $sp, $sp, 4
|
||||||
</expArithBis>
|
sw $t0, 0($sp)
|
||||||
</expArith>
|
lw $t4, 0($sp)
|
||||||
<comparaisonBis>
|
addi $sp, $sp, 4
|
||||||
<symbole>INFERIEUR</symbole>
|
add $t4,$t4,$t4
|
||||||
<expArith>
|
add $t4,$t4,$t4
|
||||||
<terme>
|
lw $t0, $$tab($t4)
|
||||||
<facteur>
|
subi $sp, $sp, 4
|
||||||
<nombre>10</nombre>
|
sw $t0, 0($sp)
|
||||||
</facteur>
|
lw $t0, 0($sp)
|
||||||
<termeBis>
|
addi $sp, $sp, 4
|
||||||
</termeBis>
|
move $a0, $t0
|
||||||
</terme>
|
li $v0, 1
|
||||||
<expArithBis>
|
syscall
|
||||||
</expArithBis>
|
li $a0, '\n'
|
||||||
</expArith>
|
li $v0, 11
|
||||||
<comparaisonBis>
|
syscall
|
||||||
</comparaisonBis>
|
lw $t0, -8($fp) #variable locale
|
||||||
</comparaisonBis>
|
subi $sp, $sp, 4
|
||||||
</comparaison>
|
sw $t0, 0($sp)
|
||||||
</negation>
|
li $t0, 1
|
||||||
<conjonctionBis>
|
subi $sp, $sp, 4
|
||||||
</conjonctionBis>
|
sw $t0, 0($sp)
|
||||||
</conjonction>
|
lw $t2, 0($sp)
|
||||||
<expressionBis>
|
addi $sp, $sp, 4
|
||||||
</expressionBis>
|
lw $t1, 0($sp)
|
||||||
</expression>
|
addi $sp, $sp, 4
|
||||||
<mot_clef>faire</mot_clef>
|
add $t0, $t1, $t2
|
||||||
<instructionBloc>
|
subi $sp, $sp, 4
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
sw $t0, 0($sp)
|
||||||
<listeInstructions>
|
lw $t0, 0($sp)
|
||||||
<instruction>
|
addi $sp, $sp, 4
|
||||||
<instructionAffect>
|
sw $t0, -8($fp) #variable locale
|
||||||
<var>
|
j e3
|
||||||
<id_variable>$tab</id_variable>
|
e4:
|
||||||
<optIndice>
|
addi $sp, $sp 4 # desallocation variables locales
|
||||||
<symbole>CROCHET_OUVRANT</symbole>
|
lw $ra, 0($sp)
|
||||||
<expression>
|
addi $sp, $sp, 4
|
||||||
<conjonction>
|
lw $fp, 0($sp)
|
||||||
<negation>
|
addi $sp, $sp, 4
|
||||||
<comparaison>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<expArith>
|
jr $ra
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>CROCHET_FERMANT</symbole>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAffect>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
<symbole>PLUS</symbole>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>1</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</instructionTantque>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAffect>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>0</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionTantque>
|
|
||||||
<mot_clef>tantque</mot_clef>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
<symbole>INFERIEUR</symbole>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>10</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<mot_clef>faire</mot_clef>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$tab</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
<symbole>CROCHET_OUVRANT</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>CROCHET_FERMANT</symbole>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAffect>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
<symbole>PLUS</symbole>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>1</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</instructionTantque>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -1,170 +1,51 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
$$tab: .space 40
|
||||||
<listeDecVariables>
|
.text
|
||||||
<declarationVariable>
|
__start:
|
||||||
<mot_clef>entier</mot_clef>
|
jal main
|
||||||
<id_variable>$tab</id_variable>
|
li $v0, 10
|
||||||
<optTailleTableau>
|
syscall
|
||||||
<symbole>CROCHET_OUVRANT</symbole>
|
main :
|
||||||
<nombre>10</nombre>
|
subi $sp, $sp, 4
|
||||||
<symbole>CROCHET_FERMANT</symbole>
|
sw $fp, 0($sp)
|
||||||
</optTailleTableau>
|
move $fp, $sp
|
||||||
</declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
sw $ra, 0($sp)
|
||||||
</listeDecVariablesBis>
|
li $t0, 4
|
||||||
</listeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
sw $t0, 0($sp)
|
||||||
</optDecVariables>
|
li $t0, 4
|
||||||
<listeDecFonctions>
|
subi $sp, $sp, 4
|
||||||
<declarationFonction>
|
sw $t0, 0($sp)
|
||||||
<id_fonction>main</id_fonction>
|
lw $t4, 0($sp)
|
||||||
<listeParam>
|
addi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
add $t4,$t4,$t4
|
||||||
<optListeDecVariables>
|
add $t4,$t4,$t4
|
||||||
</optListeDecVariables>
|
lw $t0, 0($sp)
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
addi $sp, $sp, 4
|
||||||
</listeParam>
|
sw $t0, $$tab($t4)
|
||||||
<optDecVariables>
|
li $t0, 4
|
||||||
</optDecVariables>
|
subi $sp, $sp, 4
|
||||||
<instructionBloc>
|
sw $t0, 0($sp)
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
lw $t4, 0($sp)
|
||||||
<listeInstructions>
|
addi $sp, $sp, 4
|
||||||
<instruction>
|
add $t4,$t4,$t4
|
||||||
<instructionAffect>
|
add $t4,$t4,$t4
|
||||||
<var>
|
lw $t0, $$tab($t4)
|
||||||
<id_variable>$tab</id_variable>
|
subi $sp, $sp, 4
|
||||||
<optIndice>
|
sw $t0, 0($sp)
|
||||||
<symbole>CROCHET_OUVRANT</symbole>
|
lw $t0, 0($sp)
|
||||||
<expression>
|
addi $sp, $sp, 4
|
||||||
<conjonction>
|
move $a0, $t0
|
||||||
<negation>
|
li $v0, 1
|
||||||
<comparaison>
|
syscall
|
||||||
<expArith>
|
li $a0, '\n'
|
||||||
<terme>
|
li $v0, 11
|
||||||
<facteur>
|
syscall
|
||||||
<nombre>4</nombre>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
</facteur>
|
lw $ra, 0($sp)
|
||||||
<termeBis>
|
addi $sp, $sp, 4
|
||||||
</termeBis>
|
lw $fp, 0($sp)
|
||||||
</terme>
|
addi $sp, $sp, 4
|
||||||
<expArithBis>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
</expArithBis>
|
jr $ra
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>CROCHET_FERMANT</symbole>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>4</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$tab</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
<symbole>CROCHET_OUVRANT</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>4</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>CROCHET_FERMANT</symbole>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -1,110 +1,40 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
$$a: .space 4
|
||||||
<listeDecVariables>
|
.text
|
||||||
<declarationVariable>
|
__start:
|
||||||
<mot_clef>entier</mot_clef>
|
jal main
|
||||||
<id_variable>$a</id_variable>
|
li $v0, 10
|
||||||
<optTailleTableau>
|
syscall
|
||||||
</optTailleTableau>
|
main :
|
||||||
</declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
sw $fp, 0($sp)
|
||||||
</listeDecVariablesBis>
|
move $fp, $sp
|
||||||
</listeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
sw $ra, 0($sp)
|
||||||
</optDecVariables>
|
e0:
|
||||||
<listeDecFonctions>
|
li $t0, 0
|
||||||
<declarationFonction>
|
subi $sp, $sp, 4
|
||||||
<id_fonction>main</id_fonction>
|
sw $t0, 0($sp)
|
||||||
<listeParam>
|
lw $t0, 0($sp)
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
addi $sp, $sp, 4
|
||||||
<optListeDecVariables>
|
beq $t0 $0 e1
|
||||||
</optListeDecVariables>
|
li $t0, 1
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
</listeParam>
|
sw $t0, 0($sp)
|
||||||
<optDecVariables>
|
lw $t0, 0($sp)
|
||||||
</optDecVariables>
|
addi $sp, $sp, 4
|
||||||
<instructionBloc>
|
move $a0, $t0
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
li $v0, 1
|
||||||
<listeInstructions>
|
syscall
|
||||||
<instruction>
|
li $a0, '\n'
|
||||||
<instructionTantque>
|
li $v0, 11
|
||||||
<mot_clef>tantque</mot_clef>
|
syscall
|
||||||
<expression>
|
j e0
|
||||||
<conjonction>
|
e1:
|
||||||
<negation>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<comparaison>
|
lw $ra, 0($sp)
|
||||||
<expArith>
|
addi $sp, $sp, 4
|
||||||
<terme>
|
lw $fp, 0($sp)
|
||||||
<facteur>
|
addi $sp, $sp, 4
|
||||||
<nombre>0</nombre>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
</facteur>
|
jr $ra
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<mot_clef>faire</mot_clef>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>1</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</instructionTantque>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -1,222 +1,75 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
$$a: .space 4
|
||||||
<listeDecVariables>
|
.text
|
||||||
<declarationVariable>
|
__start:
|
||||||
<mot_clef>entier</mot_clef>
|
jal main
|
||||||
<id_variable>$a</id_variable>
|
li $v0, 10
|
||||||
<optTailleTableau>
|
syscall
|
||||||
</optTailleTableau>
|
main :
|
||||||
</declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
sw $fp, 0($sp)
|
||||||
</listeDecVariablesBis>
|
move $fp, $sp
|
||||||
</listeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
sw $ra, 0($sp)
|
||||||
</optDecVariables>
|
li $t0, 0
|
||||||
<listeDecFonctions>
|
subi $sp, $sp, 4
|
||||||
<declarationFonction>
|
sw $t0, 0($sp)
|
||||||
<id_fonction>main</id_fonction>
|
lw $t0, 0($sp)
|
||||||
<listeParam>
|
addi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
sw $t0, $$a
|
||||||
<optListeDecVariables>
|
e0:
|
||||||
</optListeDecVariables>
|
lw $t0, $$a
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
</listeParam>
|
sw $t0, 0($sp)
|
||||||
<optDecVariables>
|
li $t0, 10
|
||||||
</optDecVariables>
|
subi $sp, $sp, 4
|
||||||
<instructionBloc>
|
sw $t0, 0($sp)
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
lw $t2, 0($sp)
|
||||||
<listeInstructions>
|
addi $sp, $sp, 4
|
||||||
<instruction>
|
lw $t1, 0($sp)
|
||||||
<instructionAffect>
|
addi $sp, $sp, 4
|
||||||
<var>
|
li $t0, 1
|
||||||
<id_variable>$a</id_variable>
|
blt $t1, $t2 e2
|
||||||
<optIndice>
|
li $t0, 0
|
||||||
</optIndice>
|
e2:
|
||||||
</var>
|
subi $sp, $sp, 4
|
||||||
<symbole>EGAL</symbole>
|
sw $t0, 0($sp)
|
||||||
<expression>
|
lw $t0, 0($sp)
|
||||||
<conjonction>
|
addi $sp, $sp, 4
|
||||||
<negation>
|
beq $t0 $0 e1
|
||||||
<comparaison>
|
lw $t0, $$a
|
||||||
<expArith>
|
subi $sp, $sp, 4
|
||||||
<terme>
|
sw $t0, 0($sp)
|
||||||
<facteur>
|
lw $t0, 0($sp)
|
||||||
<nombre>0</nombre>
|
addi $sp, $sp, 4
|
||||||
</facteur>
|
move $a0, $t0
|
||||||
<termeBis>
|
li $v0, 1
|
||||||
</termeBis>
|
syscall
|
||||||
</terme>
|
li $a0, '\n'
|
||||||
<expArithBis>
|
li $v0, 11
|
||||||
</expArithBis>
|
syscall
|
||||||
</expArith>
|
lw $t0, $$a
|
||||||
<comparaisonBis>
|
subi $sp, $sp, 4
|
||||||
</comparaisonBis>
|
sw $t0, 0($sp)
|
||||||
</comparaison>
|
li $t0, 1
|
||||||
</negation>
|
subi $sp, $sp, 4
|
||||||
<conjonctionBis>
|
sw $t0, 0($sp)
|
||||||
</conjonctionBis>
|
lw $t2, 0($sp)
|
||||||
</conjonction>
|
addi $sp, $sp, 4
|
||||||
<expressionBis>
|
lw $t1, 0($sp)
|
||||||
</expressionBis>
|
addi $sp, $sp, 4
|
||||||
</expression>
|
add $t0, $t1, $t2
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
subi $sp, $sp, 4
|
||||||
</instructionAffect>
|
sw $t0, 0($sp)
|
||||||
</instruction>
|
lw $t0, 0($sp)
|
||||||
<listeInstructions>
|
addi $sp, $sp, 4
|
||||||
<instruction>
|
sw $t0, $$a
|
||||||
<instructionTantque>
|
j e0
|
||||||
<mot_clef>tantque</mot_clef>
|
e1:
|
||||||
<expression>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<conjonction>
|
lw $ra, 0($sp)
|
||||||
<negation>
|
addi $sp, $sp, 4
|
||||||
<comparaison>
|
lw $fp, 0($sp)
|
||||||
<expArith>
|
addi $sp, $sp, 4
|
||||||
<terme>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<facteur>
|
jr $ra
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
<symbole>INFERIEUR</symbole>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>10</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<mot_clef>faire</mot_clef>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAffect>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
<symbole>PLUS</symbole>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>1</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</instructionTantque>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -1,401 +1,108 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
$$t0: .space 4
|
||||||
<listeDecVariables>
|
$$t1: .space 4
|
||||||
<declarationVariable>
|
$$123: .space 4
|
||||||
<mot_clef>entier</mot_clef>
|
$$: .space 4
|
||||||
<id_variable>$t0</id_variable>
|
$$$: .space 4
|
||||||
<optTailleTableau>
|
$$$$: .space 4
|
||||||
</optTailleTableau>
|
$$f: .space 4
|
||||||
</declarationVariable>
|
$$_: .space 4
|
||||||
<listeDecVariablesBis>
|
.text
|
||||||
<symbole>VIRGULE</symbole>
|
__start:
|
||||||
<declarationVariable>
|
jal main
|
||||||
<mot_clef>entier</mot_clef>
|
li $v0, 10
|
||||||
<id_variable>$t1</id_variable>
|
syscall
|
||||||
<optTailleTableau>
|
f :
|
||||||
</optTailleTableau>
|
subi $sp, $sp, 4
|
||||||
</declarationVariable>
|
sw $fp, 0($sp)
|
||||||
<listeDecVariablesBis>
|
move $fp, $sp
|
||||||
<symbole>VIRGULE</symbole>
|
subi $sp, $sp, 4
|
||||||
<declarationVariable>
|
sw $ra, 0($sp)
|
||||||
<mot_clef>entier</mot_clef>
|
subi $sp, $sp, 4
|
||||||
<id_variable>$123</id_variable>
|
subi $sp, $sp, 4
|
||||||
<optTailleTableau>
|
subi $sp, $sp, 4
|
||||||
</optTailleTableau>
|
lw $t0, $$123
|
||||||
</declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
sw $t0, 0($sp)
|
||||||
<symbole>VIRGULE</symbole>
|
lw $t0, -16($fp) #variable locale
|
||||||
<declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<mot_clef>entier</mot_clef>
|
sw $t0, 0($sp)
|
||||||
<id_variable>$</id_variable>
|
lw $t2, 0($sp)
|
||||||
<optTailleTableau>
|
addi $sp, $sp, 4
|
||||||
</optTailleTableau>
|
lw $t1, 0($sp)
|
||||||
</declarationVariable>
|
addi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
add $t0, $t1, $t2
|
||||||
<symbole>VIRGULE</symbole>
|
subi $sp, $sp, 4
|
||||||
<declarationVariable>
|
sw $t0, 0($sp)
|
||||||
<mot_clef>entier</mot_clef>
|
lw $t0, 4($fp) #variable argument $$
|
||||||
<id_variable>$$</id_variable>
|
subi $sp, $sp, 4
|
||||||
<optTailleTableau>
|
sw $t0, 0($sp)
|
||||||
</optTailleTableau>
|
lw $t2, 0($sp)
|
||||||
</declarationVariable>
|
addi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
lw $t1, 0($sp)
|
||||||
<symbole>VIRGULE</symbole>
|
addi $sp, $sp, 4
|
||||||
<declarationVariable>
|
add $t0, $t1, $t2
|
||||||
<mot_clef>entier</mot_clef>
|
subi $sp, $sp, 4
|
||||||
<id_variable>$$$</id_variable>
|
sw $t0, 0($sp)
|
||||||
<optTailleTableau>
|
lw $t0, 0($sp)
|
||||||
</optTailleTableau>
|
addi $sp, $sp, 4
|
||||||
</declarationVariable>
|
sw $t0, $$
|
||||||
<listeDecVariablesBis>
|
lw $t0, $$
|
||||||
<symbole>VIRGULE</symbole>
|
subi $sp, $sp, 4
|
||||||
<declarationVariable>
|
sw $t0, 0($sp)
|
||||||
<mot_clef>entier</mot_clef>
|
lw $t0, 0($sp)
|
||||||
<id_variable>$f</id_variable>
|
addi $sp, $sp, 4
|
||||||
<optTailleTableau>
|
move $a0, $t0
|
||||||
</optTailleTableau>
|
li $v0, 1
|
||||||
</declarationVariable>
|
syscall
|
||||||
<listeDecVariablesBis>
|
li $a0, '\n'
|
||||||
<symbole>VIRGULE</symbole>
|
li $v0, 11
|
||||||
<declarationVariable>
|
syscall
|
||||||
<mot_clef>entier</mot_clef>
|
addi $sp, $sp 12 # desallocation variables locales
|
||||||
<id_variable>$_</id_variable>
|
lw $ra, 0($sp)
|
||||||
<optTailleTableau>
|
addi $sp, $sp, 4
|
||||||
</optTailleTableau>
|
lw $fp, 0($sp)
|
||||||
</declarationVariable>
|
addi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
</listeDecVariablesBis>
|
jr $ra
|
||||||
</listeDecVariablesBis>
|
main :
|
||||||
</listeDecVariablesBis>
|
subi $sp, $sp, 4
|
||||||
</listeDecVariablesBis>
|
sw $fp, 0($sp)
|
||||||
</listeDecVariablesBis>
|
move $fp, $sp
|
||||||
</listeDecVariablesBis>
|
subi $sp, $sp, 4
|
||||||
</listeDecVariablesBis>
|
sw $ra, 0($sp)
|
||||||
</listeDecVariablesBis>
|
li $t0, 1
|
||||||
</listeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
sw $t0, 0($sp)
|
||||||
</optDecVariables>
|
lw $t0, 0($sp)
|
||||||
<listeDecFonctions>
|
addi $sp, $sp, 4
|
||||||
<declarationFonction>
|
sw $t0, $$t0
|
||||||
<id_fonction>f</id_fonction>
|
lw $t0, $$t0
|
||||||
<listeParam>
|
subi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
sw $t0, 0($sp)
|
||||||
<optListeDecVariables>
|
li $t0, 0
|
||||||
<listeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<declarationVariable>
|
sw $t0, 0($sp)
|
||||||
<mot_clef>entier</mot_clef>
|
lw $t2, 0($sp)
|
||||||
<id_variable>$$</id_variable>
|
addi $sp, $sp, 4
|
||||||
<optTailleTableau>
|
lw $t1, 0($sp)
|
||||||
</optTailleTableau>
|
addi $sp, $sp, 4
|
||||||
</declarationVariable>
|
add $t0, $t1, $t2
|
||||||
<listeDecVariablesBis>
|
subi $sp, $sp, 4
|
||||||
</listeDecVariablesBis>
|
sw $t0, 0($sp)
|
||||||
</listeDecVariables>
|
lw $t0, 0($sp)
|
||||||
</optListeDecVariables>
|
addi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
sw $t0, $$123
|
||||||
</listeParam>
|
subi $sp, $sp, 4 #Val Retour
|
||||||
<optDecVariables>
|
lw $t0, $$123
|
||||||
<listeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<declarationVariable>
|
sw $t0, 0($sp)
|
||||||
<mot_clef>entier</mot_clef>
|
jal f
|
||||||
<id_variable>$$$</id_variable>
|
addi $sp, $sp, 4 #désalocation des arguments
|
||||||
<optTailleTableau>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
</optTailleTableau>
|
lw $ra, 0($sp)
|
||||||
</declarationVariable>
|
addi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
lw $fp, 0($sp)
|
||||||
<symbole>VIRGULE</symbole>
|
addi $sp, $sp, 4
|
||||||
<declarationVariable>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<mot_clef>entier</mot_clef>
|
jr $ra
|
||||||
<id_variable>$f</id_variable>
|
|
||||||
<optTailleTableau>
|
|
||||||
</optTailleTableau>
|
|
||||||
</declarationVariable>
|
|
||||||
<listeDecVariablesBis>
|
|
||||||
<symbole>VIRGULE</symbole>
|
|
||||||
<declarationVariable>
|
|
||||||
<mot_clef>entier</mot_clef>
|
|
||||||
<id_variable>$_</id_variable>
|
|
||||||
<optTailleTableau>
|
|
||||||
</optTailleTableau>
|
|
||||||
</declarationVariable>
|
|
||||||
<listeDecVariablesBis>
|
|
||||||
</listeDecVariablesBis>
|
|
||||||
</listeDecVariablesBis>
|
|
||||||
</listeDecVariablesBis>
|
|
||||||
</listeDecVariables>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</optDecVariables>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAffect>
|
|
||||||
<var>
|
|
||||||
<id_variable>$</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$123</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
<symbole>PLUS</symbole>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$_</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
<symbole>PLUS</symbole>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$$</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
<declarationFonction>
|
|
||||||
<id_fonction>main</id_fonction>
|
|
||||||
<listeParam>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<optListeDecVariables>
|
|
||||||
</optListeDecVariables>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</listeParam>
|
|
||||||
<optDecVariables>
|
|
||||||
</optDecVariables>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAffect>
|
|
||||||
<var>
|
|
||||||
<id_variable>$t0</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>1</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAffect>
|
|
||||||
<var>
|
|
||||||
<id_variable>$123</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$t0</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
<symbole>PLUS</symbole>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>0</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAppel>
|
|
||||||
<appelFct>
|
|
||||||
<id_fonction>f</id_fonction>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<listeExpressions>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$123</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<listeExpressionsBis>
|
|
||||||
</listeExpressionsBis>
|
|
||||||
</listeExpressions>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</appelFct>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAppel>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -16,11 +16,15 @@ sw $t0, 0($sp)
|
|||||||
lw $t1, 0($sp)
|
lw $t1, 0($sp)
|
||||||
addi $sp, $sp, 4
|
addi $sp, $sp, 4
|
||||||
beq $zero, $t1, e1
|
beq $zero, $t1, e1
|
||||||
|
subi $sp, $sp, 4
|
||||||
|
sw $t1, 0($sp)
|
||||||
li $t0, 2
|
li $t0, 2
|
||||||
subi $sp, $sp, 4
|
subi $sp, $sp, 4
|
||||||
sw $t0, 0($sp)
|
sw $t0, 0($sp)
|
||||||
lw $t2, 0($sp)
|
lw $t2, 0($sp)
|
||||||
addi $sp, $sp, 4
|
addi $sp, $sp, 4
|
||||||
|
lw $t1, 0($sp)
|
||||||
|
addi $sp, $sp, 4
|
||||||
beq $zero, $t2, e1
|
beq $zero, $t2, e1
|
||||||
and $t0, $t1, $t2
|
and $t0, $t1, $t2
|
||||||
j e0
|
j e0
|
||||||
|
|||||||
@@ -1,80 +1,50 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
.text
|
||||||
</optDecVariables>
|
__start:
|
||||||
<listeDecFonctions>
|
jal main
|
||||||
<declarationFonction>
|
li $v0, 10
|
||||||
<id_fonction>main</id_fonction>
|
syscall
|
||||||
<listeParam>
|
main :
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
<optListeDecVariables>
|
sw $fp, 0($sp)
|
||||||
</optListeDecVariables>
|
move $fp, $sp
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
</listeParam>
|
sw $ra, 0($sp)
|
||||||
<optDecVariables>
|
li $t0, 1
|
||||||
</optDecVariables>
|
subi $sp, $sp, 4
|
||||||
<instructionBloc>
|
sw $t0, 0($sp)
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
lw $t1, 0($sp)
|
||||||
<listeInstructions>
|
addi $sp, $sp, 4
|
||||||
<instruction>
|
beq $zero, $t1, e1
|
||||||
<instructionEcriture>
|
subi $sp, $sp, 4
|
||||||
<mot_clef>ecrire</mot_clef>
|
sw $t1, 0($sp)
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
li $t0, 2
|
||||||
<expression>
|
subi $sp, $sp, 4
|
||||||
<conjonction>
|
sw $t0, 0($sp)
|
||||||
<negation>
|
lw $t2, 0($sp)
|
||||||
<comparaison>
|
addi $sp, $sp, 4
|
||||||
<expArith>
|
lw $t1, 0($sp)
|
||||||
<terme>
|
addi $sp, $sp, 4
|
||||||
<facteur>
|
beq $zero, $t2, e1
|
||||||
<nombre>1</nombre>
|
and $t0, $t1, $t2
|
||||||
</facteur>
|
j e0
|
||||||
<termeBis>
|
e1 :
|
||||||
</termeBis>
|
li $t0 0
|
||||||
</terme>
|
e0 :
|
||||||
<expArithBis>
|
subi $sp, $sp, 4
|
||||||
</expArithBis>
|
sw $t0, 0($sp)
|
||||||
</expArith>
|
lw $t0, 0($sp)
|
||||||
<comparaisonBis>
|
addi $sp, $sp, 4
|
||||||
</comparaisonBis>
|
move $a0, $t0
|
||||||
</comparaison>
|
li $v0, 1
|
||||||
</negation>
|
syscall
|
||||||
<conjonctionBis>
|
li $a0, '\n'
|
||||||
<symbole>ET</symbole>
|
li $v0, 11
|
||||||
<negation>
|
syscall
|
||||||
<comparaison>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<expArith>
|
lw $ra, 0($sp)
|
||||||
<terme>
|
addi $sp, $sp, 4
|
||||||
<facteur>
|
lw $fp, 0($sp)
|
||||||
<nombre>2</nombre>
|
addi $sp, $sp, 4
|
||||||
</facteur>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<termeBis>
|
jr $ra
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -1,283 +1,93 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
$$i: .space 4
|
||||||
<listeDecVariables>
|
$$carre: .space 4
|
||||||
<declarationVariable>
|
.text
|
||||||
<mot_clef>entier</mot_clef>
|
__start:
|
||||||
<id_variable>$i</id_variable>
|
jal main
|
||||||
<optTailleTableau>
|
li $v0, 10
|
||||||
</optTailleTableau>
|
syscall
|
||||||
</declarationVariable>
|
main :
|
||||||
<listeDecVariablesBis>
|
subi $sp, $sp, 4
|
||||||
<symbole>VIRGULE</symbole>
|
sw $fp, 0($sp)
|
||||||
<declarationVariable>
|
move $fp, $sp
|
||||||
<mot_clef>entier</mot_clef>
|
subi $sp, $sp, 4
|
||||||
<id_variable>$carre</id_variable>
|
sw $ra, 0($sp)
|
||||||
<optTailleTableau>
|
li $t0, 0
|
||||||
</optTailleTableau>
|
subi $sp, $sp, 4
|
||||||
</declarationVariable>
|
sw $t0, 0($sp)
|
||||||
<listeDecVariablesBis>
|
lw $t0, 0($sp)
|
||||||
</listeDecVariablesBis>
|
addi $sp, $sp, 4
|
||||||
</listeDecVariablesBis>
|
sw $t0, $$i
|
||||||
</listeDecVariables>
|
e0:
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
lw $t0, $$i
|
||||||
</optDecVariables>
|
subi $sp, $sp, 4
|
||||||
<listeDecFonctions>
|
sw $t0, 0($sp)
|
||||||
<declarationFonction>
|
li $t0, 10
|
||||||
<id_fonction>main</id_fonction>
|
subi $sp, $sp, 4
|
||||||
<listeParam>
|
sw $t0, 0($sp)
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
lw $t2, 0($sp)
|
||||||
<optListeDecVariables>
|
addi $sp, $sp, 4
|
||||||
</optListeDecVariables>
|
lw $t1, 0($sp)
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
addi $sp, $sp, 4
|
||||||
</listeParam>
|
li $t0, 1
|
||||||
<optDecVariables>
|
blt $t1, $t2 e2
|
||||||
</optDecVariables>
|
li $t0, 0
|
||||||
<instructionBloc>
|
e2:
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
<listeInstructions>
|
sw $t0, 0($sp)
|
||||||
<instruction>
|
lw $t0, 0($sp)
|
||||||
<instructionAffect>
|
addi $sp, $sp, 4
|
||||||
<var>
|
beq $t0 $0 e1
|
||||||
<id_variable>$i</id_variable>
|
lw $t0, $$i
|
||||||
<optIndice>
|
subi $sp, $sp, 4
|
||||||
</optIndice>
|
sw $t0, 0($sp)
|
||||||
</var>
|
lw $t0, $$i
|
||||||
<symbole>EGAL</symbole>
|
subi $sp, $sp, 4
|
||||||
<expression>
|
sw $t0, 0($sp)
|
||||||
<conjonction>
|
lw $t2, 0($sp)
|
||||||
<negation>
|
addi $sp, $sp, 4
|
||||||
<comparaison>
|
lw $t1, 0($sp)
|
||||||
<expArith>
|
addi $sp, $sp, 4
|
||||||
<terme>
|
mult $t1, $t2
|
||||||
<facteur>
|
mflo $t0
|
||||||
<nombre>0</nombre>
|
subi $sp, $sp, 4
|
||||||
</facteur>
|
sw $t0, 0($sp)
|
||||||
<termeBis>
|
lw $t0, 0($sp)
|
||||||
</termeBis>
|
addi $sp, $sp, 4
|
||||||
</terme>
|
sw $t0, $$carre
|
||||||
<expArithBis>
|
lw $t0, $$carre
|
||||||
</expArithBis>
|
subi $sp, $sp, 4
|
||||||
</expArith>
|
sw $t0, 0($sp)
|
||||||
<comparaisonBis>
|
lw $t0, 0($sp)
|
||||||
</comparaisonBis>
|
addi $sp, $sp, 4
|
||||||
</comparaison>
|
move $a0, $t0
|
||||||
</negation>
|
li $v0, 1
|
||||||
<conjonctionBis>
|
syscall
|
||||||
</conjonctionBis>
|
li $a0, '\n'
|
||||||
</conjonction>
|
li $v0, 11
|
||||||
<expressionBis>
|
syscall
|
||||||
</expressionBis>
|
lw $t0, $$i
|
||||||
</expression>
|
subi $sp, $sp, 4
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
sw $t0, 0($sp)
|
||||||
</instructionAffect>
|
li $t0, 1
|
||||||
</instruction>
|
subi $sp, $sp, 4
|
||||||
<listeInstructions>
|
sw $t0, 0($sp)
|
||||||
<instruction>
|
lw $t2, 0($sp)
|
||||||
<instructionTantque>
|
addi $sp, $sp, 4
|
||||||
<mot_clef>tantque</mot_clef>
|
lw $t1, 0($sp)
|
||||||
<expression>
|
addi $sp, $sp, 4
|
||||||
<conjonction>
|
add $t0, $t1, $t2
|
||||||
<negation>
|
subi $sp, $sp, 4
|
||||||
<comparaison>
|
sw $t0, 0($sp)
|
||||||
<expArith>
|
lw $t0, 0($sp)
|
||||||
<terme>
|
addi $sp, $sp, 4
|
||||||
<facteur>
|
sw $t0, $$i
|
||||||
<var>
|
j e0
|
||||||
<id_variable>$i</id_variable>
|
e1:
|
||||||
<optIndice>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
</optIndice>
|
lw $ra, 0($sp)
|
||||||
</var>
|
addi $sp, $sp, 4
|
||||||
</facteur>
|
lw $fp, 0($sp)
|
||||||
<termeBis>
|
addi $sp, $sp, 4
|
||||||
</termeBis>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
</terme>
|
jr $ra
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
<symbole>INFERIEUR</symbole>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>10</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<mot_clef>faire</mot_clef>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAffect>
|
|
||||||
<var>
|
|
||||||
<id_variable>$carre</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$i</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
<symbole>FOIS</symbole>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$i</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$carre</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAffect>
|
|
||||||
<var>
|
|
||||||
<id_variable>$i</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$i</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
<symbole>PLUS</symbole>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>1</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</instructionTantque>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -49,11 +49,10 @@ subi $sp, $sp, 4
|
|||||||
sw $t0, 0($sp)
|
sw $t0, 0($sp)
|
||||||
lw $t2, 0($sp)
|
lw $t2, 0($sp)
|
||||||
addi $sp, $sp, 4
|
addi $sp, $sp, 4
|
||||||
e2 :
|
or $t0, $zero, $t2
|
||||||
or $t0, $t1, $t2
|
|
||||||
j e3
|
j e3
|
||||||
e1 :
|
e2 :
|
||||||
or $t0, $t1, $t2
|
move $t0 $t1
|
||||||
e3 :
|
e3 :
|
||||||
subi $sp, $sp, 4
|
subi $sp, $sp, 4
|
||||||
sw $t0, 0($sp)
|
sw $t0, 0($sp)
|
||||||
|
|||||||
@@ -1,408 +1,155 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
.text
|
||||||
</optDecVariables>
|
__start:
|
||||||
<listeDecFonctions>
|
jal main
|
||||||
<declarationFonction>
|
li $v0, 10
|
||||||
<id_fonction>fact</id_fonction>
|
syscall
|
||||||
<listeParam>
|
fact :
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
<optListeDecVariables>
|
sw $fp, 0($sp)
|
||||||
<listeDecVariables>
|
move $fp, $sp
|
||||||
<declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<mot_clef>entier</mot_clef>
|
sw $ra, 0($sp)
|
||||||
<id_variable>$f</id_variable>
|
lw $t0, 4($fp) #variable argument $f
|
||||||
<optTailleTableau>
|
subi $sp, $sp, 4
|
||||||
</optTailleTableau>
|
sw $t0, 0($sp)
|
||||||
</declarationVariable>
|
li $t0, 1
|
||||||
<listeDecVariablesBis>
|
subi $sp, $sp, 4
|
||||||
</listeDecVariablesBis>
|
sw $t0, 0($sp)
|
||||||
</listeDecVariables>
|
lw $t2, 0($sp)
|
||||||
</optListeDecVariables>
|
addi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
lw $t1, 0($sp)
|
||||||
</listeParam>
|
addi $sp, $sp, 4
|
||||||
<optDecVariables>
|
li $t0, 1
|
||||||
</optDecVariables>
|
beq $t1, $t2 e4
|
||||||
<instructionBloc>
|
li $t0, 0
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
e4:
|
||||||
<listeInstructions>
|
subi $sp, $sp, 4
|
||||||
<instruction>
|
sw $t0, 0($sp)
|
||||||
<instructionSi>
|
lw $t1, 0($sp)
|
||||||
<mot_clef>si</mot_clef>
|
addi $sp, $sp, 4
|
||||||
<expression>
|
beq $zero, $t1, e0
|
||||||
<conjonction>
|
j e2
|
||||||
<negation>
|
e0 :
|
||||||
<comparaison>
|
lw $t0, 4($fp) #variable argument $f
|
||||||
<expArith>
|
subi $sp, $sp, 4
|
||||||
<terme>
|
sw $t0, 0($sp)
|
||||||
<facteur>
|
li $t0, 0
|
||||||
<var>
|
subi $sp, $sp, 4
|
||||||
<id_variable>$f</id_variable>
|
sw $t0, 0($sp)
|
||||||
<optIndice>
|
lw $t2, 0($sp)
|
||||||
</optIndice>
|
addi $sp, $sp, 4
|
||||||
</var>
|
lw $t1, 0($sp)
|
||||||
</facteur>
|
addi $sp, $sp, 4
|
||||||
<termeBis>
|
li $t0, 1
|
||||||
</termeBis>
|
beq $t1, $t2 e5
|
||||||
</terme>
|
li $t0, 0
|
||||||
<expArithBis>
|
e5:
|
||||||
</expArithBis>
|
subi $sp, $sp, 4
|
||||||
</expArith>
|
sw $t0, 0($sp)
|
||||||
<comparaisonBis>
|
lw $t2, 0($sp)
|
||||||
<symbole>EGAL</symbole>
|
addi $sp, $sp, 4
|
||||||
<expArith>
|
or $t0, $zero, $t2
|
||||||
<terme>
|
j e3
|
||||||
<facteur>
|
e2 :
|
||||||
<nombre>1</nombre>
|
move $t0 $t1
|
||||||
</facteur>
|
e3 :
|
||||||
<termeBis>
|
subi $sp, $sp, 4
|
||||||
</termeBis>
|
sw $t0, 0($sp)
|
||||||
</terme>
|
lw $t0, 0($sp)
|
||||||
<expArithBis>
|
addi $sp, $sp, 4
|
||||||
</expArithBis>
|
beq $t0 $zero e6
|
||||||
</expArith>
|
li $t0, 1
|
||||||
<comparaisonBis>
|
subi $sp, $sp, 4
|
||||||
</comparaisonBis>
|
sw $t0, 0($sp)
|
||||||
</comparaisonBis>
|
lw $t0, 0($sp)
|
||||||
</comparaison>
|
addi $sp, $sp, 4
|
||||||
</negation>
|
sw $t0 8($fp) #Adresse de retour
|
||||||
<conjonctionBis>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
</conjonctionBis>
|
lw $ra, 0($sp)
|
||||||
</conjonction>
|
addi $sp, $sp, 4
|
||||||
<expressionBis>
|
lw $fp, 0($sp)
|
||||||
<symbole>OU</symbole>
|
addi $sp, $sp, 4
|
||||||
<conjonction>
|
jr $ra
|
||||||
<negation>
|
j e7
|
||||||
<comparaison>
|
e6:
|
||||||
<expArith>
|
subi $sp, $sp, 4 #Val Retour
|
||||||
<terme>
|
lw $t0, 4($fp) #variable argument $f
|
||||||
<facteur>
|
subi $sp, $sp, 4
|
||||||
<var>
|
sw $t0, 0($sp)
|
||||||
<id_variable>$f</id_variable>
|
li $t0, 1
|
||||||
<optIndice>
|
subi $sp, $sp, 4
|
||||||
</optIndice>
|
sw $t0, 0($sp)
|
||||||
</var>
|
lw $t2, 0($sp)
|
||||||
</facteur>
|
addi $sp, $sp, 4
|
||||||
<termeBis>
|
lw $t1, 0($sp)
|
||||||
</termeBis>
|
addi $sp, $sp, 4
|
||||||
</terme>
|
sub $t0, $t1, $t2
|
||||||
<expArithBis>
|
subi $sp, $sp, 4
|
||||||
</expArithBis>
|
sw $t0, 0($sp)
|
||||||
</expArith>
|
jal fact
|
||||||
<comparaisonBis>
|
addi $sp, $sp, 4 #désalocation des arguments
|
||||||
<symbole>EGAL</symbole>
|
lw $t0, 4($fp) #variable argument $f
|
||||||
<expArith>
|
subi $sp, $sp, 4
|
||||||
<terme>
|
sw $t0, 0($sp)
|
||||||
<facteur>
|
lw $t2, 0($sp)
|
||||||
<nombre>0</nombre>
|
addi $sp, $sp, 4
|
||||||
</facteur>
|
lw $t1, 0($sp)
|
||||||
<termeBis>
|
addi $sp, $sp, 4
|
||||||
</termeBis>
|
mult $t1, $t2
|
||||||
</terme>
|
mflo $t0
|
||||||
<expArithBis>
|
subi $sp, $sp, 4
|
||||||
</expArithBis>
|
sw $t0, 0($sp)
|
||||||
</expArith>
|
lw $t0, 0($sp)
|
||||||
<comparaisonBis>
|
addi $sp, $sp, 4
|
||||||
</comparaisonBis>
|
sw $t0 8($fp) #Adresse de retour
|
||||||
</comparaisonBis>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
</comparaison>
|
lw $ra, 0($sp)
|
||||||
</negation>
|
addi $sp, $sp, 4
|
||||||
<conjonctionBis>
|
lw $fp, 0($sp)
|
||||||
</conjonctionBis>
|
addi $sp, $sp, 4
|
||||||
</conjonction>
|
jr $ra
|
||||||
<expressionBis>
|
e7:
|
||||||
</expressionBis>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
</expressionBis>
|
lw $ra, 0($sp)
|
||||||
</expression>
|
addi $sp, $sp, 4
|
||||||
<mot_clef>alors</mot_clef>
|
lw $fp, 0($sp)
|
||||||
<instructionBloc>
|
addi $sp, $sp, 4
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<listeInstructions>
|
jr $ra
|
||||||
<instruction>
|
main :
|
||||||
<instructionRetour>
|
subi $sp, $sp, 4
|
||||||
<mot_clef>retour</mot_clef>
|
sw $fp, 0($sp)
|
||||||
<expression>
|
move $fp, $sp
|
||||||
<conjonction>
|
subi $sp, $sp, 4
|
||||||
<negation>
|
sw $ra, 0($sp)
|
||||||
<comparaison>
|
subi $sp, $sp, 4
|
||||||
<expArith>
|
li $v0 5
|
||||||
<terme>
|
syscall
|
||||||
<facteur>
|
move $t0, $v0
|
||||||
<nombre>1</nombre>
|
subi $sp, $sp, 4
|
||||||
</facteur>
|
sw $t0, 0($sp)
|
||||||
<termeBis>
|
lw $t0, 0($sp)
|
||||||
</termeBis>
|
addi $sp, $sp, 4
|
||||||
</terme>
|
sw $t0, -8($fp) #variable locale
|
||||||
<expArithBis>
|
subi $sp, $sp, 4 #Val Retour
|
||||||
</expArithBis>
|
lw $t0, -8($fp) #variable locale
|
||||||
</expArith>
|
subi $sp, $sp, 4
|
||||||
<comparaisonBis>
|
sw $t0, 0($sp)
|
||||||
</comparaisonBis>
|
jal fact
|
||||||
</comparaison>
|
addi $sp, $sp, 4 #désalocation des arguments
|
||||||
</negation>
|
lw $t0, 0($sp)
|
||||||
<conjonctionBis>
|
addi $sp, $sp, 4
|
||||||
</conjonctionBis>
|
move $a0, $t0
|
||||||
</conjonction>
|
li $v0, 1
|
||||||
<expressionBis>
|
syscall
|
||||||
</expressionBis>
|
li $a0, '\n'
|
||||||
</expression>
|
li $v0, 11
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
syscall
|
||||||
</instructionRetour>
|
addi $sp, $sp 4 # desallocation variables locales
|
||||||
</instruction>
|
lw $ra, 0($sp)
|
||||||
<listeInstructions>
|
addi $sp, $sp, 4
|
||||||
</listeInstructions>
|
lw $fp, 0($sp)
|
||||||
</listeInstructions>
|
addi $sp, $sp, 4
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
</instructionBloc>
|
jr $ra
|
||||||
<optSinon>
|
|
||||||
<mot_clef>sinon</mot_clef>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionRetour>
|
|
||||||
<mot_clef>retour</mot_clef>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<appelFct>
|
|
||||||
<id_fonction>fact</id_fonction>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<listeExpressions>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$f</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
<symbole>MOINS</symbole>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>1</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<listeExpressionsBis>
|
|
||||||
</listeExpressionsBis>
|
|
||||||
</listeExpressions>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</appelFct>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
<symbole>FOIS</symbole>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$f</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionRetour>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</optSinon>
|
|
||||||
</instructionSi>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
<declarationFonction>
|
|
||||||
<id_fonction>main</id_fonction>
|
|
||||||
<listeParam>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<optListeDecVariables>
|
|
||||||
</optListeDecVariables>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</listeParam>
|
|
||||||
<optDecVariables>
|
|
||||||
<listeDecVariables>
|
|
||||||
<declarationVariable>
|
|
||||||
<mot_clef>entier</mot_clef>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optTailleTableau>
|
|
||||||
</optTailleTableau>
|
|
||||||
</declarationVariable>
|
|
||||||
<listeDecVariablesBis>
|
|
||||||
</listeDecVariablesBis>
|
|
||||||
</listeDecVariables>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</optDecVariables>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAffect>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<mot_clef>lire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<appelFct>
|
|
||||||
<id_fonction>fact</id_fonction>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<listeExpressions>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<listeExpressionsBis>
|
|
||||||
</listeExpressionsBis>
|
|
||||||
</listeExpressions>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</appelFct>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -1,360 +1,130 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
.text
|
||||||
</optDecVariables>
|
__start:
|
||||||
<listeDecFonctions>
|
jal main
|
||||||
<declarationFonction>
|
li $v0, 10
|
||||||
<id_fonction>fibo</id_fonction>
|
syscall
|
||||||
<listeParam>
|
fibo :
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
<optListeDecVariables>
|
sw $fp, 0($sp)
|
||||||
<listeDecVariables>
|
move $fp, $sp
|
||||||
<declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<mot_clef>entier</mot_clef>
|
sw $ra, 0($sp)
|
||||||
<id_variable>$n</id_variable>
|
lw $t0, 4($fp) #variable argument $n
|
||||||
<optTailleTableau>
|
subi $sp, $sp, 4
|
||||||
</optTailleTableau>
|
sw $t0, 0($sp)
|
||||||
</declarationVariable>
|
li $t0, 2
|
||||||
<listeDecVariablesBis>
|
subi $sp, $sp, 4
|
||||||
</listeDecVariablesBis>
|
sw $t0, 0($sp)
|
||||||
</listeDecVariables>
|
lw $t2, 0($sp)
|
||||||
</optListeDecVariables>
|
addi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
lw $t1, 0($sp)
|
||||||
</listeParam>
|
addi $sp, $sp, 4
|
||||||
<optDecVariables>
|
li $t0, 1
|
||||||
</optDecVariables>
|
blt $t1, $t2 e0
|
||||||
<instructionBloc>
|
li $t0, 0
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
e0:
|
||||||
<listeInstructions>
|
subi $sp, $sp, 4
|
||||||
<instruction>
|
sw $t0, 0($sp)
|
||||||
<instructionSi>
|
lw $t0, 0($sp)
|
||||||
<mot_clef>si</mot_clef>
|
addi $sp, $sp, 4
|
||||||
<expression>
|
beq $t0 $zero e1
|
||||||
<conjonction>
|
li $t0, 1
|
||||||
<negation>
|
subi $sp, $sp, 4
|
||||||
<comparaison>
|
sw $t0, 0($sp)
|
||||||
<expArith>
|
lw $t0, 0($sp)
|
||||||
<terme>
|
addi $sp, $sp, 4
|
||||||
<facteur>
|
sw $t0 8($fp) #Adresse de retour
|
||||||
<var>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<id_variable>$n</id_variable>
|
lw $ra, 0($sp)
|
||||||
<optIndice>
|
addi $sp, $sp, 4
|
||||||
</optIndice>
|
lw $fp, 0($sp)
|
||||||
</var>
|
addi $sp, $sp, 4
|
||||||
</facteur>
|
jr $ra
|
||||||
<termeBis>
|
j e2
|
||||||
</termeBis>
|
e1:
|
||||||
</terme>
|
subi $sp, $sp, 4 #Val Retour
|
||||||
<expArithBis>
|
lw $t0, 4($fp) #variable argument $n
|
||||||
</expArithBis>
|
subi $sp, $sp, 4
|
||||||
</expArith>
|
sw $t0, 0($sp)
|
||||||
<comparaisonBis>
|
li $t0, 1
|
||||||
<symbole>INFERIEUR</symbole>
|
subi $sp, $sp, 4
|
||||||
<expArith>
|
sw $t0, 0($sp)
|
||||||
<terme>
|
lw $t2, 0($sp)
|
||||||
<facteur>
|
addi $sp, $sp, 4
|
||||||
<nombre>2</nombre>
|
lw $t1, 0($sp)
|
||||||
</facteur>
|
addi $sp, $sp, 4
|
||||||
<termeBis>
|
sub $t0, $t1, $t2
|
||||||
</termeBis>
|
subi $sp, $sp, 4
|
||||||
</terme>
|
sw $t0, 0($sp)
|
||||||
<expArithBis>
|
jal fibo
|
||||||
</expArithBis>
|
addi $sp, $sp, 4 #désalocation des arguments
|
||||||
</expArith>
|
subi $sp, $sp, 4 #Val Retour
|
||||||
<comparaisonBis>
|
lw $t0, 4($fp) #variable argument $n
|
||||||
</comparaisonBis>
|
subi $sp, $sp, 4
|
||||||
</comparaisonBis>
|
sw $t0, 0($sp)
|
||||||
</comparaison>
|
li $t0, 2
|
||||||
</negation>
|
subi $sp, $sp, 4
|
||||||
<conjonctionBis>
|
sw $t0, 0($sp)
|
||||||
</conjonctionBis>
|
lw $t2, 0($sp)
|
||||||
</conjonction>
|
addi $sp, $sp, 4
|
||||||
<expressionBis>
|
lw $t1, 0($sp)
|
||||||
</expressionBis>
|
addi $sp, $sp, 4
|
||||||
</expression>
|
sub $t0, $t1, $t2
|
||||||
<mot_clef>alors</mot_clef>
|
subi $sp, $sp, 4
|
||||||
<instructionBloc>
|
sw $t0, 0($sp)
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
jal fibo
|
||||||
<listeInstructions>
|
addi $sp, $sp, 4 #désalocation des arguments
|
||||||
<instruction>
|
lw $t2, 0($sp)
|
||||||
<instructionRetour>
|
addi $sp, $sp, 4
|
||||||
<mot_clef>retour</mot_clef>
|
lw $t1, 0($sp)
|
||||||
<expression>
|
addi $sp, $sp, 4
|
||||||
<conjonction>
|
add $t0, $t1, $t2
|
||||||
<negation>
|
subi $sp, $sp, 4
|
||||||
<comparaison>
|
sw $t0, 0($sp)
|
||||||
<expArith>
|
lw $t0, 0($sp)
|
||||||
<terme>
|
addi $sp, $sp, 4
|
||||||
<facteur>
|
sw $t0 8($fp) #Adresse de retour
|
||||||
<nombre>1</nombre>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
</facteur>
|
lw $ra, 0($sp)
|
||||||
<termeBis>
|
addi $sp, $sp, 4
|
||||||
</termeBis>
|
lw $fp, 0($sp)
|
||||||
</terme>
|
addi $sp, $sp, 4
|
||||||
<expArithBis>
|
jr $ra
|
||||||
</expArithBis>
|
e2:
|
||||||
</expArith>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<comparaisonBis>
|
lw $ra, 0($sp)
|
||||||
</comparaisonBis>
|
addi $sp, $sp, 4
|
||||||
</comparaison>
|
lw $fp, 0($sp)
|
||||||
</negation>
|
addi $sp, $sp, 4
|
||||||
<conjonctionBis>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
</conjonctionBis>
|
jr $ra
|
||||||
</conjonction>
|
main :
|
||||||
<expressionBis>
|
subi $sp, $sp, 4
|
||||||
</expressionBis>
|
sw $fp, 0($sp)
|
||||||
</expression>
|
move $fp, $sp
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
subi $sp, $sp, 4
|
||||||
</instructionRetour>
|
sw $ra, 0($sp)
|
||||||
</instruction>
|
subi $sp, $sp, 4 #Val Retour
|
||||||
<listeInstructions>
|
li $v0 5
|
||||||
</listeInstructions>
|
syscall
|
||||||
</listeInstructions>
|
move $t0, $v0
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
</instructionBloc>
|
sw $t0, 0($sp)
|
||||||
<optSinon>
|
jal fibo
|
||||||
<mot_clef>sinon</mot_clef>
|
addi $sp, $sp, 4 #désalocation des arguments
|
||||||
<instructionBloc>
|
lw $t0, 0($sp)
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
addi $sp, $sp, 4
|
||||||
<listeInstructions>
|
move $a0, $t0
|
||||||
<instruction>
|
li $v0, 1
|
||||||
<instructionRetour>
|
syscall
|
||||||
<mot_clef>retour</mot_clef>
|
li $a0, '\n'
|
||||||
<expression>
|
li $v0, 11
|
||||||
<conjonction>
|
syscall
|
||||||
<negation>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<comparaison>
|
lw $ra, 0($sp)
|
||||||
<expArith>
|
addi $sp, $sp, 4
|
||||||
<terme>
|
lw $fp, 0($sp)
|
||||||
<facteur>
|
addi $sp, $sp, 4
|
||||||
<appelFct>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<id_fonction>fibo</id_fonction>
|
jr $ra
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<listeExpressions>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$n</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
<symbole>MOINS</symbole>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>1</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<listeExpressionsBis>
|
|
||||||
</listeExpressionsBis>
|
|
||||||
</listeExpressions>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</appelFct>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
<symbole>PLUS</symbole>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<appelFct>
|
|
||||||
<id_fonction>fibo</id_fonction>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<listeExpressions>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$n</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
<symbole>MOINS</symbole>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>2</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<listeExpressionsBis>
|
|
||||||
</listeExpressionsBis>
|
|
||||||
</listeExpressions>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</appelFct>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionRetour>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</optSinon>
|
|
||||||
</instructionSi>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
<declarationFonction>
|
|
||||||
<id_fonction>main</id_fonction>
|
|
||||||
<listeParam>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<optListeDecVariables>
|
|
||||||
</optListeDecVariables>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</listeParam>
|
|
||||||
<optDecVariables>
|
|
||||||
</optDecVariables>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<appelFct>
|
|
||||||
<id_fonction>fibo</id_fonction>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<listeExpressions>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<mot_clef>lire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<listeExpressionsBis>
|
|
||||||
</listeExpressionsBis>
|
|
||||||
</listeExpressions>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</appelFct>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -1,759 +1,197 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
$$a: .space 4
|
||||||
<listeDecVariables>
|
$$b: .space 4
|
||||||
<declarationVariable>
|
.text
|
||||||
<mot_clef>entier</mot_clef>
|
__start:
|
||||||
<id_variable>$a</id_variable>
|
jal main
|
||||||
<optTailleTableau>
|
li $v0, 10
|
||||||
</optTailleTableau>
|
syscall
|
||||||
</declarationVariable>
|
pgcd :
|
||||||
<listeDecVariablesBis>
|
subi $sp, $sp, 4
|
||||||
<symbole>VIRGULE</symbole>
|
sw $fp, 0($sp)
|
||||||
<declarationVariable>
|
move $fp, $sp
|
||||||
<mot_clef>entier</mot_clef>
|
subi $sp, $sp, 4
|
||||||
<id_variable>$b</id_variable>
|
sw $ra, 0($sp)
|
||||||
<optTailleTableau>
|
subi $sp, $sp, 4
|
||||||
</optTailleTableau>
|
lw $t0, 8($fp) #variable argument $a
|
||||||
</declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
sw $t0, 0($sp)
|
||||||
</listeDecVariablesBis>
|
lw $t0, 8($fp) #variable argument $a
|
||||||
</listeDecVariablesBis>
|
subi $sp, $sp, 4
|
||||||
</listeDecVariables>
|
sw $t0, 0($sp)
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
lw $t0, 4($fp) #variable argument $b
|
||||||
</optDecVariables>
|
subi $sp, $sp, 4
|
||||||
<listeDecFonctions>
|
sw $t0, 0($sp)
|
||||||
<declarationFonction>
|
lw $t2, 0($sp)
|
||||||
<id_fonction>pgcd</id_fonction>
|
addi $sp, $sp, 4
|
||||||
<listeParam>
|
lw $t1, 0($sp)
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
addi $sp, $sp, 4
|
||||||
<optListeDecVariables>
|
div $t1, $t2
|
||||||
<listeDecVariables>
|
mflo $t0
|
||||||
<declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<mot_clef>entier</mot_clef>
|
sw $t0, 0($sp)
|
||||||
<id_variable>$a</id_variable>
|
lw $t0, 4($fp) #variable argument $b
|
||||||
<optTailleTableau>
|
subi $sp, $sp, 4
|
||||||
</optTailleTableau>
|
sw $t0, 0($sp)
|
||||||
</declarationVariable>
|
lw $t2, 0($sp)
|
||||||
<listeDecVariablesBis>
|
addi $sp, $sp, 4
|
||||||
<symbole>VIRGULE</symbole>
|
lw $t1, 0($sp)
|
||||||
<declarationVariable>
|
addi $sp, $sp, 4
|
||||||
<mot_clef>entier</mot_clef>
|
mult $t1, $t2
|
||||||
<id_variable>$b</id_variable>
|
mflo $t0
|
||||||
<optTailleTableau>
|
subi $sp, $sp, 4
|
||||||
</optTailleTableau>
|
sw $t0, 0($sp)
|
||||||
</declarationVariable>
|
lw $t2, 0($sp)
|
||||||
<listeDecVariablesBis>
|
addi $sp, $sp, 4
|
||||||
</listeDecVariablesBis>
|
lw $t1, 0($sp)
|
||||||
</listeDecVariablesBis>
|
addi $sp, $sp, 4
|
||||||
</listeDecVariables>
|
sub $t0, $t1, $t2
|
||||||
</optListeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
sw $t0, 0($sp)
|
||||||
</listeParam>
|
lw $t0, 0($sp)
|
||||||
<optDecVariables>
|
addi $sp, $sp, 4
|
||||||
<listeDecVariables>
|
sw $t0, -8($fp) #variable locale
|
||||||
<declarationVariable>
|
lw $t0, -8($fp) #variable locale
|
||||||
<mot_clef>entier</mot_clef>
|
subi $sp, $sp, 4
|
||||||
<id_variable>$c</id_variable>
|
sw $t0, 0($sp)
|
||||||
<optTailleTableau>
|
li $t0, 0
|
||||||
</optTailleTableau>
|
subi $sp, $sp, 4
|
||||||
</declarationVariable>
|
sw $t0, 0($sp)
|
||||||
<listeDecVariablesBis>
|
lw $t2, 0($sp)
|
||||||
</listeDecVariablesBis>
|
addi $sp, $sp, 4
|
||||||
</listeDecVariables>
|
lw $t1, 0($sp)
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
addi $sp, $sp, 4
|
||||||
</optDecVariables>
|
li $t0, 1
|
||||||
<instructionBloc>
|
beq $t1, $t2 e0
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
li $t0, 0
|
||||||
<listeInstructions>
|
e0:
|
||||||
<instruction>
|
subi $sp, $sp, 4
|
||||||
<instructionAffect>
|
sw $t0, 0($sp)
|
||||||
<var>
|
lw $t0, 0($sp)
|
||||||
<id_variable>$c</id_variable>
|
addi $sp, $sp, 4
|
||||||
<optIndice>
|
beq $t0 $zero e1
|
||||||
</optIndice>
|
lw $t0, 4($fp) #variable argument $b
|
||||||
</var>
|
subi $sp, $sp, 4
|
||||||
<symbole>EGAL</symbole>
|
sw $t0, 0($sp)
|
||||||
<expression>
|
lw $t0, 0($sp)
|
||||||
<conjonction>
|
addi $sp, $sp, 4
|
||||||
<negation>
|
sw $t0 12($fp) #Adresse de retour
|
||||||
<comparaison>
|
addi $sp, $sp 4 # desallocation variables locales
|
||||||
<expArith>
|
lw $ra, 0($sp)
|
||||||
<terme>
|
addi $sp, $sp, 4
|
||||||
<facteur>
|
lw $fp, 0($sp)
|
||||||
<var>
|
addi $sp, $sp, 4
|
||||||
<id_variable>$a</id_variable>
|
jr $ra
|
||||||
<optIndice>
|
j e2
|
||||||
</optIndice>
|
e1:
|
||||||
</var>
|
subi $sp, $sp, 4 #Val Retour
|
||||||
</facteur>
|
lw $t0, 4($fp) #variable argument $b
|
||||||
<termeBis>
|
subi $sp, $sp, 4
|
||||||
</termeBis>
|
sw $t0, 0($sp)
|
||||||
</terme>
|
lw $t0, -8($fp) #variable locale
|
||||||
<expArithBis>
|
subi $sp, $sp, 4
|
||||||
<symbole>MOINS</symbole>
|
sw $t0, 0($sp)
|
||||||
<terme>
|
jal pgcd
|
||||||
<facteur>
|
addi $sp, $sp, 8 #désalocation des arguments
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
lw $t0, 0($sp)
|
||||||
<expression>
|
addi $sp, $sp, 4
|
||||||
<conjonction>
|
sw $t0 12($fp) #Adresse de retour
|
||||||
<negation>
|
addi $sp, $sp 4 # desallocation variables locales
|
||||||
<comparaison>
|
lw $ra, 0($sp)
|
||||||
<expArith>
|
addi $sp, $sp, 4
|
||||||
<terme>
|
lw $fp, 0($sp)
|
||||||
<facteur>
|
addi $sp, $sp, 4
|
||||||
<var>
|
jr $ra
|
||||||
<id_variable>$a</id_variable>
|
e2:
|
||||||
<optIndice>
|
addi $sp, $sp 4 # desallocation variables locales
|
||||||
</optIndice>
|
lw $ra, 0($sp)
|
||||||
</var>
|
addi $sp, $sp, 4
|
||||||
</facteur>
|
lw $fp, 0($sp)
|
||||||
<termeBis>
|
addi $sp, $sp, 4
|
||||||
<symbole>DIVISE</symbole>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<facteur>
|
jr $ra
|
||||||
<var>
|
main :
|
||||||
<id_variable>$b</id_variable>
|
subi $sp, $sp, 4
|
||||||
<optIndice>
|
sw $fp, 0($sp)
|
||||||
</optIndice>
|
move $fp, $sp
|
||||||
</var>
|
subi $sp, $sp, 4
|
||||||
</facteur>
|
sw $ra, 0($sp)
|
||||||
<termeBis>
|
li $v0 5
|
||||||
</termeBis>
|
syscall
|
||||||
</termeBis>
|
move $t0, $v0
|
||||||
</terme>
|
subi $sp, $sp, 4
|
||||||
<expArithBis>
|
sw $t0, 0($sp)
|
||||||
</expArithBis>
|
lw $t0, 0($sp)
|
||||||
</expArith>
|
addi $sp, $sp, 4
|
||||||
<comparaisonBis>
|
sw $t0, $$a
|
||||||
</comparaisonBis>
|
li $v0 5
|
||||||
</comparaison>
|
syscall
|
||||||
</negation>
|
move $t0, $v0
|
||||||
<conjonctionBis>
|
subi $sp, $sp, 4
|
||||||
</conjonctionBis>
|
sw $t0, 0($sp)
|
||||||
</conjonction>
|
lw $t0, 0($sp)
|
||||||
<expressionBis>
|
addi $sp, $sp, 4
|
||||||
</expressionBis>
|
sw $t0, $$b
|
||||||
</expression>
|
lw $t0, $$b
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
</facteur>
|
sw $t0, 0($sp)
|
||||||
<termeBis>
|
lw $t0, $$a
|
||||||
<symbole>FOIS</symbole>
|
subi $sp, $sp, 4
|
||||||
<facteur>
|
sw $t0, 0($sp)
|
||||||
<var>
|
lw $t2, 0($sp)
|
||||||
<id_variable>$b</id_variable>
|
addi $sp, $sp, 4
|
||||||
<optIndice>
|
lw $t1, 0($sp)
|
||||||
</optIndice>
|
addi $sp, $sp, 4
|
||||||
</var>
|
li $t0, 1
|
||||||
</facteur>
|
blt $t1, $t2 e3
|
||||||
<termeBis>
|
li $t0, 0
|
||||||
</termeBis>
|
e3:
|
||||||
</termeBis>
|
subi $sp, $sp, 4
|
||||||
</terme>
|
sw $t0, 0($sp)
|
||||||
<expArithBis>
|
lw $t0, 0($sp)
|
||||||
</expArithBis>
|
addi $sp, $sp, 4
|
||||||
</expArithBis>
|
beq $t0 $zero e4
|
||||||
</expArith>
|
subi $sp, $sp, 4 #Val Retour
|
||||||
<comparaisonBis>
|
lw $t0, $$a
|
||||||
</comparaisonBis>
|
subi $sp, $sp, 4
|
||||||
</comparaison>
|
sw $t0, 0($sp)
|
||||||
</negation>
|
lw $t0, $$b
|
||||||
<conjonctionBis>
|
subi $sp, $sp, 4
|
||||||
</conjonctionBis>
|
sw $t0, 0($sp)
|
||||||
</conjonction>
|
jal pgcd
|
||||||
<expressionBis>
|
addi $sp, $sp, 8 #désalocation des arguments
|
||||||
</expressionBis>
|
lw $t0, 0($sp)
|
||||||
</expression>
|
addi $sp, $sp, 4
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
move $a0, $t0
|
||||||
</instructionAffect>
|
li $v0, 1
|
||||||
</instruction>
|
syscall
|
||||||
<listeInstructions>
|
li $a0, '\n'
|
||||||
<instruction>
|
li $v0, 11
|
||||||
<instructionSi>
|
syscall
|
||||||
<mot_clef>si</mot_clef>
|
j e5
|
||||||
<expression>
|
e4:
|
||||||
<conjonction>
|
subi $sp, $sp, 4 #Val Retour
|
||||||
<negation>
|
lw $t0, $$b
|
||||||
<comparaison>
|
subi $sp, $sp, 4
|
||||||
<expArith>
|
sw $t0, 0($sp)
|
||||||
<terme>
|
lw $t0, $$a
|
||||||
<facteur>
|
subi $sp, $sp, 4
|
||||||
<var>
|
sw $t0, 0($sp)
|
||||||
<id_variable>$c</id_variable>
|
jal pgcd
|
||||||
<optIndice>
|
addi $sp, $sp, 8 #désalocation des arguments
|
||||||
</optIndice>
|
lw $t0, 0($sp)
|
||||||
</var>
|
addi $sp, $sp, 4
|
||||||
</facteur>
|
move $a0, $t0
|
||||||
<termeBis>
|
li $v0, 1
|
||||||
</termeBis>
|
syscall
|
||||||
</terme>
|
li $a0, '\n'
|
||||||
<expArithBis>
|
li $v0, 11
|
||||||
</expArithBis>
|
syscall
|
||||||
</expArith>
|
e5:
|
||||||
<comparaisonBis>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<symbole>EGAL</symbole>
|
lw $ra, 0($sp)
|
||||||
<expArith>
|
addi $sp, $sp, 4
|
||||||
<terme>
|
lw $fp, 0($sp)
|
||||||
<facteur>
|
addi $sp, $sp, 4
|
||||||
<nombre>0</nombre>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
</facteur>
|
jr $ra
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<mot_clef>alors</mot_clef>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionRetour>
|
|
||||||
<mot_clef>retour</mot_clef>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$b</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionRetour>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
<optSinon>
|
|
||||||
<mot_clef>sinon</mot_clef>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionRetour>
|
|
||||||
<mot_clef>retour</mot_clef>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<appelFct>
|
|
||||||
<id_fonction>pgcd</id_fonction>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<listeExpressions>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$b</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<listeExpressionsBis>
|
|
||||||
<symbole>VIRGULE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$c</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<listeExpressionsBis>
|
|
||||||
</listeExpressionsBis>
|
|
||||||
</listeExpressionsBis>
|
|
||||||
</listeExpressions>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</appelFct>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionRetour>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</optSinon>
|
|
||||||
</instructionSi>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
<declarationFonction>
|
|
||||||
<id_fonction>main</id_fonction>
|
|
||||||
<listeParam>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<optListeDecVariables>
|
|
||||||
</optListeDecVariables>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</listeParam>
|
|
||||||
<optDecVariables>
|
|
||||||
</optDecVariables>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAffect>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<mot_clef>lire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAffect>
|
|
||||||
<var>
|
|
||||||
<id_variable>$b</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<mot_clef>lire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionSi>
|
|
||||||
<mot_clef>si</mot_clef>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$b</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
<symbole>INFERIEUR</symbole>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<mot_clef>alors</mot_clef>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<appelFct>
|
|
||||||
<id_fonction>pgcd</id_fonction>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<listeExpressions>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<listeExpressionsBis>
|
|
||||||
<symbole>VIRGULE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$b</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<listeExpressionsBis>
|
|
||||||
</listeExpressionsBis>
|
|
||||||
</listeExpressionsBis>
|
|
||||||
</listeExpressions>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</appelFct>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
<optSinon>
|
|
||||||
<mot_clef>sinon</mot_clef>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<appelFct>
|
|
||||||
<id_fonction>pgcd</id_fonction>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<listeExpressions>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$b</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<listeExpressionsBis>
|
|
||||||
<symbole>VIRGULE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<listeExpressionsBis>
|
|
||||||
</listeExpressionsBis>
|
|
||||||
</listeExpressionsBis>
|
|
||||||
</listeExpressions>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</appelFct>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</optSinon>
|
|
||||||
</instructionSi>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ subi $sp, $sp, 4
|
|||||||
sw $t0, 0($sp)
|
sw $t0, 0($sp)
|
||||||
lw $t2, 0($sp)
|
lw $t2, 0($sp)
|
||||||
addi $sp, $sp, 4
|
addi $sp, $sp, 4
|
||||||
or $t0, $t1, $t2
|
or $t0, $zero, $t2
|
||||||
j e3
|
j e3
|
||||||
e2 :
|
e2 :
|
||||||
move $t0 $t1
|
move $t0 $t1
|
||||||
|
|||||||
@@ -1,127 +1,58 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
.text
|
||||||
</optDecVariables>
|
__start:
|
||||||
<listeDecFonctions>
|
jal main
|
||||||
<declarationFonction>
|
li $v0, 10
|
||||||
<id_fonction>main</id_fonction>
|
syscall
|
||||||
<listeParam>
|
main :
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
<optListeDecVariables>
|
sw $fp, 0($sp)
|
||||||
</optListeDecVariables>
|
move $fp, $sp
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
</listeParam>
|
sw $ra, 0($sp)
|
||||||
<optDecVariables>
|
li $t0, 1
|
||||||
</optDecVariables>
|
subi $sp, $sp, 4
|
||||||
<instructionBloc>
|
sw $t0, 0($sp)
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
lw $t1, 0($sp)
|
||||||
<listeInstructions>
|
addi $sp, $sp, 4
|
||||||
<instruction>
|
beq $zero, $t1, e0
|
||||||
<instructionSi>
|
j e2
|
||||||
<mot_clef>si</mot_clef>
|
e0 :
|
||||||
<expression>
|
li $v0 5
|
||||||
<conjonction>
|
syscall
|
||||||
<negation>
|
move $t0, $v0
|
||||||
<comparaison>
|
subi $sp, $sp, 4
|
||||||
<expArith>
|
sw $t0, 0($sp)
|
||||||
<terme>
|
lw $t2, 0($sp)
|
||||||
<facteur>
|
addi $sp, $sp, 4
|
||||||
<nombre>1</nombre>
|
or $t0, $zero, $t2
|
||||||
</facteur>
|
j e3
|
||||||
<termeBis>
|
e2 :
|
||||||
</termeBis>
|
move $t0 $t1
|
||||||
</terme>
|
e3 :
|
||||||
<expArithBis>
|
subi $sp, $sp, 4
|
||||||
</expArithBis>
|
sw $t0, 0($sp)
|
||||||
</expArith>
|
lw $t0, 0($sp)
|
||||||
<comparaisonBis>
|
addi $sp, $sp, 4
|
||||||
</comparaisonBis>
|
beq $t0 $zero e4
|
||||||
</comparaison>
|
li $t0, 5
|
||||||
</negation>
|
subi $sp, $sp, 4
|
||||||
<conjonctionBis>
|
sw $t0, 0($sp)
|
||||||
</conjonctionBis>
|
lw $t0, 0($sp)
|
||||||
</conjonction>
|
addi $sp, $sp, 4
|
||||||
<expressionBis>
|
move $a0, $t0
|
||||||
<symbole>OU</symbole>
|
li $v0, 1
|
||||||
<conjonction>
|
syscall
|
||||||
<negation>
|
li $a0, '\n'
|
||||||
<comparaison>
|
li $v0, 11
|
||||||
<expArith>
|
syscall
|
||||||
<terme>
|
j e5
|
||||||
<facteur>
|
e4:
|
||||||
<mot_clef>lire</mot_clef>
|
e5:
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
lw $ra, 0($sp)
|
||||||
</facteur>
|
addi $sp, $sp, 4
|
||||||
<termeBis>
|
lw $fp, 0($sp)
|
||||||
</termeBis>
|
addi $sp, $sp, 4
|
||||||
</terme>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<expArithBis>
|
jr $ra
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<mot_clef>alors</mot_clef>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>5</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
<optSinon>
|
|
||||||
</optSinon>
|
|
||||||
</instructionSi>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ subi $sp, $sp, 4
|
|||||||
sw $t0, 0($sp)
|
sw $t0, 0($sp)
|
||||||
lw $t2, 0($sp)
|
lw $t2, 0($sp)
|
||||||
addi $sp, $sp, 4
|
addi $sp, $sp, 4
|
||||||
or $t0, $t1, $t2
|
or $t0, $zero, $t2
|
||||||
j e3
|
j e3
|
||||||
e2 :
|
e2 :
|
||||||
move $t0 $t1
|
move $t0 $t1
|
||||||
@@ -44,11 +44,15 @@ sw $t0, 0($sp)
|
|||||||
lw $t1, 0($sp)
|
lw $t1, 0($sp)
|
||||||
addi $sp, $sp, 4
|
addi $sp, $sp, 4
|
||||||
beq $zero, $t1, e5
|
beq $zero, $t1, e5
|
||||||
|
subi $sp, $sp, 4
|
||||||
|
sw $t1, 0($sp)
|
||||||
li $t0, 6
|
li $t0, 6
|
||||||
subi $sp, $sp, 4
|
subi $sp, $sp, 4
|
||||||
sw $t0, 0($sp)
|
sw $t0, 0($sp)
|
||||||
lw $t2, 0($sp)
|
lw $t2, 0($sp)
|
||||||
addi $sp, $sp, 4
|
addi $sp, $sp, 4
|
||||||
|
lw $t1, 0($sp)
|
||||||
|
addi $sp, $sp, 4
|
||||||
beq $zero, $t2, e5
|
beq $zero, $t2, e5
|
||||||
and $t0, $t1, $t2
|
and $t0, $t1, $t2
|
||||||
j e4
|
j e4
|
||||||
@@ -80,7 +84,7 @@ subi $sp, $sp, 4
|
|||||||
sw $t0, 0($sp)
|
sw $t0, 0($sp)
|
||||||
lw $t2, 0($sp)
|
lw $t2, 0($sp)
|
||||||
addi $sp, $sp, 4
|
addi $sp, $sp, 4
|
||||||
or $t0, $t1, $t2
|
or $t0, $zero, $t2
|
||||||
j e9
|
j e9
|
||||||
e8 :
|
e8 :
|
||||||
move $t0 $t1
|
move $t0 $t1
|
||||||
@@ -101,6 +105,8 @@ sw $t0, 0($sp)
|
|||||||
lw $t1, 0($sp)
|
lw $t1, 0($sp)
|
||||||
addi $sp, $sp, 4
|
addi $sp, $sp, 4
|
||||||
beq $zero, $t1, e11
|
beq $zero, $t1, e11
|
||||||
|
subi $sp, $sp, 4
|
||||||
|
sw $t1, 0($sp)
|
||||||
li $v0 5
|
li $v0 5
|
||||||
syscall
|
syscall
|
||||||
move $t0, $v0
|
move $t0, $v0
|
||||||
@@ -108,6 +114,8 @@ subi $sp, $sp, 4
|
|||||||
sw $t0, 0($sp)
|
sw $t0, 0($sp)
|
||||||
lw $t2, 0($sp)
|
lw $t2, 0($sp)
|
||||||
addi $sp, $sp, 4
|
addi $sp, $sp, 4
|
||||||
|
lw $t1, 0($sp)
|
||||||
|
addi $sp, $sp, 4
|
||||||
beq $zero, $t2, e11
|
beq $zero, $t2, e11
|
||||||
and $t0, $t1, $t2
|
and $t0, $t1, $t2
|
||||||
j e10
|
j e10
|
||||||
@@ -139,7 +147,7 @@ subi $sp, $sp, 4
|
|||||||
sw $t0, 0($sp)
|
sw $t0, 0($sp)
|
||||||
lw $t2, 0($sp)
|
lw $t2, 0($sp)
|
||||||
addi $sp, $sp, 4
|
addi $sp, $sp, 4
|
||||||
or $t0, $t1, $t2
|
or $t0, $zero, $t2
|
||||||
j e15
|
j e15
|
||||||
e14 :
|
e14 :
|
||||||
move $t0 $t1
|
move $t0 $t1
|
||||||
@@ -160,6 +168,8 @@ sw $t0, 0($sp)
|
|||||||
lw $t1, 0($sp)
|
lw $t1, 0($sp)
|
||||||
addi $sp, $sp, 4
|
addi $sp, $sp, 4
|
||||||
beq $zero, $t1, e17
|
beq $zero, $t1, e17
|
||||||
|
subi $sp, $sp, 4
|
||||||
|
sw $t1, 0($sp)
|
||||||
li $v0 5
|
li $v0 5
|
||||||
syscall
|
syscall
|
||||||
move $t0, $v0
|
move $t0, $v0
|
||||||
@@ -167,6 +177,8 @@ subi $sp, $sp, 4
|
|||||||
sw $t0, 0($sp)
|
sw $t0, 0($sp)
|
||||||
lw $t2, 0($sp)
|
lw $t2, 0($sp)
|
||||||
addi $sp, $sp, 4
|
addi $sp, $sp, 4
|
||||||
|
lw $t1, 0($sp)
|
||||||
|
addi $sp, $sp, 4
|
||||||
beq $zero, $t2, e17
|
beq $zero, $t2, e17
|
||||||
and $t0, $t1, $t2
|
and $t0, $t1, $t2
|
||||||
j e16
|
j e16
|
||||||
|
|||||||
@@ -1,375 +1,204 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
.text
|
||||||
</optDecVariables>
|
__start:
|
||||||
<listeDecFonctions>
|
jal main
|
||||||
<declarationFonction>
|
li $v0, 10
|
||||||
<id_fonction>main</id_fonction>
|
syscall
|
||||||
<listeParam>
|
main :
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
<optListeDecVariables>
|
sw $fp, 0($sp)
|
||||||
</optListeDecVariables>
|
move $fp, $sp
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
</listeParam>
|
sw $ra, 0($sp)
|
||||||
<optDecVariables>
|
li $t0, 3
|
||||||
</optDecVariables>
|
subi $sp, $sp, 4
|
||||||
<instructionBloc>
|
sw $t0, 0($sp)
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
lw $t1, 0($sp)
|
||||||
<listeInstructions>
|
addi $sp, $sp, 4
|
||||||
<instruction>
|
beq $zero, $t1, e0
|
||||||
<instructionEcriture>
|
j e2
|
||||||
<mot_clef>ecrire</mot_clef>
|
e0 :
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
li $t0, 4
|
||||||
<expression>
|
subi $sp, $sp, 4
|
||||||
<conjonction>
|
sw $t0, 0($sp)
|
||||||
<negation>
|
lw $t2, 0($sp)
|
||||||
<comparaison>
|
addi $sp, $sp, 4
|
||||||
<expArith>
|
or $t0, $zero, $t2
|
||||||
<terme>
|
j e3
|
||||||
<facteur>
|
e2 :
|
||||||
<nombre>3</nombre>
|
move $t0 $t1
|
||||||
</facteur>
|
e3 :
|
||||||
<termeBis>
|
subi $sp, $sp, 4
|
||||||
</termeBis>
|
sw $t0, 0($sp)
|
||||||
</terme>
|
lw $t0, 0($sp)
|
||||||
<expArithBis>
|
addi $sp, $sp, 4
|
||||||
</expArithBis>
|
move $a0, $t0
|
||||||
</expArith>
|
li $v0, 1
|
||||||
<comparaisonBis>
|
syscall
|
||||||
</comparaisonBis>
|
li $a0, '\n'
|
||||||
</comparaison>
|
li $v0, 11
|
||||||
</negation>
|
syscall
|
||||||
<conjonctionBis>
|
li $t0, 3
|
||||||
</conjonctionBis>
|
subi $sp, $sp, 4
|
||||||
</conjonction>
|
sw $t0, 0($sp)
|
||||||
<expressionBis>
|
lw $t1, 0($sp)
|
||||||
<symbole>OU</symbole>
|
addi $sp, $sp, 4
|
||||||
<conjonction>
|
beq $zero, $t1, e5
|
||||||
<negation>
|
subi $sp, $sp, 4
|
||||||
<comparaison>
|
sw $t1, 0($sp)
|
||||||
<expArith>
|
li $t0, 6
|
||||||
<terme>
|
subi $sp, $sp, 4
|
||||||
<facteur>
|
sw $t0, 0($sp)
|
||||||
<nombre>4</nombre>
|
lw $t2, 0($sp)
|
||||||
</facteur>
|
addi $sp, $sp, 4
|
||||||
<termeBis>
|
lw $t1, 0($sp)
|
||||||
</termeBis>
|
addi $sp, $sp, 4
|
||||||
</terme>
|
beq $zero, $t2, e5
|
||||||
<expArithBis>
|
and $t0, $t1, $t2
|
||||||
</expArithBis>
|
j e4
|
||||||
</expArith>
|
e5 :
|
||||||
<comparaisonBis>
|
li $t0 0
|
||||||
</comparaisonBis>
|
e4 :
|
||||||
</comparaison>
|
subi $sp, $sp, 4
|
||||||
</negation>
|
sw $t0, 0($sp)
|
||||||
<conjonctionBis>
|
lw $t0, 0($sp)
|
||||||
</conjonctionBis>
|
addi $sp, $sp, 4
|
||||||
</conjonction>
|
move $a0, $t0
|
||||||
<expressionBis>
|
li $v0, 1
|
||||||
</expressionBis>
|
syscall
|
||||||
</expressionBis>
|
li $a0, '\n'
|
||||||
</expression>
|
li $v0, 11
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
syscall
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
li $t0, 3
|
||||||
</instructionEcriture>
|
subi $sp, $sp, 4
|
||||||
</instruction>
|
sw $t0, 0($sp)
|
||||||
<listeInstructions>
|
lw $t1, 0($sp)
|
||||||
<instruction>
|
addi $sp, $sp, 4
|
||||||
<instructionEcriture>
|
beq $zero, $t1, e6
|
||||||
<mot_clef>ecrire</mot_clef>
|
j e8
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
e6 :
|
||||||
<expression>
|
li $v0 5
|
||||||
<conjonction>
|
syscall
|
||||||
<negation>
|
move $t0, $v0
|
||||||
<comparaison>
|
subi $sp, $sp, 4
|
||||||
<expArith>
|
sw $t0, 0($sp)
|
||||||
<terme>
|
lw $t2, 0($sp)
|
||||||
<facteur>
|
addi $sp, $sp, 4
|
||||||
<nombre>3</nombre>
|
or $t0, $zero, $t2
|
||||||
</facteur>
|
j e9
|
||||||
<termeBis>
|
e8 :
|
||||||
</termeBis>
|
move $t0 $t1
|
||||||
</terme>
|
e9 :
|
||||||
<expArithBis>
|
subi $sp, $sp, 4
|
||||||
</expArithBis>
|
sw $t0, 0($sp)
|
||||||
</expArith>
|
lw $t0, 0($sp)
|
||||||
<comparaisonBis>
|
addi $sp, $sp, 4
|
||||||
</comparaisonBis>
|
move $a0, $t0
|
||||||
</comparaison>
|
li $v0, 1
|
||||||
</negation>
|
syscall
|
||||||
<conjonctionBis>
|
li $a0, '\n'
|
||||||
<symbole>ET</symbole>
|
li $v0, 11
|
||||||
<negation>
|
syscall
|
||||||
<comparaison>
|
li $t0, 3
|
||||||
<expArith>
|
subi $sp, $sp, 4
|
||||||
<terme>
|
sw $t0, 0($sp)
|
||||||
<facteur>
|
lw $t1, 0($sp)
|
||||||
<nombre>6</nombre>
|
addi $sp, $sp, 4
|
||||||
</facteur>
|
beq $zero, $t1, e11
|
||||||
<termeBis>
|
subi $sp, $sp, 4
|
||||||
</termeBis>
|
sw $t1, 0($sp)
|
||||||
</terme>
|
li $v0 5
|
||||||
<expArithBis>
|
syscall
|
||||||
</expArithBis>
|
move $t0, $v0
|
||||||
</expArith>
|
subi $sp, $sp, 4
|
||||||
<comparaisonBis>
|
sw $t0, 0($sp)
|
||||||
</comparaisonBis>
|
lw $t2, 0($sp)
|
||||||
</comparaison>
|
addi $sp, $sp, 4
|
||||||
</negation>
|
lw $t1, 0($sp)
|
||||||
<conjonctionBis>
|
addi $sp, $sp, 4
|
||||||
</conjonctionBis>
|
beq $zero, $t2, e11
|
||||||
</conjonctionBis>
|
and $t0, $t1, $t2
|
||||||
</conjonction>
|
j e10
|
||||||
<expressionBis>
|
e11 :
|
||||||
</expressionBis>
|
li $t0 0
|
||||||
</expression>
|
e10 :
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
sw $t0, 0($sp)
|
||||||
</instructionEcriture>
|
lw $t0, 0($sp)
|
||||||
</instruction>
|
addi $sp, $sp, 4
|
||||||
<listeInstructions>
|
move $a0, $t0
|
||||||
<instruction>
|
li $v0, 1
|
||||||
<instructionEcriture>
|
syscall
|
||||||
<mot_clef>ecrire</mot_clef>
|
li $a0, '\n'
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
li $v0, 11
|
||||||
<expression>
|
syscall
|
||||||
<conjonction>
|
li $t0, 0
|
||||||
<negation>
|
subi $sp, $sp, 4
|
||||||
<comparaison>
|
sw $t0, 0($sp)
|
||||||
<expArith>
|
lw $t1, 0($sp)
|
||||||
<terme>
|
addi $sp, $sp, 4
|
||||||
<facteur>
|
beq $zero, $t1, e12
|
||||||
<nombre>3</nombre>
|
j e14
|
||||||
</facteur>
|
e12 :
|
||||||
<termeBis>
|
li $v0 5
|
||||||
</termeBis>
|
syscall
|
||||||
</terme>
|
move $t0, $v0
|
||||||
<expArithBis>
|
subi $sp, $sp, 4
|
||||||
</expArithBis>
|
sw $t0, 0($sp)
|
||||||
</expArith>
|
lw $t2, 0($sp)
|
||||||
<comparaisonBis>
|
addi $sp, $sp, 4
|
||||||
</comparaisonBis>
|
or $t0, $zero, $t2
|
||||||
</comparaison>
|
j e15
|
||||||
</negation>
|
e14 :
|
||||||
<conjonctionBis>
|
move $t0 $t1
|
||||||
</conjonctionBis>
|
e15 :
|
||||||
</conjonction>
|
subi $sp, $sp, 4
|
||||||
<expressionBis>
|
sw $t0, 0($sp)
|
||||||
<symbole>OU</symbole>
|
lw $t0, 0($sp)
|
||||||
<conjonction>
|
addi $sp, $sp, 4
|
||||||
<negation>
|
move $a0, $t0
|
||||||
<comparaison>
|
li $v0, 1
|
||||||
<expArith>
|
syscall
|
||||||
<terme>
|
li $a0, '\n'
|
||||||
<facteur>
|
li $v0, 11
|
||||||
<mot_clef>lire</mot_clef>
|
syscall
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
li $t0, 0
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
</facteur>
|
sw $t0, 0($sp)
|
||||||
<termeBis>
|
lw $t1, 0($sp)
|
||||||
</termeBis>
|
addi $sp, $sp, 4
|
||||||
</terme>
|
beq $zero, $t1, e17
|
||||||
<expArithBis>
|
subi $sp, $sp, 4
|
||||||
</expArithBis>
|
sw $t1, 0($sp)
|
||||||
</expArith>
|
li $v0 5
|
||||||
<comparaisonBis>
|
syscall
|
||||||
</comparaisonBis>
|
move $t0, $v0
|
||||||
</comparaison>
|
subi $sp, $sp, 4
|
||||||
</negation>
|
sw $t0, 0($sp)
|
||||||
<conjonctionBis>
|
lw $t2, 0($sp)
|
||||||
</conjonctionBis>
|
addi $sp, $sp, 4
|
||||||
</conjonction>
|
lw $t1, 0($sp)
|
||||||
<expressionBis>
|
addi $sp, $sp, 4
|
||||||
</expressionBis>
|
beq $zero, $t2, e17
|
||||||
</expressionBis>
|
and $t0, $t1, $t2
|
||||||
</expression>
|
j e16
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
e17 :
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
li $t0 0
|
||||||
</instructionEcriture>
|
e16 :
|
||||||
</instruction>
|
subi $sp, $sp, 4
|
||||||
<listeInstructions>
|
sw $t0, 0($sp)
|
||||||
<instruction>
|
lw $t0, 0($sp)
|
||||||
<instructionEcriture>
|
addi $sp, $sp, 4
|
||||||
<mot_clef>ecrire</mot_clef>
|
move $a0, $t0
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
li $v0, 1
|
||||||
<expression>
|
syscall
|
||||||
<conjonction>
|
li $a0, '\n'
|
||||||
<negation>
|
li $v0, 11
|
||||||
<comparaison>
|
syscall
|
||||||
<expArith>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<terme>
|
lw $ra, 0($sp)
|
||||||
<facteur>
|
addi $sp, $sp, 4
|
||||||
<nombre>3</nombre>
|
lw $fp, 0($sp)
|
||||||
</facteur>
|
addi $sp, $sp, 4
|
||||||
<termeBis>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
</termeBis>
|
jr $ra
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
<symbole>ET</symbole>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<mot_clef>lire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>0</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
<symbole>OU</symbole>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<mot_clef>lire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>0</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
<symbole>ET</symbole>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<mot_clef>lire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
33
eval-final-projet/output/eval25.asynt
Normal file
33
eval-final-projet/output/eval25.asynt
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<prog>
|
||||||
|
<l_dec>
|
||||||
|
<varDec>$a</varDec>
|
||||||
|
</l_dec>
|
||||||
|
<l_dec>
|
||||||
|
<foncDec>
|
||||||
|
main
|
||||||
|
<l_instr>
|
||||||
|
<instr_affect>
|
||||||
|
<var_simple>$a</var_simple>
|
||||||
|
<lireExp>
|
||||||
|
</lireExp>
|
||||||
|
</instr_affect>
|
||||||
|
<l_instr>
|
||||||
|
<instr_ecrire>
|
||||||
|
<opExp>
|
||||||
|
condexp
|
||||||
|
<opExp>
|
||||||
|
inf
|
||||||
|
<varExp>
|
||||||
|
<var_simple>$a</var_simple>
|
||||||
|
</varExp>
|
||||||
|
<intExp>10</intExp>
|
||||||
|
</opExp>
|
||||||
|
<intExp>0</intExp>
|
||||||
|
<intExp>1</intExp>
|
||||||
|
</opExp>
|
||||||
|
</instr_ecrire>
|
||||||
|
</l_instr>
|
||||||
|
</l_instr>
|
||||||
|
</foncDec>
|
||||||
|
</l_dec>
|
||||||
|
</prog>
|
||||||
26
eval-final-projet/output/eval25.lex
Normal file
26
eval-final-projet/output/eval25.lex
Normal file
@@ -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
|
||||||
70
eval-final-projet/output/eval25.mips
Normal file
70
eval-final-projet/output/eval25.mips
Normal file
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
6
eval-final-projet/output/eval25.tab
Normal file
6
eval-final-projet/output/eval25.tab
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
------------------------------------------
|
||||||
|
base = 2
|
||||||
|
sommet = 2
|
||||||
|
0 $a GLOBALE ENTIER 0 -1
|
||||||
|
1 main GLOBALE FONCTION 0 0
|
||||||
|
------------------------------------------
|
||||||
126
eval-final-projet/output/eval26.asynt
Normal file
126
eval-final-projet/output/eval26.asynt
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
<prog>
|
||||||
|
<l_dec>
|
||||||
|
<foncDec>
|
||||||
|
main
|
||||||
|
<l_dec>
|
||||||
|
<varDec>$temp</varDec>
|
||||||
|
<l_dec>
|
||||||
|
<varDec>$g</varDec>
|
||||||
|
<l_dec>
|
||||||
|
<varDec>$l</varDec>
|
||||||
|
<l_dec>
|
||||||
|
<varDec>$v</varDec>
|
||||||
|
</l_dec>
|
||||||
|
</l_dec>
|
||||||
|
</l_dec>
|
||||||
|
</l_dec>
|
||||||
|
<l_instr>
|
||||||
|
<instr_affect>
|
||||||
|
<var_simple>$temp</var_simple>
|
||||||
|
<lireExp>
|
||||||
|
</lireExp>
|
||||||
|
</instr_affect>
|
||||||
|
<l_instr>
|
||||||
|
<instr_affect>
|
||||||
|
<var_simple>$g</var_simple>
|
||||||
|
<opExp>
|
||||||
|
condexp
|
||||||
|
<opExp>
|
||||||
|
ou
|
||||||
|
<opExp>
|
||||||
|
inf
|
||||||
|
<varExp>
|
||||||
|
<var_simple>$temp</var_simple>
|
||||||
|
</varExp>
|
||||||
|
<intExp>0</intExp>
|
||||||
|
</opExp>
|
||||||
|
<opExp>
|
||||||
|
egal
|
||||||
|
<varExp>
|
||||||
|
<var_simple>$temp</var_simple>
|
||||||
|
</varExp>
|
||||||
|
<intExp>0</intExp>
|
||||||
|
</opExp>
|
||||||
|
</opExp>
|
||||||
|
<intExp>1</intExp>
|
||||||
|
<intExp>0</intExp>
|
||||||
|
</opExp>
|
||||||
|
</instr_affect>
|
||||||
|
<l_instr>
|
||||||
|
<instr_affect>
|
||||||
|
<var_simple>$l</var_simple>
|
||||||
|
<opExp>
|
||||||
|
condexp
|
||||||
|
<opExp>
|
||||||
|
et
|
||||||
|
<opExp>
|
||||||
|
inf
|
||||||
|
<varExp>
|
||||||
|
<var_simple>$temp</var_simple>
|
||||||
|
</varExp>
|
||||||
|
<intExp>100</intExp>
|
||||||
|
</opExp>
|
||||||
|
<opExp>
|
||||||
|
inf
|
||||||
|
<intExp>0</intExp>
|
||||||
|
<varExp>
|
||||||
|
<var_simple>$temp</var_simple>
|
||||||
|
</varExp>
|
||||||
|
</opExp>
|
||||||
|
</opExp>
|
||||||
|
<intExp>1</intExp>
|
||||||
|
<intExp>0</intExp>
|
||||||
|
</opExp>
|
||||||
|
</instr_affect>
|
||||||
|
<l_instr>
|
||||||
|
<instr_affect>
|
||||||
|
<var_simple>$v</var_simple>
|
||||||
|
<opExp>
|
||||||
|
condexp
|
||||||
|
<opExp>
|
||||||
|
et
|
||||||
|
<opExp>
|
||||||
|
non
|
||||||
|
<varExp>
|
||||||
|
<var_simple>$g</var_simple>
|
||||||
|
</varExp>
|
||||||
|
</opExp>
|
||||||
|
<opExp>
|
||||||
|
non
|
||||||
|
<varExp>
|
||||||
|
<var_simple>$l</var_simple>
|
||||||
|
</varExp>
|
||||||
|
</opExp>
|
||||||
|
</opExp>
|
||||||
|
<intExp>1</intExp>
|
||||||
|
<intExp>0</intExp>
|
||||||
|
</opExp>
|
||||||
|
</instr_affect>
|
||||||
|
<l_instr>
|
||||||
|
<instr_ecrire>
|
||||||
|
<varExp>
|
||||||
|
<var_simple>$g</var_simple>
|
||||||
|
</varExp>
|
||||||
|
</instr_ecrire>
|
||||||
|
<l_instr>
|
||||||
|
<instr_ecrire>
|
||||||
|
<varExp>
|
||||||
|
<var_simple>$l</var_simple>
|
||||||
|
</varExp>
|
||||||
|
</instr_ecrire>
|
||||||
|
<l_instr>
|
||||||
|
<instr_ecrire>
|
||||||
|
<varExp>
|
||||||
|
<var_simple>$v</var_simple>
|
||||||
|
</varExp>
|
||||||
|
</instr_ecrire>
|
||||||
|
</l_instr>
|
||||||
|
</l_instr>
|
||||||
|
</l_instr>
|
||||||
|
</l_instr>
|
||||||
|
</l_instr>
|
||||||
|
</l_instr>
|
||||||
|
</l_instr>
|
||||||
|
</foncDec>
|
||||||
|
</l_dec>
|
||||||
|
</prog>
|
||||||
79
eval-final-projet/output/eval26.lex
Normal file
79
eval-final-projet/output/eval26.lex
Normal file
@@ -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
|
||||||
255
eval-final-projet/output/eval26.mips
Normal file
255
eval-final-projet/output/eval26.mips
Normal file
@@ -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
|
||||||
255
eval-final-projet/output/eval26.synt
Normal file
255
eval-final-projet/output/eval26.synt
Normal file
@@ -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
|
||||||
9
eval-final-projet/output/eval26.tab
Normal file
9
eval-final-projet/output/eval26.tab
Normal file
@@ -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
|
||||||
|
------------------------------------------
|
||||||
52
eval-final-projet/output/eval27.asynt
Normal file
52
eval-final-projet/output/eval27.asynt
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
<prog>
|
||||||
|
<l_dec>
|
||||||
|
<foncDec>
|
||||||
|
main
|
||||||
|
<l_instr>
|
||||||
|
<instr_ecrire>
|
||||||
|
<opExp>
|
||||||
|
condexp
|
||||||
|
<intExp>1</intExp>
|
||||||
|
<intExp>0</intExp>
|
||||||
|
<opExp>
|
||||||
|
condexp
|
||||||
|
<intExp>1</intExp>
|
||||||
|
<intExp>0</intExp>
|
||||||
|
<intExp>1</intExp>
|
||||||
|
</opExp>
|
||||||
|
</opExp>
|
||||||
|
</instr_ecrire>
|
||||||
|
<l_instr>
|
||||||
|
<instr_ecrire>
|
||||||
|
<opExp>
|
||||||
|
condexp
|
||||||
|
<opExp>
|
||||||
|
condexp
|
||||||
|
<intExp>1</intExp>
|
||||||
|
<intExp>0</intExp>
|
||||||
|
<intExp>1</intExp>
|
||||||
|
</opExp>
|
||||||
|
<intExp>0</intExp>
|
||||||
|
<intExp>1</intExp>
|
||||||
|
</opExp>
|
||||||
|
</instr_ecrire>
|
||||||
|
<l_instr>
|
||||||
|
<instr_ecrire>
|
||||||
|
<opExp>
|
||||||
|
condexp
|
||||||
|
<intExp>1</intExp>
|
||||||
|
<intExp>0</intExp>
|
||||||
|
<opExp>
|
||||||
|
condexp
|
||||||
|
<intExp>1</intExp>
|
||||||
|
<intExp>0</intExp>
|
||||||
|
<intExp>1</intExp>
|
||||||
|
</opExp>
|
||||||
|
</opExp>
|
||||||
|
</instr_ecrire>
|
||||||
|
</l_instr>
|
||||||
|
</l_instr>
|
||||||
|
</l_instr>
|
||||||
|
</foncDec>
|
||||||
|
</l_dec>
|
||||||
|
</prog>
|
||||||
49
eval-final-projet/output/eval27.lex
Normal file
49
eval-final-projet/output/eval27.lex
Normal file
@@ -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
|
||||||
160
eval-final-projet/output/eval27.mips
Normal file
160
eval-final-projet/output/eval27.mips
Normal file
@@ -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
|
||||||
160
eval-final-projet/output/eval27.synt
Normal file
160
eval-final-projet/output/eval27.synt
Normal file
@@ -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
|
||||||
5
eval-final-projet/output/eval27.tab
Normal file
5
eval-final-projet/output/eval27.tab
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
------------------------------------------
|
||||||
|
base = 1
|
||||||
|
sommet = 1
|
||||||
|
0 main GLOBALE FONCTION 0 0
|
||||||
|
------------------------------------------
|
||||||
@@ -1,77 +1,42 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
$$a: .space 4
|
||||||
<listeDecVariables>
|
.text
|
||||||
<declarationVariable>
|
__start:
|
||||||
<mot_clef>entier</mot_clef>
|
jal main
|
||||||
<id_variable>$a</id_variable>
|
li $v0, 10
|
||||||
<optTailleTableau>
|
syscall
|
||||||
</optTailleTableau>
|
main :
|
||||||
</declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
sw $fp, 0($sp)
|
||||||
</listeDecVariablesBis>
|
move $fp, $sp
|
||||||
</listeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
sw $ra, 0($sp)
|
||||||
</optDecVariables>
|
li $t0, 5
|
||||||
<listeDecFonctions>
|
subi $sp, $sp, 4
|
||||||
<declarationFonction>
|
sw $t0, 0($sp)
|
||||||
<id_fonction>main</id_fonction>
|
li $t0, 2
|
||||||
<listeParam>
|
subi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
sw $t0, 0($sp)
|
||||||
<optListeDecVariables>
|
lw $t2, 0($sp)
|
||||||
</optListeDecVariables>
|
addi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
lw $t1, 0($sp)
|
||||||
</listeParam>
|
addi $sp, $sp, 4
|
||||||
<optDecVariables>
|
mult $t1, $t2
|
||||||
</optDecVariables>
|
mflo $t0
|
||||||
<instructionBloc>
|
subi $sp, $sp, 4
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
sw $t0, 0($sp)
|
||||||
<listeInstructions>
|
lw $t0, 0($sp)
|
||||||
<instruction>
|
addi $sp, $sp, 4
|
||||||
<instructionEcriture>
|
move $a0, $t0
|
||||||
<mot_clef>ecrire</mot_clef>
|
li $v0, 1
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
syscall
|
||||||
<expression>
|
li $a0, '\n'
|
||||||
<conjonction>
|
li $v0, 11
|
||||||
<negation>
|
syscall
|
||||||
<comparaison>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<expArith>
|
lw $ra, 0($sp)
|
||||||
<terme>
|
addi $sp, $sp, 4
|
||||||
<facteur>
|
lw $fp, 0($sp)
|
||||||
<nombre>5</nombre>
|
addi $sp, $sp, 4
|
||||||
</facteur>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<termeBis>
|
jr $ra
|
||||||
<symbole>FOIS</symbole>
|
|
||||||
<facteur>
|
|
||||||
<nombre>2</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -1,513 +1,146 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
.text
|
||||||
</optDecVariables>
|
__start:
|
||||||
<listeDecFonctions>
|
jal main
|
||||||
<declarationFonction>
|
li $v0, 10
|
||||||
<id_fonction>max</id_fonction>
|
syscall
|
||||||
<listeParam>
|
max :
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
<optListeDecVariables>
|
sw $fp, 0($sp)
|
||||||
<listeDecVariables>
|
move $fp, $sp
|
||||||
<declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<mot_clef>entier</mot_clef>
|
sw $ra, 0($sp)
|
||||||
<id_variable>$a</id_variable>
|
lw $t0, 8($fp) #variable argument $a
|
||||||
<optTailleTableau>
|
subi $sp, $sp, 4
|
||||||
</optTailleTableau>
|
sw $t0, 0($sp)
|
||||||
</declarationVariable>
|
lw $t0, 4($fp) #variable argument $b
|
||||||
<listeDecVariablesBis>
|
subi $sp, $sp, 4
|
||||||
<symbole>VIRGULE</symbole>
|
sw $t0, 0($sp)
|
||||||
<declarationVariable>
|
lw $t2, 0($sp)
|
||||||
<mot_clef>entier</mot_clef>
|
addi $sp, $sp, 4
|
||||||
<id_variable>$b</id_variable>
|
lw $t1, 0($sp)
|
||||||
<optTailleTableau>
|
addi $sp, $sp, 4
|
||||||
</optTailleTableau>
|
li $t0, 1
|
||||||
</declarationVariable>
|
blt $t1, $t2 e0
|
||||||
<listeDecVariablesBis>
|
li $t0, 0
|
||||||
</listeDecVariablesBis>
|
e0:
|
||||||
</listeDecVariablesBis>
|
subi $sp, $sp, 4
|
||||||
</listeDecVariables>
|
sw $t0, 0($sp)
|
||||||
</optListeDecVariables>
|
lw $t0, 0($sp)
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
addi $sp, $sp, 4
|
||||||
</listeParam>
|
beq $t0 $zero e1
|
||||||
<optDecVariables>
|
lw $t0, 4($fp) #variable argument $b
|
||||||
</optDecVariables>
|
subi $sp, $sp, 4
|
||||||
<instructionBloc>
|
sw $t0, 0($sp)
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
lw $t0, 0($sp)
|
||||||
<listeInstructions>
|
addi $sp, $sp, 4
|
||||||
<instruction>
|
sw $t0 12($fp) #Adresse de retour
|
||||||
<instructionSi>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<mot_clef>si</mot_clef>
|
lw $ra, 0($sp)
|
||||||
<expression>
|
addi $sp, $sp, 4
|
||||||
<conjonction>
|
lw $fp, 0($sp)
|
||||||
<negation>
|
addi $sp, $sp, 4
|
||||||
<comparaison>
|
jr $ra
|
||||||
<expArith>
|
j e2
|
||||||
<terme>
|
e1:
|
||||||
<facteur>
|
e2:
|
||||||
<var>
|
lw $t0, 8($fp) #variable argument $a
|
||||||
<id_variable>$a</id_variable>
|
subi $sp, $sp, 4
|
||||||
<optIndice>
|
sw $t0, 0($sp)
|
||||||
</optIndice>
|
lw $t0, 0($sp)
|
||||||
</var>
|
addi $sp, $sp, 4
|
||||||
</facteur>
|
sw $t0 12($fp) #Adresse de retour
|
||||||
<termeBis>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
</termeBis>
|
lw $ra, 0($sp)
|
||||||
</terme>
|
addi $sp, $sp, 4
|
||||||
<expArithBis>
|
lw $fp, 0($sp)
|
||||||
</expArithBis>
|
addi $sp, $sp, 4
|
||||||
</expArith>
|
jr $ra
|
||||||
<comparaisonBis>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<symbole>INFERIEUR</symbole>
|
lw $ra, 0($sp)
|
||||||
<expArith>
|
addi $sp, $sp, 4
|
||||||
<terme>
|
lw $fp, 0($sp)
|
||||||
<facteur>
|
addi $sp, $sp, 4
|
||||||
<var>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<id_variable>$b</id_variable>
|
jr $ra
|
||||||
<optIndice>
|
main :
|
||||||
</optIndice>
|
subi $sp, $sp, 4
|
||||||
</var>
|
sw $fp, 0($sp)
|
||||||
</facteur>
|
move $fp, $sp
|
||||||
<termeBis>
|
subi $sp, $sp, 4
|
||||||
</termeBis>
|
sw $ra, 0($sp)
|
||||||
</terme>
|
subi $sp, $sp, 4
|
||||||
<expArithBis>
|
subi $sp, $sp, 4
|
||||||
</expArithBis>
|
li $v0 5
|
||||||
</expArith>
|
syscall
|
||||||
<comparaisonBis>
|
move $t0, $v0
|
||||||
</comparaisonBis>
|
subi $sp, $sp, 4
|
||||||
</comparaisonBis>
|
sw $t0, 0($sp)
|
||||||
</comparaison>
|
lw $t0, 0($sp)
|
||||||
</negation>
|
addi $sp, $sp, 4
|
||||||
<conjonctionBis>
|
sw $t0, -8($fp) #variable locale
|
||||||
</conjonctionBis>
|
li $v0 5
|
||||||
</conjonction>
|
syscall
|
||||||
<expressionBis>
|
move $t0, $v0
|
||||||
</expressionBis>
|
subi $sp, $sp, 4
|
||||||
</expression>
|
sw $t0, 0($sp)
|
||||||
<mot_clef>alors</mot_clef>
|
lw $t0, 0($sp)
|
||||||
<instructionBloc>
|
addi $sp, $sp, 4
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
sw $t0, -12($fp) #variable locale
|
||||||
<listeInstructions>
|
subi $sp, $sp, 4 #Val Retour
|
||||||
<instruction>
|
lw $t0, -8($fp) #variable locale
|
||||||
<instructionRetour>
|
subi $sp, $sp, 4
|
||||||
<mot_clef>retour</mot_clef>
|
sw $t0, 0($sp)
|
||||||
<expression>
|
lw $t0, -12($fp) #variable locale
|
||||||
<conjonction>
|
subi $sp, $sp, 4
|
||||||
<negation>
|
sw $t0, 0($sp)
|
||||||
<comparaison>
|
jal max
|
||||||
<expArith>
|
addi $sp, $sp, 8 #désalocation des arguments
|
||||||
<terme>
|
lw $t0, -8($fp) #variable locale
|
||||||
<facteur>
|
subi $sp, $sp, 4
|
||||||
<var>
|
sw $t0, 0($sp)
|
||||||
<id_variable>$b</id_variable>
|
lw $t2, 0($sp)
|
||||||
<optIndice>
|
addi $sp, $sp, 4
|
||||||
</optIndice>
|
lw $t1, 0($sp)
|
||||||
</var>
|
addi $sp, $sp, 4
|
||||||
</facteur>
|
li $t0, 1
|
||||||
<termeBis>
|
beq $t1, $t2 e3
|
||||||
</termeBis>
|
li $t0, 0
|
||||||
</terme>
|
e3:
|
||||||
<expArithBis>
|
subi $sp, $sp, 4
|
||||||
</expArithBis>
|
sw $t0, 0($sp)
|
||||||
</expArith>
|
lw $t0, 0($sp)
|
||||||
<comparaisonBis>
|
addi $sp, $sp, 4
|
||||||
</comparaisonBis>
|
beq $t0 $zero e4
|
||||||
</comparaison>
|
lw $t0, -8($fp) #variable locale
|
||||||
</negation>
|
subi $sp, $sp, 4
|
||||||
<conjonctionBis>
|
sw $t0, 0($sp)
|
||||||
</conjonctionBis>
|
lw $t0, 0($sp)
|
||||||
</conjonction>
|
addi $sp, $sp, 4
|
||||||
<expressionBis>
|
move $a0, $t0
|
||||||
</expressionBis>
|
li $v0, 1
|
||||||
</expression>
|
syscall
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
li $a0, '\n'
|
||||||
</instructionRetour>
|
li $v0, 11
|
||||||
</instruction>
|
syscall
|
||||||
<listeInstructions>
|
j e5
|
||||||
</listeInstructions>
|
e4:
|
||||||
</listeInstructions>
|
lw $t0, -12($fp) #variable locale
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
</instructionBloc>
|
sw $t0, 0($sp)
|
||||||
<optSinon>
|
lw $t0, 0($sp)
|
||||||
</optSinon>
|
addi $sp, $sp, 4
|
||||||
</instructionSi>
|
move $a0, $t0
|
||||||
</instruction>
|
li $v0, 1
|
||||||
<listeInstructions>
|
syscall
|
||||||
<instruction>
|
li $a0, '\n'
|
||||||
<instructionRetour>
|
li $v0, 11
|
||||||
<mot_clef>retour</mot_clef>
|
syscall
|
||||||
<expression>
|
e5:
|
||||||
<conjonction>
|
addi $sp, $sp 8 # desallocation variables locales
|
||||||
<negation>
|
lw $ra, 0($sp)
|
||||||
<comparaison>
|
addi $sp, $sp, 4
|
||||||
<expArith>
|
lw $fp, 0($sp)
|
||||||
<terme>
|
addi $sp, $sp, 4
|
||||||
<facteur>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<var>
|
jr $ra
|
||||||
<id_variable>$a</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionRetour>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
<declarationFonction>
|
|
||||||
<id_fonction>main</id_fonction>
|
|
||||||
<listeParam>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<optListeDecVariables>
|
|
||||||
</optListeDecVariables>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</listeParam>
|
|
||||||
<optDecVariables>
|
|
||||||
<listeDecVariables>
|
|
||||||
<declarationVariable>
|
|
||||||
<mot_clef>entier</mot_clef>
|
|
||||||
<id_variable>$v_1</id_variable>
|
|
||||||
<optTailleTableau>
|
|
||||||
</optTailleTableau>
|
|
||||||
</declarationVariable>
|
|
||||||
<listeDecVariablesBis>
|
|
||||||
<symbole>VIRGULE</symbole>
|
|
||||||
<declarationVariable>
|
|
||||||
<mot_clef>entier</mot_clef>
|
|
||||||
<id_variable>$v_2</id_variable>
|
|
||||||
<optTailleTableau>
|
|
||||||
</optTailleTableau>
|
|
||||||
</declarationVariable>
|
|
||||||
<listeDecVariablesBis>
|
|
||||||
</listeDecVariablesBis>
|
|
||||||
</listeDecVariablesBis>
|
|
||||||
</listeDecVariables>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</optDecVariables>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAffect>
|
|
||||||
<var>
|
|
||||||
<id_variable>$v_1</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<mot_clef>lire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAffect>
|
|
||||||
<var>
|
|
||||||
<id_variable>$v_2</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<mot_clef>lire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAffect>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionSi>
|
|
||||||
<mot_clef>si</mot_clef>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<appelFct>
|
|
||||||
<id_fonction>max</id_fonction>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<listeExpressions>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$v_1</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<listeExpressionsBis>
|
|
||||||
<symbole>VIRGULE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$v_2</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<listeExpressionsBis>
|
|
||||||
</listeExpressionsBis>
|
|
||||||
</listeExpressionsBis>
|
|
||||||
</listeExpressions>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</appelFct>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
<symbole>EGAL</symbole>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$v_1</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<mot_clef>alors</mot_clef>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$v_1</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
<optSinon>
|
|
||||||
<mot_clef>sinon</mot_clef>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionEcriture>
|
|
||||||
<mot_clef>ecrire</mot_clef>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<var>
|
|
||||||
<id_variable>$v_2</id_variable>
|
|
||||||
<optIndice>
|
|
||||||
</optIndice>
|
|
||||||
</var>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</optSinon>
|
|
||||||
</instructionSi>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,104 +1,46 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
$$a: .space 4
|
||||||
<listeDecVariables>
|
.text
|
||||||
<declarationVariable>
|
__start:
|
||||||
<mot_clef>entier</mot_clef>
|
jal main
|
||||||
<id_variable>$a</id_variable>
|
li $v0, 10
|
||||||
<optTailleTableau>
|
syscall
|
||||||
</optTailleTableau>
|
procedure :
|
||||||
</declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
sw $fp, 0($sp)
|
||||||
</listeDecVariablesBis>
|
move $fp, $sp
|
||||||
</listeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
sw $ra, 0($sp)
|
||||||
</optDecVariables>
|
li $t0, 1
|
||||||
<listeDecFonctions>
|
subi $sp, $sp, 4
|
||||||
<declarationFonction>
|
sw $t0, 0($sp)
|
||||||
<id_fonction>procedure</id_fonction>
|
lw $t0, 0($sp)
|
||||||
<listeParam>
|
addi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
move $a0, $t0
|
||||||
<optListeDecVariables>
|
li $v0, 1
|
||||||
</optListeDecVariables>
|
syscall
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
li $a0, '\n'
|
||||||
</listeParam>
|
li $v0, 11
|
||||||
<optDecVariables>
|
syscall
|
||||||
</optDecVariables>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<instructionBloc>
|
lw $ra, 0($sp)
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
addi $sp, $sp, 4
|
||||||
<listeInstructions>
|
lw $fp, 0($sp)
|
||||||
<instruction>
|
addi $sp, $sp, 4
|
||||||
<instructionEcriture>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<mot_clef>ecrire</mot_clef>
|
jr $ra
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
main :
|
||||||
<expression>
|
subi $sp, $sp, 4
|
||||||
<conjonction>
|
sw $fp, 0($sp)
|
||||||
<negation>
|
move $fp, $sp
|
||||||
<comparaison>
|
subi $sp, $sp, 4
|
||||||
<expArith>
|
sw $ra, 0($sp)
|
||||||
<terme>
|
subi $sp, $sp, 4 #Val Retour
|
||||||
<facteur>
|
jal procedure
|
||||||
<nombre>1</nombre>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
</facteur>
|
lw $ra, 0($sp)
|
||||||
<termeBis>
|
addi $sp, $sp, 4
|
||||||
</termeBis>
|
lw $fp, 0($sp)
|
||||||
</terme>
|
addi $sp, $sp, 4
|
||||||
<expArithBis>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
</expArithBis>
|
jr $ra
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
<declarationFonction>
|
|
||||||
<id_fonction>main</id_fonction>
|
|
||||||
<listeParam>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<optListeDecVariables>
|
|
||||||
</optListeDecVariables>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</listeParam>
|
|
||||||
<optDecVariables>
|
|
||||||
</optDecVariables>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAppel>
|
|
||||||
<appelFct>
|
|
||||||
<id_fonction>procedure</id_fonction>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<listeExpressions>
|
|
||||||
</listeExpressions>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</appelFct>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAppel>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -1,91 +1,51 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
$$a: .space 4
|
||||||
<listeDecVariables>
|
.text
|
||||||
<declarationVariable>
|
__start:
|
||||||
<mot_clef>entier</mot_clef>
|
jal main
|
||||||
<id_variable>$a</id_variable>
|
li $v0, 10
|
||||||
<optTailleTableau>
|
syscall
|
||||||
</optTailleTableau>
|
main :
|
||||||
</declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<listeDecVariablesBis>
|
sw $fp, 0($sp)
|
||||||
</listeDecVariablesBis>
|
move $fp, $sp
|
||||||
</listeDecVariables>
|
subi $sp, $sp, 4
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
sw $ra, 0($sp)
|
||||||
</optDecVariables>
|
li $t0, 5
|
||||||
<listeDecFonctions>
|
subi $sp, $sp, 4
|
||||||
<declarationFonction>
|
sw $t0, 0($sp)
|
||||||
<id_fonction>main</id_fonction>
|
li $t0, 3
|
||||||
<listeParam>
|
subi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
sw $t0, 0($sp)
|
||||||
<optListeDecVariables>
|
lw $t2, 0($sp)
|
||||||
</optListeDecVariables>
|
addi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
lw $t1, 0($sp)
|
||||||
</listeParam>
|
addi $sp, $sp, 4
|
||||||
<optDecVariables>
|
sub $t0, $t1, $t2
|
||||||
</optDecVariables>
|
subi $sp, $sp, 4
|
||||||
<instructionBloc>
|
sw $t0, 0($sp)
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
li $t0, 2
|
||||||
<listeInstructions>
|
subi $sp, $sp, 4
|
||||||
<instruction>
|
sw $t0, 0($sp)
|
||||||
<instructionEcriture>
|
lw $t2, 0($sp)
|
||||||
<mot_clef>ecrire</mot_clef>
|
addi $sp, $sp, 4
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
lw $t1, 0($sp)
|
||||||
<expression>
|
addi $sp, $sp, 4
|
||||||
<conjonction>
|
add $t0, $t1, $t2
|
||||||
<negation>
|
subi $sp, $sp, 4
|
||||||
<comparaison>
|
sw $t0, 0($sp)
|
||||||
<expArith>
|
lw $t0, 0($sp)
|
||||||
<terme>
|
addi $sp, $sp, 4
|
||||||
<facteur>
|
move $a0, $t0
|
||||||
<nombre>5</nombre>
|
li $v0, 1
|
||||||
</facteur>
|
syscall
|
||||||
<termeBis>
|
li $a0, '\n'
|
||||||
</termeBis>
|
li $v0, 11
|
||||||
</terme>
|
syscall
|
||||||
<expArithBis>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<symbole>MOINS</symbole>
|
lw $ra, 0($sp)
|
||||||
<terme>
|
addi $sp, $sp, 4
|
||||||
<facteur>
|
lw $fp, 0($sp)
|
||||||
<nombre>3</nombre>
|
addi $sp, $sp, 4
|
||||||
</facteur>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<termeBis>
|
jr $ra
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
<symbole>PLUS</symbole>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>2</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -1,134 +1,49 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
.text
|
||||||
</optDecVariables>
|
__start:
|
||||||
<listeDecFonctions>
|
jal main
|
||||||
<declarationFonction>
|
li $v0, 10
|
||||||
<id_fonction>procedure</id_fonction>
|
syscall
|
||||||
<listeParam>
|
procedure :
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
<optListeDecVariables>
|
sw $fp, 0($sp)
|
||||||
<listeDecVariables>
|
move $fp, $sp
|
||||||
<declarationVariable>
|
subi $sp, $sp, 4
|
||||||
<mot_clef>entier</mot_clef>
|
sw $ra, 0($sp)
|
||||||
<id_variable>$a</id_variable>
|
lw $t0, 4($fp) #variable argument $a
|
||||||
<optTailleTableau>
|
subi $sp, $sp, 4
|
||||||
</optTailleTableau>
|
sw $t0, 0($sp)
|
||||||
</declarationVariable>
|
lw $t0, 0($sp)
|
||||||
<listeDecVariablesBis>
|
addi $sp, $sp, 4
|
||||||
</listeDecVariablesBis>
|
move $a0, $t0
|
||||||
</listeDecVariables>
|
li $v0, 1
|
||||||
</optListeDecVariables>
|
syscall
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
li $a0, '\n'
|
||||||
</listeParam>
|
li $v0, 11
|
||||||
<optDecVariables>
|
syscall
|
||||||
</optDecVariables>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<instructionBloc>
|
lw $ra, 0($sp)
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
addi $sp, $sp, 4
|
||||||
<listeInstructions>
|
lw $fp, 0($sp)
|
||||||
<instruction>
|
addi $sp, $sp, 4
|
||||||
<instructionEcriture>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
<mot_clef>ecrire</mot_clef>
|
jr $ra
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
main :
|
||||||
<expression>
|
subi $sp, $sp, 4
|
||||||
<conjonction>
|
sw $fp, 0($sp)
|
||||||
<negation>
|
move $fp, $sp
|
||||||
<comparaison>
|
subi $sp, $sp, 4
|
||||||
<expArith>
|
sw $ra, 0($sp)
|
||||||
<terme>
|
subi $sp, $sp, 4 #Val Retour
|
||||||
<facteur>
|
li $t0, 10
|
||||||
<var>
|
subi $sp, $sp, 4
|
||||||
<id_variable>$a</id_variable>
|
sw $t0, 0($sp)
|
||||||
<optIndice>
|
jal procedure
|
||||||
</optIndice>
|
addi $sp, $sp, 4 #désalocation des arguments
|
||||||
</var>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
</facteur>
|
lw $ra, 0($sp)
|
||||||
<termeBis>
|
addi $sp, $sp, 4
|
||||||
</termeBis>
|
lw $fp, 0($sp)
|
||||||
</terme>
|
addi $sp, $sp, 4
|
||||||
<expArithBis>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
</expArithBis>
|
jr $ra
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
<declarationFonction>
|
|
||||||
<id_fonction>main</id_fonction>
|
|
||||||
<listeParam>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<optListeDecVariables>
|
|
||||||
</optListeDecVariables>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</listeParam>
|
|
||||||
<optDecVariables>
|
|
||||||
</optDecVariables>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAppel>
|
|
||||||
<appelFct>
|
|
||||||
<id_fonction>procedure</id_fonction>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<listeExpressions>
|
|
||||||
<expression>
|
|
||||||
<conjonction>
|
|
||||||
<negation>
|
|
||||||
<comparaison>
|
|
||||||
<expArith>
|
|
||||||
<terme>
|
|
||||||
<facteur>
|
|
||||||
<nombre>10</nombre>
|
|
||||||
</facteur>
|
|
||||||
<termeBis>
|
|
||||||
</termeBis>
|
|
||||||
</terme>
|
|
||||||
<expArithBis>
|
|
||||||
</expArithBis>
|
|
||||||
</expArith>
|
|
||||||
<comparaisonBis>
|
|
||||||
</comparaisonBis>
|
|
||||||
</comparaison>
|
|
||||||
</negation>
|
|
||||||
<conjonctionBis>
|
|
||||||
</conjonctionBis>
|
|
||||||
</conjonction>
|
|
||||||
<expressionBis>
|
|
||||||
</expressionBis>
|
|
||||||
</expression>
|
|
||||||
<listeExpressionsBis>
|
|
||||||
</listeExpressionsBis>
|
|
||||||
</listeExpressions>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</appelFct>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAppel>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -1,93 +1,45 @@
|
|||||||
<programme>
|
.data
|
||||||
<optDecVariables>
|
.text
|
||||||
</optDecVariables>
|
__start:
|
||||||
<listeDecFonctions>
|
jal main
|
||||||
<declarationFonction>
|
li $v0, 10
|
||||||
<id_fonction>procedure</id_fonction>
|
syscall
|
||||||
<listeParam>
|
procedure :
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
<optListeDecVariables>
|
sw $fp, 0($sp)
|
||||||
</optListeDecVariables>
|
move $fp, $sp
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
subi $sp, $sp, 4
|
||||||
</listeParam>
|
sw $ra, 0($sp)
|
||||||
<optDecVariables>
|
li $t0, 1
|
||||||
</optDecVariables>
|
subi $sp, $sp, 4
|
||||||
<instructionBloc>
|
sw $t0, 0($sp)
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
lw $t0, 0($sp)
|
||||||
<listeInstructions>
|
addi $sp, $sp, 4
|
||||||
<instruction>
|
move $a0, $t0
|
||||||
<instructionEcriture>
|
li $v0, 1
|
||||||
<mot_clef>ecrire</mot_clef>
|
syscall
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
li $a0, '\n'
|
||||||
<expression>
|
li $v0, 11
|
||||||
<conjonction>
|
syscall
|
||||||
<negation>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
<comparaison>
|
lw $ra, 0($sp)
|
||||||
<expArith>
|
addi $sp, $sp, 4
|
||||||
<terme>
|
lw $fp, 0($sp)
|
||||||
<facteur>
|
addi $sp, $sp, 4
|
||||||
<nombre>1</nombre>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
</facteur>
|
jr $ra
|
||||||
<termeBis>
|
main :
|
||||||
</termeBis>
|
subi $sp, $sp, 4
|
||||||
</terme>
|
sw $fp, 0($sp)
|
||||||
<expArithBis>
|
move $fp, $sp
|
||||||
</expArithBis>
|
subi $sp, $sp, 4
|
||||||
</expArith>
|
sw $ra, 0($sp)
|
||||||
<comparaisonBis>
|
subi $sp, $sp, 4 #Val Retour
|
||||||
</comparaisonBis>
|
jal procedure
|
||||||
</comparaison>
|
addi $sp, $sp 0 # desallocation variables locales
|
||||||
</negation>
|
lw $ra, 0($sp)
|
||||||
<conjonctionBis>
|
addi $sp, $sp, 4
|
||||||
</conjonctionBis>
|
lw $fp, 0($sp)
|
||||||
</conjonction>
|
addi $sp, $sp, 4
|
||||||
<expressionBis>
|
addi $sp, $sp, 4 #ignore valeur de retour
|
||||||
</expressionBis>
|
jr $ra
|
||||||
</expression>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionEcriture>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
<declarationFonction>
|
|
||||||
<id_fonction>main</id_fonction>
|
|
||||||
<listeParam>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<optListeDecVariables>
|
|
||||||
</optListeDecVariables>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</listeParam>
|
|
||||||
<optDecVariables>
|
|
||||||
</optDecVariables>
|
|
||||||
<instructionBloc>
|
|
||||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
|
||||||
<listeInstructions>
|
|
||||||
<instruction>
|
|
||||||
<instructionAppel>
|
|
||||||
<appelFct>
|
|
||||||
<id_fonction>procedure</id_fonction>
|
|
||||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
|
||||||
<listeExpressions>
|
|
||||||
</listeExpressions>
|
|
||||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
|
||||||
</appelFct>
|
|
||||||
<symbole>POINT_VIRGULE</symbole>
|
|
||||||
</instructionAppel>
|
|
||||||
</instruction>
|
|
||||||
<listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
</listeInstructions>
|
|
||||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
|
||||||
</instructionBloc>
|
|
||||||
</declarationFonction>
|
|
||||||
<listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</listeDecFonctions>
|
|
||||||
</programme>
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ MYCOMPILO="../compilateur-l"
|
|||||||
|
|
||||||
MYCOMPILODEFAULT="${MYCOMPILO}" # utilisé pour test reconnaissance et erreur
|
MYCOMPILODEFAULT="${MYCOMPILO}" # utilisé pour test reconnaissance et erreur
|
||||||
MYCOMPILOLEX="${MYCOMPILO} -l" # exécuter l'analyseur lexical
|
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
|
MYCOMPILOASYNT="${MYCOMPILO} -a" # afficher l'arbre abstrait
|
||||||
MYCOMPILOTAB="${MYCOMPILO} -t" # afficher les tables des symboles
|
MYCOMPILOTAB="${MYCOMPILO} -t" # afficher les tables des symboles
|
||||||
MYCOMPILOMIPS="${MYCOMPILO} -m" # générer code MIPS
|
MYCOMPILOMIPS="${MYCOMPILO} -m" # générer code MIPS
|
||||||
|
|||||||
@@ -44,12 +44,13 @@ n_instr *instructionPour (void);
|
|||||||
n_instr *instructionVide (void);
|
n_instr *instructionVide (void);
|
||||||
n_exp *expression (void);
|
n_exp *expression (void);
|
||||||
n_exp *expressionBis (n_exp *herite);
|
n_exp *expressionBis (n_exp *herite);
|
||||||
|
n_exp *condition (void);
|
||||||
|
n_exp *conditionBis(n_exp *herite);
|
||||||
n_exp *conjonction (void);
|
n_exp *conjonction (void);
|
||||||
n_exp *conjonctionBis(n_exp *herite);
|
n_exp *conjonctionBis(n_exp *herite);
|
||||||
n_exp *negation (void);
|
n_exp *negation (void);
|
||||||
n_exp *comparaison (void);
|
n_exp *comparaison (void);
|
||||||
n_exp *comparaisonBis (n_exp *herite);
|
n_exp *comparaisonBis (n_exp *herite);
|
||||||
n_exp *expression (void);
|
|
||||||
n_exp *expArith (void);
|
n_exp *expArith (void);
|
||||||
n_exp *expArithBis(n_exp *herite);
|
n_exp *expArithBis(n_exp *herite);
|
||||||
n_exp *terme (void);
|
n_exp *terme (void);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#define EPSILON 0
|
#define EPSILON 0
|
||||||
|
|
||||||
#define NB_NON_TERMINAUX 43
|
#define NB_NON_TERMINAUX 45
|
||||||
|
|
||||||
#define _listeDecVariables_ 1
|
#define _listeDecVariables_ 1
|
||||||
#define _listeDecFonctions_ 2
|
#define _listeDecFonctions_ 2
|
||||||
@@ -45,11 +45,13 @@
|
|||||||
#define _instructionFaire_ 40
|
#define _instructionFaire_ 40
|
||||||
#define _optListeDecVariables_ 41
|
#define _optListeDecVariables_ 41
|
||||||
#define _instructionPour_ 42
|
#define _instructionPour_ 42
|
||||||
|
#define _condition_ 43
|
||||||
|
#define _conditionBis_ 44
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* symboles terminaux */
|
/* symboles terminaux */
|
||||||
#define NB_TERMINAUX 32
|
#define NB_TERMINAUX 34
|
||||||
|
|
||||||
#define POINT_VIRGULE 1
|
#define POINT_VIRGULE 1
|
||||||
#define PLUS 2
|
#define PLUS 2
|
||||||
@@ -82,3 +84,5 @@
|
|||||||
#define FIN 29
|
#define FIN 29
|
||||||
#define VIRGULE 30
|
#define VIRGULE 30
|
||||||
#define POUR 31
|
#define POUR 31
|
||||||
|
#define INTERROGATION 32
|
||||||
|
#define DEUXPOINTS 33
|
||||||
@@ -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
|
/* ATTENTION : negatif => - unaire, comme dans -5
|
||||||
non => négation logique
|
non => négation logique
|
||||||
Le opérateurs unaires ont op2 = NULL par convention */
|
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_ {
|
struct n_exp_ {
|
||||||
enum{varExp, opExp, intExp, appelExp, lireExp, incrExp} type;
|
enum{varExp, opExp, intExp, appelExp, lireExp, incrExp} type;
|
||||||
union{
|
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 *var;
|
||||||
n_var *incr;
|
n_var *incr;
|
||||||
int entier;
|
int entier;
|
||||||
@@ -52,7 +52,7 @@ struct n_exp_ {
|
|||||||
}u;
|
}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_entier(int entier);
|
||||||
n_exp *cree_n_exp_var(n_var *var);
|
n_exp *cree_n_exp_var(n_var *var);
|
||||||
n_exp *cree_n_exp_appel(n_appel *app);
|
n_exp *cree_n_exp_appel(n_appel *app);
|
||||||
|
|||||||
@@ -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 == ou) affiche_texte("ou", trace_abs);
|
||||||
else if(n->u.opExp_.op == et) affiche_texte("et", 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 == non) affiche_texte("non", trace_abs);
|
||||||
|
else if(n->u.opExp_.op == cond) affiche_texte("condexp", trace_abs);
|
||||||
|
|
||||||
if( n->u.opExp_.op1 != NULL ) {
|
if( n->u.opExp_.op1 != NULL ) {
|
||||||
affiche_exp(n->u.opExp_.op1);
|
affiche_exp(n->u.opExp_.op1);
|
||||||
}
|
}
|
||||||
if( n->u.opExp_.op2 != NULL ) {
|
if( n->u.opExp_.op2 != NULL ) {
|
||||||
affiche_exp(n->u.opExp_.op2);
|
affiche_exp(n->u.opExp_.op2);
|
||||||
}
|
}
|
||||||
|
if( n->u.opExp_.op3 != NULL ) {
|
||||||
|
affiche_exp(n->u.opExp_.op3);
|
||||||
|
}
|
||||||
affiche_balise_fermante(fct, trace_abs);
|
affiche_balise_fermante(fct, trace_abs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,15 +18,15 @@ extern FILE *yyin;
|
|||||||
char tableSymbole[] = {
|
char tableSymbole[] = {
|
||||||
';', ',', '(', ')', '[', ']', '{', '}', // Code
|
';', ',', '(', ')', '[', ']', '{', '}', // Code
|
||||||
'+', '-', '*', '/', // Arithmetique
|
'+', '-', '*', '/', // Arithmetique
|
||||||
'<', '=', // Comparaison
|
'<', '=', '?', ':', // Comparaison
|
||||||
'&','|', '!' , // Logique
|
'&','|', '!', // Logique
|
||||||
'\0'
|
'\0'
|
||||||
};
|
};
|
||||||
|
|
||||||
int codeSymbole[] = {
|
int codeSymbole[] = {
|
||||||
POINT_VIRGULE, VIRGULE, PARENTHESE_OUVRANTE, PARENTHESE_FERMANTE, CROCHET_OUVRANT, CROCHET_FERMANT, ACCOLADE_OUVRANTE, ACCOLADE_FERMANTE,
|
POINT_VIRGULE, VIRGULE, PARENTHESE_OUVRANTE, PARENTHESE_FERMANTE, CROCHET_OUVRANT, CROCHET_FERMANT, ACCOLADE_OUVRANTE, ACCOLADE_FERMANTE,
|
||||||
PLUS, MOINS, FOIS, DIVISE,
|
PLUS, MOINS, FOIS, DIVISE,
|
||||||
INFERIEUR, EGAL,
|
INFERIEUR, EGAL, INTERROGATION, DEUXPOINTS,
|
||||||
ET, OU, NON
|
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 == NON) strcpy(valeur, "NON");
|
||||||
else if(token == FIN) strcpy(valeur, "FIN");
|
else if(token == FIN) strcpy(valeur, "FIN");
|
||||||
else if(token == VIRGULE) strcpy(valeur, "VIRGULE");
|
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 ) {
|
else if( token == ID_VAR ) {
|
||||||
strcpy( nom, "id_variable" );
|
strcpy( nom, "id_variable" );
|
||||||
|
|||||||
@@ -592,8 +592,8 @@ n_exp *expression() {
|
|||||||
openSection( __func__ );
|
openSection( __func__ );
|
||||||
n_exp *herite_conj = NULL;
|
n_exp *herite_conj = NULL;
|
||||||
n_exp *sreturn = NULL;
|
n_exp *sreturn = NULL;
|
||||||
if( est_premier( _conjonction_, uniteCourante ) ) {
|
if( est_premier( _condition_, uniteCourante ) ) {
|
||||||
herite_conj = conjonction();
|
herite_conj = condition();
|
||||||
sreturn = expressionBis(herite_conj);
|
sreturn = expressionBis(herite_conj);
|
||||||
} else {
|
} else {
|
||||||
syntaxError();
|
syntaxError();
|
||||||
@@ -603,6 +603,51 @@ n_exp *expression() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
n_exp *expressionBis(n_exp *herite) {
|
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__ );
|
openSection( __func__ );
|
||||||
n_exp *conj = NULL;
|
n_exp *conj = NULL;
|
||||||
n_exp *sreturn = herite;
|
n_exp *sreturn = herite;
|
||||||
@@ -612,9 +657,9 @@ n_exp *expressionBis(n_exp *herite) {
|
|||||||
uniteCourante = yylex();
|
uniteCourante = yylex();
|
||||||
|
|
||||||
conj = conjonction();
|
conj = conjonction();
|
||||||
herite = cree_n_exp_op(ou, herite,conj);
|
herite = cree_n_exp_op(ou, herite,conj, NULL);
|
||||||
sreturn = expressionBis(herite);
|
sreturn = conditionBis(herite);
|
||||||
} else if( !est_suivant( _expressionBis_, uniteCourante ) ) {
|
} else if( !est_suivant( _conditionBis_, uniteCourante ) ) {
|
||||||
syntaxError();
|
syntaxError();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -646,7 +691,7 @@ n_exp *conjonctionBis(n_exp *herite) {
|
|||||||
elementConsome();
|
elementConsome();
|
||||||
uniteCourante = yylex();
|
uniteCourante = yylex();
|
||||||
herite_neg = negation();
|
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);
|
sreturn = conjonctionBis(herite_neg);
|
||||||
} else if( !est_suivant( _conjonctionBis_, uniteCourante ) ) {
|
} else if( !est_suivant( _conjonctionBis_, uniteCourante ) ) {
|
||||||
syntaxError();
|
syntaxError();
|
||||||
@@ -666,7 +711,7 @@ n_exp *negation() {
|
|||||||
uniteCourante = yylex();
|
uniteCourante = yylex();
|
||||||
|
|
||||||
expression = comparaison();
|
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 )) {
|
} else if (est_premier( _comparaison_, uniteCourante )) {
|
||||||
sreturn = comparaison();
|
sreturn = comparaison();
|
||||||
} else {
|
} else {
|
||||||
@@ -700,14 +745,14 @@ n_exp *comparaisonBis(n_exp *herite) {
|
|||||||
uniteCourante = yylex();
|
uniteCourante = yylex();
|
||||||
|
|
||||||
herite_exp = expArith();
|
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);
|
sreturn = comparaisonBis(herite_exp);
|
||||||
} else if( uniteCourante == INFERIEUR) {
|
} else if( uniteCourante == INFERIEUR) {
|
||||||
elementConsome();
|
elementConsome();
|
||||||
uniteCourante = yylex();
|
uniteCourante = yylex();
|
||||||
|
|
||||||
herite_exp = expArith();
|
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);
|
sreturn = comparaisonBis(herite_exp);
|
||||||
|
|
||||||
} else if( !est_suivant( _comparaisonBis_, uniteCourante ) ) {
|
} else if( !est_suivant( _comparaisonBis_, uniteCourante ) ) {
|
||||||
@@ -748,14 +793,14 @@ n_exp *expArithBis(n_exp *herite) {
|
|||||||
uniteCourante = yylex();
|
uniteCourante = yylex();
|
||||||
|
|
||||||
s = terme();
|
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);
|
sreturn = expArithBis(herite_fils);
|
||||||
} else if( uniteCourante == MOINS) {
|
} else if( uniteCourante == MOINS) {
|
||||||
elementConsome();
|
elementConsome();
|
||||||
uniteCourante = yylex();
|
uniteCourante = yylex();
|
||||||
|
|
||||||
s = terme();
|
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);
|
sreturn = expArithBis(herite_fils);
|
||||||
} else if( !est_suivant( _expArithBis_, uniteCourante ) ) {
|
} else if( !est_suivant( _expArithBis_, uniteCourante ) ) {
|
||||||
syntaxError();
|
syntaxError();
|
||||||
@@ -796,14 +841,14 @@ n_exp *termeBis(n_exp *herite) {
|
|||||||
uniteCourante = yylex();
|
uniteCourante = yylex();
|
||||||
|
|
||||||
s = facteur();
|
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);
|
sreturn = termeBis(herite_fils);
|
||||||
} else if( uniteCourante == DIVISE) {
|
} else if( uniteCourante == DIVISE) {
|
||||||
elementConsome();
|
elementConsome();
|
||||||
uniteCourante = yylex();
|
uniteCourante = yylex();
|
||||||
|
|
||||||
s = facteur();
|
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);
|
sreturn = termeBis(herite_fils);
|
||||||
} else if( !est_suivant( _termeBis_, uniteCourante ) ) {
|
} else if( !est_suivant( _termeBis_, uniteCourante ) ) {
|
||||||
syntaxError();
|
syntaxError();
|
||||||
|
|||||||
@@ -510,7 +510,7 @@ void parcours_opExp(n_exp *n)
|
|||||||
sprintf(tmp, "$t%d", iRegistre3);
|
sprintf(tmp, "$t%d", iRegistre3);
|
||||||
depile(tmp);
|
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);
|
printMips(tmp);
|
||||||
|
|
||||||
sprintf(tmp,"j %s",empile);
|
sprintf(tmp,"j %s",empile);
|
||||||
@@ -523,31 +523,36 @@ void parcours_opExp(n_exp *n)
|
|||||||
sprintf(tmp,"%s : ", empile);
|
sprintf(tmp,"%s : ", empile);
|
||||||
printMips(tmp);
|
printMips(tmp);
|
||||||
} else if(n->u.opExp_.op == et) {
|
} else if(n->u.opExp_.op == et) {
|
||||||
char empile[256];
|
char fin[256];
|
||||||
char faux[256];
|
char faux[256];
|
||||||
new_tag(empile);
|
new_tag(fin);
|
||||||
new_tag(faux);
|
new_tag(faux);
|
||||||
|
|
||||||
parcours_exp(n->u.opExp_.op1);
|
parcours_exp(n->u.opExp_.op1);
|
||||||
sprintf(tmp, "$t%d", iRegistre2);
|
sprintf(tmp, "$t%d", iRegistre2);
|
||||||
depile(tmp);
|
depile(tmp);
|
||||||
//sprintf(tmp,"li $t%d, 1",iRegistre);
|
|
||||||
//printMips(tmp);
|
|
||||||
sprintf(tmp,"beq $zero, $t%d, %s",iRegistre2,faux);
|
sprintf(tmp,"beq $zero, $t%d, %s",iRegistre2,faux);
|
||||||
printMips(tmp);
|
printMips(tmp);
|
||||||
|
|
||||||
|
sprintf(tmp, "$t%d", iRegistre2);
|
||||||
|
empile(tmp);
|
||||||
|
|
||||||
parcours_exp(n->u.opExp_.op2);
|
parcours_exp(n->u.opExp_.op2);
|
||||||
sprintf(tmp, "$t%d", iRegistre3);
|
sprintf(tmp, "$t%d", iRegistre3);
|
||||||
depile(tmp);
|
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);
|
printMips(tmp);
|
||||||
|
|
||||||
//--
|
|
||||||
sprintf(tmp,"and $t%d, $t%d, $t%d",iRegistre, iRegistre2, iRegistre3);
|
sprintf(tmp,"and $t%d, $t%d, $t%d",iRegistre, iRegistre2, iRegistre3);
|
||||||
printMips(tmp);
|
printMips(tmp);
|
||||||
//--
|
|
||||||
|
|
||||||
sprintf(tmp,"j %s", empile);
|
sprintf(tmp,"j %s", fin);
|
||||||
printMips(tmp);
|
printMips(tmp);
|
||||||
|
|
||||||
sprintf(tmp," %s :",faux);
|
sprintf(tmp," %s :",faux);
|
||||||
@@ -555,23 +560,46 @@ void parcours_opExp(n_exp *n)
|
|||||||
sprintf(tmp,"li $t%d 0",iRegistre);
|
sprintf(tmp,"li $t%d 0",iRegistre);
|
||||||
printMips(tmp);
|
printMips(tmp);
|
||||||
|
|
||||||
sprintf(tmp ," %s :",empile);
|
sprintf(tmp ," %s :",fin);
|
||||||
|
|
||||||
printMips(tmp);
|
printMips(tmp);
|
||||||
|
|
||||||
} else if(n->u.opExp_.op == non) {
|
} else if(n->u.opExp_.op == non) {
|
||||||
parcours_exp(n->u.opExp_.op1);
|
parcours_exp(n->u.opExp_.op1);
|
||||||
char fin[256];
|
|
||||||
new_tag(fin);
|
|
||||||
sprintf(tmp, "$t%d", iRegistre3);
|
sprintf(tmp, "$t%d", iRegistre3);
|
||||||
depile(tmp);
|
depile(tmp);
|
||||||
sprintf(tmp,"li $t%d 1",iRegistre);
|
|
||||||
|
sprintf(tmp,"not $t%d $t%d",iRegistre,iRegistre3);
|
||||||
printMips(tmp);
|
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);
|
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);
|
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);
|
printMips(tmp);
|
||||||
}
|
}
|
||||||
sprintf(tmp, "$t%d", iRegistre);
|
sprintf(tmp, "$t%d", iRegistre);
|
||||||
|
|||||||
@@ -85,9 +85,19 @@ void initialise_premiers(void){
|
|||||||
premiers[_expression_][ID_VAR] = 1;
|
premiers[_expression_][ID_VAR] = 1;
|
||||||
premiers[_expression_][LIRE] = 1;
|
premiers[_expression_][LIRE] = 1;
|
||||||
|
|
||||||
premiers[_expressionBis_][OU] = 1;
|
premiers[_expressionBis_][INTERROGATION] = 1;
|
||||||
premiers[_expressionBis_][EPSILON] = 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_][NON] = 1;
|
||||||
premiers[_conjonction_][PARENTHESE_OUVRANTE] = 1;
|
premiers[_conjonction_][PARENTHESE_OUVRANTE] = 1;
|
||||||
premiers[_conjonction_][NOMBRE] = 1;
|
premiers[_conjonction_][NOMBRE] = 1;
|
||||||
|
|||||||
@@ -170,6 +170,7 @@ void initialise_suivants(void){
|
|||||||
suivants[_expression_][PARENTHESE_FERMANTE] = 1;
|
suivants[_expression_][PARENTHESE_FERMANTE] = 1;
|
||||||
suivants[_expression_][CROCHET_FERMANT] = 1;
|
suivants[_expression_][CROCHET_FERMANT] = 1;
|
||||||
suivants[_expression_][VIRGULE] = 1;
|
suivants[_expression_][VIRGULE] = 1;
|
||||||
|
suivants[_expression_][DEUXPOINTS] = 1;
|
||||||
|
|
||||||
suivants[_expressionBis_][POINT_VIRGULE] = 1;
|
suivants[_expressionBis_][POINT_VIRGULE] = 1;
|
||||||
suivants[_expressionBis_][ALORS] = 1;
|
suivants[_expressionBis_][ALORS] = 1;
|
||||||
@@ -177,6 +178,25 @@ void initialise_suivants(void){
|
|||||||
suivants[_expressionBis_][PARENTHESE_FERMANTE] = 1;
|
suivants[_expressionBis_][PARENTHESE_FERMANTE] = 1;
|
||||||
suivants[_expressionBis_][CROCHET_FERMANT] = 1;
|
suivants[_expressionBis_][CROCHET_FERMANT] = 1;
|
||||||
suivants[_expressionBis_][VIRGULE] = 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_][OU] = 1;
|
||||||
suivants[_conjonction_][POINT_VIRGULE] = 1;
|
suivants[_conjonction_][POINT_VIRGULE] = 1;
|
||||||
@@ -185,6 +205,8 @@ void initialise_suivants(void){
|
|||||||
suivants[_conjonction_][PARENTHESE_FERMANTE] = 1;
|
suivants[_conjonction_][PARENTHESE_FERMANTE] = 1;
|
||||||
suivants[_conjonction_][CROCHET_FERMANT] = 1;
|
suivants[_conjonction_][CROCHET_FERMANT] = 1;
|
||||||
suivants[_conjonction_][VIRGULE] = 1;
|
suivants[_conjonction_][VIRGULE] = 1;
|
||||||
|
suivants[_conjonction_][INTERROGATION] = 1;
|
||||||
|
suivants[_conjonction_][DEUXPOINTS] = 1;
|
||||||
|
|
||||||
suivants[_conjonctionBis_][OU] = 1;
|
suivants[_conjonctionBis_][OU] = 1;
|
||||||
suivants[_conjonctionBis_][POINT_VIRGULE] = 1;
|
suivants[_conjonctionBis_][POINT_VIRGULE] = 1;
|
||||||
@@ -193,6 +215,8 @@ void initialise_suivants(void){
|
|||||||
suivants[_conjonctionBis_][PARENTHESE_FERMANTE] = 1;
|
suivants[_conjonctionBis_][PARENTHESE_FERMANTE] = 1;
|
||||||
suivants[_conjonctionBis_][CROCHET_FERMANT] = 1;
|
suivants[_conjonctionBis_][CROCHET_FERMANT] = 1;
|
||||||
suivants[_conjonctionBis_][VIRGULE] = 1;
|
suivants[_conjonctionBis_][VIRGULE] = 1;
|
||||||
|
suivants[_conjonctionBis_][INTERROGATION] = 1;
|
||||||
|
suivants[_conjonctionBis_][DEUXPOINTS] = 1;
|
||||||
|
|
||||||
suivants[_negation_][ET] = 1;
|
suivants[_negation_][ET] = 1;
|
||||||
suivants[_negation_][OU] = 1;
|
suivants[_negation_][OU] = 1;
|
||||||
@@ -202,6 +226,8 @@ void initialise_suivants(void){
|
|||||||
suivants[_negation_][PARENTHESE_FERMANTE] = 1;
|
suivants[_negation_][PARENTHESE_FERMANTE] = 1;
|
||||||
suivants[_negation_][CROCHET_FERMANT] = 1;
|
suivants[_negation_][CROCHET_FERMANT] = 1;
|
||||||
suivants[_negation_][VIRGULE] = 1;
|
suivants[_negation_][VIRGULE] = 1;
|
||||||
|
suivants[_negation_][INTERROGATION] = 1;
|
||||||
|
suivants[_negation_][DEUXPOINTS] = 1;
|
||||||
|
|
||||||
suivants[_comparaison_][ET] = 1;
|
suivants[_comparaison_][ET] = 1;
|
||||||
suivants[_comparaison_][OU] = 1;
|
suivants[_comparaison_][OU] = 1;
|
||||||
@@ -211,6 +237,8 @@ void initialise_suivants(void){
|
|||||||
suivants[_comparaison_][PARENTHESE_FERMANTE] = 1;
|
suivants[_comparaison_][PARENTHESE_FERMANTE] = 1;
|
||||||
suivants[_comparaison_][CROCHET_FERMANT] = 1;
|
suivants[_comparaison_][CROCHET_FERMANT] = 1;
|
||||||
suivants[_comparaison_][VIRGULE] = 1;
|
suivants[_comparaison_][VIRGULE] = 1;
|
||||||
|
suivants[_comparaison_][INTERROGATION] = 1;
|
||||||
|
suivants[_comparaison_][DEUXPOINTS] = 1;
|
||||||
|
|
||||||
suivants[_comparaisonBis_][ET] = 1;
|
suivants[_comparaisonBis_][ET] = 1;
|
||||||
suivants[_comparaisonBis_][OU] = 1;
|
suivants[_comparaisonBis_][OU] = 1;
|
||||||
@@ -220,6 +248,8 @@ void initialise_suivants(void){
|
|||||||
suivants[_comparaisonBis_][PARENTHESE_FERMANTE] = 1;
|
suivants[_comparaisonBis_][PARENTHESE_FERMANTE] = 1;
|
||||||
suivants[_comparaisonBis_][CROCHET_FERMANT] = 1;
|
suivants[_comparaisonBis_][CROCHET_FERMANT] = 1;
|
||||||
suivants[_comparaisonBis_][VIRGULE] = 1;
|
suivants[_comparaisonBis_][VIRGULE] = 1;
|
||||||
|
suivants[_comparaisonBis_][INTERROGATION] = 1;
|
||||||
|
suivants[_comparaisonBis_][DEUXPOINTS] = 1;
|
||||||
|
|
||||||
suivants[_expArith_][EGAL] = 1;
|
suivants[_expArith_][EGAL] = 1;
|
||||||
suivants[_expArith_][INFERIEUR] = 1;
|
suivants[_expArith_][INFERIEUR] = 1;
|
||||||
@@ -231,6 +261,8 @@ void initialise_suivants(void){
|
|||||||
suivants[_expArith_][PARENTHESE_FERMANTE] = 1;
|
suivants[_expArith_][PARENTHESE_FERMANTE] = 1;
|
||||||
suivants[_expArith_][CROCHET_FERMANT] = 1;
|
suivants[_expArith_][CROCHET_FERMANT] = 1;
|
||||||
suivants[_expArith_][VIRGULE] = 1;
|
suivants[_expArith_][VIRGULE] = 1;
|
||||||
|
suivants[_expArith_][INTERROGATION] = 1;
|
||||||
|
suivants[_expArith_][DEUXPOINTS] = 1;
|
||||||
|
|
||||||
suivants[_expArithBis_][EGAL] = 1;
|
suivants[_expArithBis_][EGAL] = 1;
|
||||||
suivants[_expArithBis_][INFERIEUR] = 1;
|
suivants[_expArithBis_][INFERIEUR] = 1;
|
||||||
@@ -242,6 +274,8 @@ void initialise_suivants(void){
|
|||||||
suivants[_expArithBis_][PARENTHESE_FERMANTE] = 1;
|
suivants[_expArithBis_][PARENTHESE_FERMANTE] = 1;
|
||||||
suivants[_expArithBis_][CROCHET_FERMANT] = 1;
|
suivants[_expArithBis_][CROCHET_FERMANT] = 1;
|
||||||
suivants[_expArithBis_][VIRGULE] = 1;
|
suivants[_expArithBis_][VIRGULE] = 1;
|
||||||
|
suivants[_expArithBis_][INTERROGATION] = 1;
|
||||||
|
suivants[_expArithBis_][DEUXPOINTS] = 1;
|
||||||
|
|
||||||
suivants[_terme_][PLUS] = 1;
|
suivants[_terme_][PLUS] = 1;
|
||||||
suivants[_terme_][MOINS] = 1;
|
suivants[_terme_][MOINS] = 1;
|
||||||
@@ -255,6 +289,8 @@ void initialise_suivants(void){
|
|||||||
suivants[_terme_][PARENTHESE_FERMANTE] = 1;
|
suivants[_terme_][PARENTHESE_FERMANTE] = 1;
|
||||||
suivants[_terme_][CROCHET_FERMANT] = 1;
|
suivants[_terme_][CROCHET_FERMANT] = 1;
|
||||||
suivants[_terme_][VIRGULE] = 1;
|
suivants[_terme_][VIRGULE] = 1;
|
||||||
|
suivants[_terme_][INTERROGATION] = 1;
|
||||||
|
suivants[_terme_][DEUXPOINTS] = 1;
|
||||||
|
|
||||||
suivants[_termeBis_][PLUS] = 1;
|
suivants[_termeBis_][PLUS] = 1;
|
||||||
suivants[_termeBis_][MOINS] = 1;
|
suivants[_termeBis_][MOINS] = 1;
|
||||||
@@ -268,6 +304,8 @@ void initialise_suivants(void){
|
|||||||
suivants[_termeBis_][PARENTHESE_FERMANTE] = 1;
|
suivants[_termeBis_][PARENTHESE_FERMANTE] = 1;
|
||||||
suivants[_termeBis_][CROCHET_FERMANT] = 1;
|
suivants[_termeBis_][CROCHET_FERMANT] = 1;
|
||||||
suivants[_termeBis_][VIRGULE] = 1;
|
suivants[_termeBis_][VIRGULE] = 1;
|
||||||
|
suivants[_termeBis_][INTERROGATION] = 1;
|
||||||
|
suivants[_termeBis_][DEUXPOINTS] = 1;
|
||||||
|
|
||||||
suivants[_facteur_][FOIS] = 1;
|
suivants[_facteur_][FOIS] = 1;
|
||||||
suivants[_facteur_][DIVISE] = 1;
|
suivants[_facteur_][DIVISE] = 1;
|
||||||
@@ -283,6 +321,8 @@ void initialise_suivants(void){
|
|||||||
suivants[_facteur_][PARENTHESE_FERMANTE] = 1;
|
suivants[_facteur_][PARENTHESE_FERMANTE] = 1;
|
||||||
suivants[_facteur_][CROCHET_FERMANT] = 1;
|
suivants[_facteur_][CROCHET_FERMANT] = 1;
|
||||||
suivants[_facteur_][VIRGULE] = 1;
|
suivants[_facteur_][VIRGULE] = 1;
|
||||||
|
suivants[_facteur_][INTERROGATION] = 1;
|
||||||
|
suivants[_facteur_][DEUXPOINTS] = 1;
|
||||||
|
|
||||||
suivants[_var_][FOIS] = 1;
|
suivants[_var_][FOIS] = 1;
|
||||||
suivants[_var_][DIVISE] = 1;
|
suivants[_var_][DIVISE] = 1;
|
||||||
@@ -298,6 +338,8 @@ void initialise_suivants(void){
|
|||||||
suivants[_var_][PARENTHESE_FERMANTE] = 1;
|
suivants[_var_][PARENTHESE_FERMANTE] = 1;
|
||||||
suivants[_var_][CROCHET_FERMANT] = 1;
|
suivants[_var_][CROCHET_FERMANT] = 1;
|
||||||
suivants[_var_][VIRGULE] = 1;
|
suivants[_var_][VIRGULE] = 1;
|
||||||
|
suivants[_var_][INTERROGATION] = 1;
|
||||||
|
suivants[_var_][DEUXPOINTS] = 1;
|
||||||
|
|
||||||
suivants[_optIndice_][FOIS] = 1;
|
suivants[_optIndice_][FOIS] = 1;
|
||||||
suivants[_optIndice_][DIVISE] = 1;
|
suivants[_optIndice_][DIVISE] = 1;
|
||||||
@@ -313,6 +355,8 @@ void initialise_suivants(void){
|
|||||||
suivants[_optIndice_][PARENTHESE_FERMANTE] = 1;
|
suivants[_optIndice_][PARENTHESE_FERMANTE] = 1;
|
||||||
suivants[_optIndice_][CROCHET_FERMANT] = 1;
|
suivants[_optIndice_][CROCHET_FERMANT] = 1;
|
||||||
suivants[_optIndice_][VIRGULE] = 1;
|
suivants[_optIndice_][VIRGULE] = 1;
|
||||||
|
suivants[_optIndice_][INTERROGATION] = 1;
|
||||||
|
suivants[_optIndice_][DEUXPOINTS] = 1;
|
||||||
|
|
||||||
suivants[_appelFct_][FOIS] = 1;
|
suivants[_appelFct_][FOIS] = 1;
|
||||||
suivants[_appelFct_][DIVISE] = 1;
|
suivants[_appelFct_][DIVISE] = 1;
|
||||||
@@ -328,6 +372,8 @@ void initialise_suivants(void){
|
|||||||
suivants[_appelFct_][PARENTHESE_FERMANTE] = 1;
|
suivants[_appelFct_][PARENTHESE_FERMANTE] = 1;
|
||||||
suivants[_appelFct_][CROCHET_FERMANT] = 1;
|
suivants[_appelFct_][CROCHET_FERMANT] = 1;
|
||||||
suivants[_appelFct_][VIRGULE] = 1;
|
suivants[_appelFct_][VIRGULE] = 1;
|
||||||
|
suivants[_appelFct_][INTERROGATION] = 1;
|
||||||
|
suivants[_appelFct_][DEUXPOINTS] = 1;
|
||||||
|
|
||||||
suivants[_listeExpressions_][PARENTHESE_FERMANTE] = 1;
|
suivants[_listeExpressions_][PARENTHESE_FERMANTE] = 1;
|
||||||
|
|
||||||
|
|||||||
@@ -36,13 +36,14 @@ n_var *cree_n_var_indicee(char *nom, n_exp *indice)
|
|||||||
return n;
|
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_exp *n = malloc(sizeof(n_exp));
|
||||||
n->type = opExp;
|
n->type = opExp;
|
||||||
n->u.opExp_.op = op;
|
n->u.opExp_.op = op;
|
||||||
n->u.opExp_.op1 = op1;
|
n->u.opExp_.op1 = op1;
|
||||||
n->u.opExp_.op2 = op2;
|
n->u.opExp_.op2 = op2;
|
||||||
|
n->u.opExp_.op3 = op3;
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user