Ajout eval final avec mips
This commit is contained in:
23
eval-fourni/output/affect.asynt
Normal file
23
eval-fourni/output/affect.asynt
Normal file
@@ -0,0 +1,23 @@
|
||||
<prog>
|
||||
<l_dec>
|
||||
<varDec>$a</varDec>
|
||||
</l_dec>
|
||||
<l_dec>
|
||||
<foncDec>
|
||||
main
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$a</var_simple>
|
||||
<intExp>1</intExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_ecrire>
|
||||
<varExp>
|
||||
<var_simple>$a</var_simple>
|
||||
</varExp>
|
||||
</instr_ecrire>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</foncDec>
|
||||
</l_dec>
|
||||
</prog>
|
||||
18
eval-fourni/output/affect.lex
Normal file
18
eval-fourni/output/affect.lex
Normal file
@@ -0,0 +1,18 @@
|
||||
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
|
||||
1 nombre 1
|
||||
; symbole POINT_VIRGULE
|
||||
ecrire mot_clef ecrire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
$a id_variable $a
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
symbole FIN
|
||||
36
eval-fourni/output/affect.mips
Normal file
36
eval-fourni/output/affect.mips
Normal file
@@ -0,0 +1,36 @@
|
||||
.data
|
||||
$$a: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, $$a
|
||||
lw $t0, $$a
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
move $a0, $t0
|
||||
li $v0, 1
|
||||
syscall
|
||||
li $a0, '\n'
|
||||
li $v0, 11
|
||||
syscall
|
||||
addi $sp, $sp 0 # desallocation variables locales
|
||||
lw $ra, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $fp, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
jr $ra
|
||||
113
eval-fourni/output/affect.synt
Normal file
113
eval-fourni/output/affect.synt
Normal file
@@ -0,0 +1,113 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<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>
|
||||
<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>
|
||||
6
eval-fourni/output/affect.tab
Normal file
6
eval-fourni/output/affect.tab
Normal file
@@ -0,0 +1,6 @@
|
||||
------------------------------------------
|
||||
base = 2
|
||||
sommet = 2
|
||||
0 $a GLOBALE ENTIER 0 -1
|
||||
1 main GLOBALE FONCTION 0 0
|
||||
------------------------------------------
|
||||
63
eval-fourni/output/boucle.asynt
Normal file
63
eval-fourni/output/boucle.asynt
Normal file
@@ -0,0 +1,63 @@
|
||||
<prog>
|
||||
<l_dec>
|
||||
<varDec>$i</varDec>
|
||||
<l_dec>
|
||||
<varDec>$carre</varDec>
|
||||
</l_dec>
|
||||
</l_dec>
|
||||
<l_dec>
|
||||
<foncDec>
|
||||
main
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$i</var_simple>
|
||||
<intExp>0</intExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_tantque>
|
||||
<opExp>
|
||||
inf
|
||||
<varExp>
|
||||
<var_simple>$i</var_simple>
|
||||
</varExp>
|
||||
<intExp>10</intExp>
|
||||
</opExp>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$carre</var_simple>
|
||||
<opExp>
|
||||
fois
|
||||
<varExp>
|
||||
<var_simple>$i</var_simple>
|
||||
</varExp>
|
||||
<varExp>
|
||||
<var_simple>$i</var_simple>
|
||||
</varExp>
|
||||
</opExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_ecrire>
|
||||
<varExp>
|
||||
<var_simple>$carre</var_simple>
|
||||
</varExp>
|
||||
</instr_ecrire>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$i</var_simple>
|
||||
<opExp>
|
||||
plus
|
||||
<varExp>
|
||||
<var_simple>$i</var_simple>
|
||||
</varExp>
|
||||
<intExp>1</intExp>
|
||||
</opExp>
|
||||
</instr_affect>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</instr_tantque>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</foncDec>
|
||||
</l_dec>
|
||||
</prog>
|
||||
40
eval-fourni/output/boucle.lex
Normal file
40
eval-fourni/output/boucle.lex
Normal file
@@ -0,0 +1,40 @@
|
||||
entier mot_clef entier
|
||||
$i id_variable $i
|
||||
, symbole VIRGULE
|
||||
entier mot_clef entier
|
||||
$carre id_variable $carre
|
||||
; symbole POINT_VIRGULE
|
||||
main id_fonction main
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
$i id_variable $i
|
||||
= symbole EGAL
|
||||
0 nombre 0
|
||||
; symbole POINT_VIRGULE
|
||||
tantque mot_clef tantque
|
||||
$i id_variable $i
|
||||
< symbole INFERIEUR
|
||||
10 nombre 10
|
||||
faire mot_clef faire
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
$carre id_variable $carre
|
||||
= symbole EGAL
|
||||
$i id_variable $i
|
||||
* symbole FOIS
|
||||
$i id_variable $i
|
||||
; symbole POINT_VIRGULE
|
||||
ecrire mot_clef ecrire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
$carre id_variable $carre
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
$i id_variable $i
|
||||
= symbole EGAL
|
||||
$i id_variable $i
|
||||
+ symbole PLUS
|
||||
1 nombre 1
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
symbole FIN
|
||||
92
eval-fourni/output/boucle.mips
Normal file
92
eval-fourni/output/boucle.mips
Normal file
@@ -0,0 +1,92 @@
|
||||
.data
|
||||
$$i: .space 4
|
||||
$$carre: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, $$i
|
||||
e0:
|
||||
lw $t0, $$i
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 10
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
li $t0, 1
|
||||
blt $t1, $t2 e2
|
||||
li $t0, 0
|
||||
e2:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $0 e1
|
||||
lw $t0, $$i
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, $$i
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
mult $t1, $t2
|
||||
mflo $t0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, $$carre
|
||||
lw $t0, $$carre
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
move $a0, $t0
|
||||
li $v0, 1
|
||||
syscall
|
||||
li $a0, '\n'
|
||||
li $v0, 11
|
||||
syscall
|
||||
lw $t0, $$i
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
add $t0, $t1, $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, $$i
|
||||
j e0
|
||||
e1:
|
||||
addi $sp, $sp 0 # desallocation variables locales
|
||||
lw $ra, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $fp, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
jr $ra
|
||||
283
eval-fourni/output/boucle.synt
Normal file
283
eval-fourni/output/boucle.synt
Normal file
@@ -0,0 +1,283 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$i</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$carre</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<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>$i</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>$i</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>
|
||||
<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>
|
||||
7
eval-fourni/output/boucle.tab
Normal file
7
eval-fourni/output/boucle.tab
Normal file
@@ -0,0 +1,7 @@
|
||||
------------------------------------------
|
||||
base = 3
|
||||
sommet = 3
|
||||
0 $i GLOBALE ENTIER 0 -1
|
||||
1 $carre GLOBALE ENTIER 4 -1
|
||||
2 main GLOBALE FONCTION 0 0
|
||||
------------------------------------------
|
||||
19
eval-fourni/output/expression.asynt
Normal file
19
eval-fourni/output/expression.asynt
Normal file
@@ -0,0 +1,19 @@
|
||||
<prog>
|
||||
<l_dec>
|
||||
<varDec>$a</varDec>
|
||||
</l_dec>
|
||||
<l_dec>
|
||||
<foncDec>
|
||||
main
|
||||
<l_instr>
|
||||
<instr_ecrire>
|
||||
<opExp>
|
||||
fois
|
||||
<intExp>5</intExp>
|
||||
<intExp>2</intExp>
|
||||
</opExp>
|
||||
</instr_ecrire>
|
||||
</l_instr>
|
||||
</foncDec>
|
||||
</l_dec>
|
||||
</prog>
|
||||
16
eval-fourni/output/expression.lex
Normal file
16
eval-fourni/output/expression.lex
Normal file
@@ -0,0 +1,16 @@
|
||||
entier mot_clef entier
|
||||
$a id_variable $a
|
||||
; symbole POINT_VIRGULE
|
||||
main id_fonction main
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
ecrire mot_clef ecrire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
5 nombre 5
|
||||
* symbole FOIS
|
||||
2 nombre 2
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
symbole FIN
|
||||
41
eval-fourni/output/expression.mips
Normal file
41
eval-fourni/output/expression.mips
Normal file
@@ -0,0 +1,41 @@
|
||||
.data
|
||||
$$a: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 5
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
mult $t1, $t2
|
||||
mflo $t0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
move $a0, $t0
|
||||
li $v0, 1
|
||||
syscall
|
||||
li $a0, '\n'
|
||||
li $v0, 11
|
||||
syscall
|
||||
addi $sp, $sp 0 # desallocation variables locales
|
||||
lw $ra, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $fp, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
jr $ra
|
||||
77
eval-fourni/output/expression.synt
Normal file
77
eval-fourni/output/expression.synt
Normal file
@@ -0,0 +1,77 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<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>
|
||||
<nombre>5</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
<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>
|
||||
6
eval-fourni/output/expression.tab
Normal file
6
eval-fourni/output/expression.tab
Normal file
@@ -0,0 +1,6 @@
|
||||
------------------------------------------
|
||||
base = 2
|
||||
sommet = 2
|
||||
0 $a GLOBALE ENTIER 0 -1
|
||||
1 main GLOBALE FONCTION 0 0
|
||||
------------------------------------------
|
||||
106
eval-fourni/output/max.asynt
Normal file
106
eval-fourni/output/max.asynt
Normal file
@@ -0,0 +1,106 @@
|
||||
<prog>
|
||||
<l_dec>
|
||||
<foncDec>
|
||||
max
|
||||
<l_dec>
|
||||
<varDec>$a</varDec>
|
||||
<l_dec>
|
||||
<varDec>$b</varDec>
|
||||
</l_dec>
|
||||
</l_dec>
|
||||
<l_instr>
|
||||
<instr_si>
|
||||
<opExp>
|
||||
inf
|
||||
<varExp>
|
||||
<var_simple>$a</var_simple>
|
||||
</varExp>
|
||||
<varExp>
|
||||
<var_simple>$b</var_simple>
|
||||
</varExp>
|
||||
</opExp>
|
||||
<l_instr>
|
||||
<instr_retour>
|
||||
<varExp>
|
||||
<var_simple>$b</var_simple>
|
||||
</varExp>
|
||||
</instr_retour>
|
||||
</l_instr>
|
||||
</instr_si>
|
||||
<l_instr>
|
||||
<instr_retour>
|
||||
<varExp>
|
||||
<var_simple>$a</var_simple>
|
||||
</varExp>
|
||||
</instr_retour>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</foncDec>
|
||||
<l_dec>
|
||||
<foncDec>
|
||||
main
|
||||
<l_dec>
|
||||
<varDec>$v_1</varDec>
|
||||
<l_dec>
|
||||
<varDec>$v_2</varDec>
|
||||
</l_dec>
|
||||
</l_dec>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$v_1</var_simple>
|
||||
<lireExp>
|
||||
</lireExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$v_2</var_simple>
|
||||
<lireExp>
|
||||
</lireExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_si>
|
||||
<opExp>
|
||||
egal
|
||||
<appelExp>
|
||||
<appel>
|
||||
max
|
||||
<l_exp>
|
||||
<varExp>
|
||||
<var_simple>$v_1</var_simple>
|
||||
</varExp>
|
||||
<l_exp>
|
||||
<varExp>
|
||||
<var_simple>$v_2</var_simple>
|
||||
</varExp>
|
||||
<l_exp>
|
||||
</l_exp>
|
||||
</l_exp>
|
||||
</l_exp>
|
||||
</appel>
|
||||
</appelExp>
|
||||
<varExp>
|
||||
<var_simple>$v_1</var_simple>
|
||||
</varExp>
|
||||
</opExp>
|
||||
<l_instr>
|
||||
<instr_ecrire>
|
||||
<varExp>
|
||||
<var_simple>$v_1</var_simple>
|
||||
</varExp>
|
||||
</instr_ecrire>
|
||||
</l_instr>
|
||||
<l_instr>
|
||||
<instr_ecrire>
|
||||
<varExp>
|
||||
<var_simple>$v_2</var_simple>
|
||||
</varExp>
|
||||
</instr_ecrire>
|
||||
</l_instr>
|
||||
</instr_si>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</foncDec>
|
||||
</l_dec>
|
||||
</l_dec>
|
||||
</prog>
|
||||
72
eval-fourni/output/max.lex
Normal file
72
eval-fourni/output/max.lex
Normal file
@@ -0,0 +1,72 @@
|
||||
max id_fonction max
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
entier mot_clef entier
|
||||
$a id_variable $a
|
||||
, symbole VIRGULE
|
||||
entier mot_clef entier
|
||||
$b id_variable $b
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
si mot_clef si
|
||||
$a id_variable $a
|
||||
< symbole INFERIEUR
|
||||
$b id_variable $b
|
||||
alors mot_clef alors
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
retour mot_clef retour
|
||||
$b id_variable $b
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
retour mot_clef retour
|
||||
$a id_variable $a
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
main id_fonction main
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
entier mot_clef entier
|
||||
$v_1 id_variable $v_1
|
||||
, symbole VIRGULE
|
||||
entier mot_clef entier
|
||||
$v_2 id_variable $v_2
|
||||
; symbole POINT_VIRGULE
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
$v_1 id_variable $v_1
|
||||
= symbole EGAL
|
||||
lire mot_clef lire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
$v_2 id_variable $v_2
|
||||
= symbole EGAL
|
||||
lire mot_clef lire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
si mot_clef si
|
||||
max id_fonction max
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
$v_1 id_variable $v_1
|
||||
, symbole VIRGULE
|
||||
$v_2 id_variable $v_2
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
= symbole EGAL
|
||||
$v_1 id_variable $v_1
|
||||
alors mot_clef alors
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
ecrire mot_clef ecrire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
$v_1 id_variable $v_1
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
sinon mot_clef sinon
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
ecrire mot_clef ecrire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
$v_2 id_variable $v_2
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
symbole FIN
|
||||
142
eval-fourni/output/max.mips
Normal file
142
eval-fourni/output/max.mips
Normal file
@@ -0,0 +1,142 @@
|
||||
.data
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
max :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
lw $t0, 8($fp) #variable argument $a
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 4($fp) #variable argument $b
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
li $t0, 1
|
||||
blt $t1, $t2 e0
|
||||
li $t0, 0
|
||||
e0:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $zero e1
|
||||
lw $t0, 4($fp) #variable argument $b
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0 12($fp) #Adresse de retour
|
||||
lw $ra, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $fp, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
jr $ra
|
||||
j e2
|
||||
e1:
|
||||
e2:
|
||||
lw $t0, 8($fp) #variable argument $a
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0 12($fp) #Adresse de retour
|
||||
lw $ra, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $fp, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
jr $ra
|
||||
addi $sp, $sp 0 # desallocation variables locales
|
||||
lw $ra, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $fp, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
jr $ra
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
subi $sp, $sp, 4
|
||||
subi $sp, $sp, 4
|
||||
li $v0 5
|
||||
syscall
|
||||
move $t0, $v0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -8($fp) #variable locale
|
||||
li $v0 5
|
||||
syscall
|
||||
move $t0, $v0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -12($fp) #variable locale
|
||||
sub $sp, $sp, 4 #Val Retour
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, -12($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
jal max
|
||||
addi $sp, $sp, 8
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
li $t0, 1
|
||||
beq $t1, $t2 e3
|
||||
li $t0, 0
|
||||
e3:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $zero e4
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
move $a0, $t0
|
||||
li $v0, 1
|
||||
syscall
|
||||
li $a0, '\n'
|
||||
li $v0, 11
|
||||
syscall
|
||||
j e5
|
||||
e4:
|
||||
lw $t0, -12($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
move $a0, $t0
|
||||
li $v0, 1
|
||||
syscall
|
||||
li $a0, '\n'
|
||||
li $v0, 11
|
||||
syscall
|
||||
e5:
|
||||
addi $sp, $sp 8 # desallocation variables locales
|
||||
lw $ra, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $fp, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
jr $ra
|
||||
513
eval-fourni/output/max.synt
Normal file
513
eval-fourni/output/max.synt
Normal file
@@ -0,0 +1,513 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>max</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$b</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionSi>
|
||||
<mot_clef>si</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>
|
||||
<var>
|
||||
<id_variable>$b</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>
|
||||
<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>
|
||||
</optSinon>
|
||||
</instructionSi>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionRetour>
|
||||
<mot_clef>retour</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>
|
||||
</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>
|
||||
15
eval-fourni/output/max.tab
Normal file
15
eval-fourni/output/max.tab
Normal file
@@ -0,0 +1,15 @@
|
||||
------------------------------------------
|
||||
base = 1
|
||||
sommet = 3
|
||||
0 max GLOBALE FONCTION 0 2
|
||||
1 $a ARGUMENT ENTIER 0 -1
|
||||
2 $b ARGUMENT ENTIER 4 -1
|
||||
------------------------------------------
|
||||
------------------------------------------
|
||||
base = 2
|
||||
sommet = 4
|
||||
0 max GLOBALE FONCTION 0 2
|
||||
1 main GLOBALE FONCTION 0 0
|
||||
2 $v_1 LOCALE ENTIER 0 -1
|
||||
3 $v_2 LOCALE ENTIER 4 -1
|
||||
------------------------------------------
|
||||
418
eval-fourni/output/tri.asynt
Normal file
418
eval-fourni/output/tri.asynt
Normal file
@@ -0,0 +1,418 @@
|
||||
<prog>
|
||||
<l_dec>
|
||||
<tabDec>$tab[10]</tabDec>
|
||||
</l_dec>
|
||||
<l_dec>
|
||||
<foncDec>
|
||||
initialiser
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<intExp>0</intExp>
|
||||
</var_indicee>
|
||||
<intExp>8</intExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<intExp>1</intExp>
|
||||
</var_indicee>
|
||||
<intExp>6</intExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<intExp>2</intExp>
|
||||
</var_indicee>
|
||||
<intExp>9</intExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<intExp>3</intExp>
|
||||
</var_indicee>
|
||||
<intExp>9</intExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<intExp>4</intExp>
|
||||
</var_indicee>
|
||||
<intExp>4</intExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<intExp>5</intExp>
|
||||
</var_indicee>
|
||||
<intExp>2</intExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<intExp>6</intExp>
|
||||
</var_indicee>
|
||||
<intExp>3</intExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<intExp>7</intExp>
|
||||
</var_indicee>
|
||||
<intExp>1</intExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<intExp>8</intExp>
|
||||
</var_indicee>
|
||||
<intExp>4</intExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<intExp>9</intExp>
|
||||
</var_indicee>
|
||||
<intExp>5</intExp>
|
||||
</instr_affect>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</foncDec>
|
||||
<l_dec>
|
||||
<foncDec>
|
||||
afficher
|
||||
<l_dec>
|
||||
<varDec>$n</varDec>
|
||||
</l_dec>
|
||||
<l_dec>
|
||||
<varDec>$i</varDec>
|
||||
</l_dec>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$i</var_simple>
|
||||
<intExp>0</intExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_tantque>
|
||||
<opExp>
|
||||
inf
|
||||
<varExp>
|
||||
<var_simple>$i</var_simple>
|
||||
</varExp>
|
||||
<varExp>
|
||||
<var_simple>$n</var_simple>
|
||||
</varExp>
|
||||
</opExp>
|
||||
<l_instr>
|
||||
<instr_ecrire>
|
||||
<varExp>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<varExp>
|
||||
<var_simple>$i</var_simple>
|
||||
</varExp>
|
||||
</var_indicee>
|
||||
</varExp>
|
||||
</instr_ecrire>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$i</var_simple>
|
||||
<opExp>
|
||||
plus
|
||||
<varExp>
|
||||
<var_simple>$i</var_simple>
|
||||
</varExp>
|
||||
<intExp>1</intExp>
|
||||
</opExp>
|
||||
</instr_affect>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</instr_tantque>
|
||||
<l_instr>
|
||||
<instr_ecrire>
|
||||
<intExp>0</intExp>
|
||||
</instr_ecrire>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</foncDec>
|
||||
<l_dec>
|
||||
<foncDec>
|
||||
echanger
|
||||
<l_dec>
|
||||
<varDec>$i</varDec>
|
||||
<l_dec>
|
||||
<varDec>$j</varDec>
|
||||
</l_dec>
|
||||
</l_dec>
|
||||
<l_dec>
|
||||
<varDec>$temp</varDec>
|
||||
</l_dec>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$temp</var_simple>
|
||||
<varExp>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<varExp>
|
||||
<var_simple>$j</var_simple>
|
||||
</varExp>
|
||||
</var_indicee>
|
||||
</varExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<varExp>
|
||||
<var_simple>$j</var_simple>
|
||||
</varExp>
|
||||
</var_indicee>
|
||||
<varExp>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<varExp>
|
||||
<var_simple>$i</var_simple>
|
||||
</varExp>
|
||||
</var_indicee>
|
||||
</varExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<varExp>
|
||||
<var_simple>$i</var_simple>
|
||||
</varExp>
|
||||
</var_indicee>
|
||||
<varExp>
|
||||
<var_simple>$temp</var_simple>
|
||||
</varExp>
|
||||
</instr_affect>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</foncDec>
|
||||
<l_dec>
|
||||
<foncDec>
|
||||
trier
|
||||
<l_dec>
|
||||
<varDec>$n</varDec>
|
||||
</l_dec>
|
||||
<l_dec>
|
||||
<varDec>$echange</varDec>
|
||||
<l_dec>
|
||||
<varDec>$j</varDec>
|
||||
<l_dec>
|
||||
<varDec>$m</varDec>
|
||||
</l_dec>
|
||||
</l_dec>
|
||||
</l_dec>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$m</var_simple>
|
||||
<varExp>
|
||||
<var_simple>$n</var_simple>
|
||||
</varExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$echange</var_simple>
|
||||
<intExp>1</intExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_tantque>
|
||||
<opExp>
|
||||
egal
|
||||
<varExp>
|
||||
<var_simple>$echange</var_simple>
|
||||
</varExp>
|
||||
<intExp>1</intExp>
|
||||
</opExp>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$echange</var_simple>
|
||||
<intExp>0</intExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$j</var_simple>
|
||||
<intExp>0</intExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_tantque>
|
||||
<opExp>
|
||||
inf
|
||||
<varExp>
|
||||
<var_simple>$j</var_simple>
|
||||
</varExp>
|
||||
<opExp>
|
||||
moins
|
||||
<varExp>
|
||||
<var_simple>$m</var_simple>
|
||||
</varExp>
|
||||
<intExp>1</intExp>
|
||||
</opExp>
|
||||
</opExp>
|
||||
<l_instr>
|
||||
<instr_si>
|
||||
<opExp>
|
||||
inf
|
||||
<varExp>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<opExp>
|
||||
plus
|
||||
<varExp>
|
||||
<var_simple>$j</var_simple>
|
||||
</varExp>
|
||||
<intExp>1</intExp>
|
||||
</opExp>
|
||||
</var_indicee>
|
||||
</varExp>
|
||||
<varExp>
|
||||
<var_indicee>
|
||||
<var_base_tableau>$tab</var_base_tableau>
|
||||
<varExp>
|
||||
<var_simple>$j</var_simple>
|
||||
</varExp>
|
||||
</var_indicee>
|
||||
</varExp>
|
||||
</opExp>
|
||||
<l_instr>
|
||||
<instr_appel>
|
||||
<appel>
|
||||
echanger
|
||||
<l_exp>
|
||||
<varExp>
|
||||
<var_simple>$j</var_simple>
|
||||
</varExp>
|
||||
<l_exp>
|
||||
<opExp>
|
||||
plus
|
||||
<varExp>
|
||||
<var_simple>$j</var_simple>
|
||||
</varExp>
|
||||
<intExp>1</intExp>
|
||||
</opExp>
|
||||
<l_exp>
|
||||
</l_exp>
|
||||
</l_exp>
|
||||
</l_exp>
|
||||
</appel>
|
||||
</instr_appel>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$echange</var_simple>
|
||||
<intExp>1</intExp>
|
||||
</instr_affect>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</instr_si>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$j</var_simple>
|
||||
<opExp>
|
||||
plus
|
||||
<varExp>
|
||||
<var_simple>$j</var_simple>
|
||||
</varExp>
|
||||
<intExp>1</intExp>
|
||||
</opExp>
|
||||
</instr_affect>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</instr_tantque>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$m</var_simple>
|
||||
<opExp>
|
||||
moins
|
||||
<varExp>
|
||||
<var_simple>$m</var_simple>
|
||||
</varExp>
|
||||
<intExp>1</intExp>
|
||||
</opExp>
|
||||
</instr_affect>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</instr_tantque>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</foncDec>
|
||||
<l_dec>
|
||||
<foncDec>
|
||||
main
|
||||
<l_instr>
|
||||
<instr_appel>
|
||||
<appel>
|
||||
initialiser
|
||||
<l_exp>
|
||||
</l_exp>
|
||||
</appel>
|
||||
</instr_appel>
|
||||
<l_instr>
|
||||
<instr_appel>
|
||||
<appel>
|
||||
afficher
|
||||
<l_exp>
|
||||
<intExp>10</intExp>
|
||||
<l_exp>
|
||||
</l_exp>
|
||||
</l_exp>
|
||||
</appel>
|
||||
</instr_appel>
|
||||
<l_instr>
|
||||
<instr_appel>
|
||||
<appel>
|
||||
trier
|
||||
<l_exp>
|
||||
<intExp>10</intExp>
|
||||
<l_exp>
|
||||
</l_exp>
|
||||
</l_exp>
|
||||
</appel>
|
||||
</instr_appel>
|
||||
<l_instr>
|
||||
<instr_appel>
|
||||
<appel>
|
||||
afficher
|
||||
<l_exp>
|
||||
<intExp>10</intExp>
|
||||
<l_exp>
|
||||
</l_exp>
|
||||
</l_exp>
|
||||
</appel>
|
||||
</instr_appel>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</foncDec>
|
||||
</l_dec>
|
||||
</l_dec>
|
||||
</l_dec>
|
||||
</l_dec>
|
||||
</l_dec>
|
||||
</prog>
|
||||
271
eval-fourni/output/tri.lex
Normal file
271
eval-fourni/output/tri.lex
Normal file
@@ -0,0 +1,271 @@
|
||||
entier mot_clef entier
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
10 nombre 10
|
||||
] symbole CROCHET_FERMANT
|
||||
; symbole POINT_VIRGULE
|
||||
initialiser id_fonction initialiser
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
0 nombre 0
|
||||
] symbole CROCHET_FERMANT
|
||||
= symbole EGAL
|
||||
8 nombre 8
|
||||
; symbole POINT_VIRGULE
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
1 nombre 1
|
||||
] symbole CROCHET_FERMANT
|
||||
= symbole EGAL
|
||||
6 nombre 6
|
||||
; symbole POINT_VIRGULE
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
2 nombre 2
|
||||
] symbole CROCHET_FERMANT
|
||||
= symbole EGAL
|
||||
9 nombre 9
|
||||
; symbole POINT_VIRGULE
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
3 nombre 3
|
||||
] symbole CROCHET_FERMANT
|
||||
= symbole EGAL
|
||||
9 nombre 9
|
||||
; symbole POINT_VIRGULE
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
4 nombre 4
|
||||
] symbole CROCHET_FERMANT
|
||||
= symbole EGAL
|
||||
4 nombre 4
|
||||
; symbole POINT_VIRGULE
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
5 nombre 5
|
||||
] symbole CROCHET_FERMANT
|
||||
= symbole EGAL
|
||||
2 nombre 2
|
||||
; symbole POINT_VIRGULE
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
6 nombre 6
|
||||
] symbole CROCHET_FERMANT
|
||||
= symbole EGAL
|
||||
3 nombre 3
|
||||
; symbole POINT_VIRGULE
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
7 nombre 7
|
||||
] symbole CROCHET_FERMANT
|
||||
= symbole EGAL
|
||||
1 nombre 1
|
||||
; symbole POINT_VIRGULE
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
8 nombre 8
|
||||
] symbole CROCHET_FERMANT
|
||||
= symbole EGAL
|
||||
4 nombre 4
|
||||
; symbole POINT_VIRGULE
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
9 nombre 9
|
||||
] symbole CROCHET_FERMANT
|
||||
= symbole EGAL
|
||||
5 nombre 5
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
afficher id_fonction afficher
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
entier mot_clef entier
|
||||
$n id_variable $n
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
entier mot_clef entier
|
||||
$i id_variable $i
|
||||
; symbole POINT_VIRGULE
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
$i id_variable $i
|
||||
= symbole EGAL
|
||||
0 nombre 0
|
||||
; symbole POINT_VIRGULE
|
||||
tantque mot_clef tantque
|
||||
$i id_variable $i
|
||||
< symbole INFERIEUR
|
||||
$n id_variable $n
|
||||
faire mot_clef faire
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
ecrire mot_clef ecrire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
$i id_variable $i
|
||||
] symbole CROCHET_FERMANT
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
$i id_variable $i
|
||||
= symbole EGAL
|
||||
$i id_variable $i
|
||||
+ symbole PLUS
|
||||
1 nombre 1
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
ecrire mot_clef ecrire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
0 nombre 0
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
echanger id_fonction echanger
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
entier mot_clef entier
|
||||
$i id_variable $i
|
||||
, symbole VIRGULE
|
||||
entier mot_clef entier
|
||||
$j id_variable $j
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
entier mot_clef entier
|
||||
$temp id_variable $temp
|
||||
; symbole POINT_VIRGULE
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
$temp id_variable $temp
|
||||
= symbole EGAL
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
$j id_variable $j
|
||||
] symbole CROCHET_FERMANT
|
||||
; symbole POINT_VIRGULE
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
$j id_variable $j
|
||||
] symbole CROCHET_FERMANT
|
||||
= symbole EGAL
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
$i id_variable $i
|
||||
] symbole CROCHET_FERMANT
|
||||
; symbole POINT_VIRGULE
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
$i id_variable $i
|
||||
] symbole CROCHET_FERMANT
|
||||
= symbole EGAL
|
||||
$temp id_variable $temp
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
trier id_fonction trier
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
entier mot_clef entier
|
||||
$n id_variable $n
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
entier mot_clef entier
|
||||
$echange id_variable $echange
|
||||
, symbole VIRGULE
|
||||
entier mot_clef entier
|
||||
$j id_variable $j
|
||||
, symbole VIRGULE
|
||||
entier mot_clef entier
|
||||
$m id_variable $m
|
||||
; symbole POINT_VIRGULE
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
$m id_variable $m
|
||||
= symbole EGAL
|
||||
$n id_variable $n
|
||||
; symbole POINT_VIRGULE
|
||||
$echange id_variable $echange
|
||||
= symbole EGAL
|
||||
1 nombre 1
|
||||
; symbole POINT_VIRGULE
|
||||
tantque mot_clef tantque
|
||||
$echange id_variable $echange
|
||||
= symbole EGAL
|
||||
1 nombre 1
|
||||
faire mot_clef faire
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
$echange id_variable $echange
|
||||
= symbole EGAL
|
||||
0 nombre 0
|
||||
; symbole POINT_VIRGULE
|
||||
$j id_variable $j
|
||||
= symbole EGAL
|
||||
0 nombre 0
|
||||
; symbole POINT_VIRGULE
|
||||
tantque mot_clef tantque
|
||||
$j id_variable $j
|
||||
< symbole INFERIEUR
|
||||
$m id_variable $m
|
||||
- symbole MOINS
|
||||
1 nombre 1
|
||||
faire mot_clef faire
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
si mot_clef si
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
$j id_variable $j
|
||||
+ symbole PLUS
|
||||
1 nombre 1
|
||||
] symbole CROCHET_FERMANT
|
||||
< symbole INFERIEUR
|
||||
$tab id_variable $tab
|
||||
[ symbole CROCHET_OUVRANT
|
||||
$j id_variable $j
|
||||
] symbole CROCHET_FERMANT
|
||||
alors mot_clef alors
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
echanger id_fonction echanger
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
$j id_variable $j
|
||||
, symbole VIRGULE
|
||||
$j id_variable $j
|
||||
+ symbole PLUS
|
||||
1 nombre 1
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
$echange id_variable $echange
|
||||
= symbole EGAL
|
||||
1 nombre 1
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
$j id_variable $j
|
||||
= symbole EGAL
|
||||
$j id_variable $j
|
||||
+ symbole PLUS
|
||||
1 nombre 1
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
$m id_variable $m
|
||||
= symbole EGAL
|
||||
$m id_variable $m
|
||||
- symbole MOINS
|
||||
1 nombre 1
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
main id_fonction main
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
initialiser id_fonction initialiser
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
afficher id_fonction afficher
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
10 nombre 10
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
trier id_fonction trier
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
10 nombre 10
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
afficher id_fonction afficher
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
10 nombre 10
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
symbole FIN
|
||||
455
eval-fourni/output/tri.mips
Normal file
455
eval-fourni/output/tri.mips
Normal file
@@ -0,0 +1,455 @@
|
||||
.data
|
||||
$$tab: .space 40
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
initialiser :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 8
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0,
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 6
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0,
|
||||
li $t0, 2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 9
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
li $t0, 3
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 9
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, P`ǁ<>
|
||||
li $t0, 4
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 4
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, <01><><EFBFBD>
|
||||
li $t0, 5
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0,
|
||||
li $t0, 6
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 3
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, @^ǁ<>
|
||||
li $t0, 7
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0,
|
||||
li $t0, 8
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 4
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, sw $t0,
|
||||
li $t0, 9
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 5
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, sw $t0,
|
||||
addi $sp, $sp 0 # desallocation variables locales
|
||||
lw $ra, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $fp, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
jr $ra
|
||||
afficher :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
subi $sp, $sp, 4
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -8($fp) #variable locale
|
||||
e0:
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 4($fp) #variable argument $n
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
li $t0, 1
|
||||
blt $t1, $t2 e2
|
||||
li $t0, 0
|
||||
e2:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $0 e1
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0,
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
move $a0, $t0
|
||||
li $v0, 1
|
||||
syscall
|
||||
li $a0, '\n'
|
||||
li $v0, 11
|
||||
syscall
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
add $t0, $t1, $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -8($fp) #variable locale
|
||||
j e0
|
||||
e1:
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
move $a0, $t0
|
||||
li $v0, 1
|
||||
syscall
|
||||
li $a0, '\n'
|
||||
li $v0, 11
|
||||
syscall
|
||||
addi $sp, $sp 0 # desallocation variables locales
|
||||
lw $ra, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $fp, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
jr $ra
|
||||
echanger :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
subi $sp, $sp, 4
|
||||
lw $t0, 4($fp) #variable argument $j
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, ]ǁ<>
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -8($fp) #variable locale
|
||||
lw $t0, 4($fp) #variable argument $j
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 8($fp) #variable argument $i
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0,
|
||||
lw $t0, 8($fp) #variable argument $i
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, $<24>@
|
||||
addi $sp, $sp 0 # desallocation variables locales
|
||||
lw $ra, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $fp, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
jr $ra
|
||||
trier :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
subi $sp, $sp, 4
|
||||
subi $sp, $sp, 4
|
||||
subi $sp, $sp, 4
|
||||
lw $t0, 4($fp) #variable argument $n
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -16($fp) #variable locale
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -8($fp) #variable locale
|
||||
e3:
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
li $t0, 1
|
||||
beq $t1, $t2 e5
|
||||
li $t0, 0
|
||||
e5:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $0 e4
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -8($fp) #variable locale
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -12($fp) #variable locale
|
||||
e6:
|
||||
lw $t0, -12($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, -16($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sub $t0, $t1, $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
li $t0, 1
|
||||
blt $t1, $t2 e8
|
||||
li $t0, 0
|
||||
e8:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $0 e7
|
||||
lw $t0, -12($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
add $t0, $t1, $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, -12($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
li $t0, 1
|
||||
blt $t1, $t2 e9
|
||||
li $t0, 0
|
||||
e9:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $zero e10
|
||||
sub $sp, $sp, 4 #Val Retour
|
||||
lw $t0, -12($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, -12($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
add $t0, $t1, $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
jal echanger
|
||||
addi $sp, $sp, 8
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -8($fp) #variable locale
|
||||
j e11
|
||||
e10:
|
||||
e11:
|
||||
lw $t0, -12($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
add $t0, $t1, $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -12($fp) #variable locale
|
||||
j e6
|
||||
e7:
|
||||
lw $t0, -16($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sub $t0, $t1, $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -16($fp) #variable locale
|
||||
j e3
|
||||
e4:
|
||||
addi $sp, $sp 0 # desallocation variables locales
|
||||
lw $ra, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $fp, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
jr $ra
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
sub $sp, $sp, 4 #Val Retour
|
||||
jal initialiser
|
||||
addi $sp, $sp, 0
|
||||
sub $sp, $sp, 4 #Val Retour
|
||||
li $t0, 10
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
jal afficher
|
||||
addi $sp, $sp, 4
|
||||
sub $sp, $sp, 4 #Val Retour
|
||||
li $t0, 10
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
jal trier
|
||||
addi $sp, $sp, 4
|
||||
sub $sp, $sp, 4 #Val Retour
|
||||
li $t0, 10
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
jal afficher
|
||||
addi $sp, $sp, 4
|
||||
addi $sp, $sp 12 # desallocation variables locales
|
||||
lw $ra, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $fp, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
jr $ra
|
||||
2146
eval-fourni/output/tri.synt
Normal file
2146
eval-fourni/output/tri.synt
Normal file
File diff suppressed because it is too large
Load Diff
49
eval-fourni/output/tri.tab
Normal file
49
eval-fourni/output/tri.tab
Normal file
@@ -0,0 +1,49 @@
|
||||
------------------------------------------
|
||||
base = 2
|
||||
sommet = 2
|
||||
0 $tab GLOBALE TABLEAU 0 10
|
||||
1 initialiser GLOBALE FONCTION 0 0
|
||||
------------------------------------------
|
||||
------------------------------------------
|
||||
base = 3
|
||||
sommet = 5
|
||||
0 $tab GLOBALE TABLEAU 0 10
|
||||
1 initialiser GLOBALE FONCTION 0 0
|
||||
2 afficher GLOBALE FONCTION 0 1
|
||||
3 $n ARGUMENT ENTIER 0 -1
|
||||
4 $i LOCALE ENTIER 0 -1
|
||||
------------------------------------------
|
||||
------------------------------------------
|
||||
base = 4
|
||||
sommet = 7
|
||||
0 $tab GLOBALE TABLEAU 0 10
|
||||
1 initialiser GLOBALE FONCTION 0 0
|
||||
2 afficher GLOBALE FONCTION 0 1
|
||||
3 echanger GLOBALE FONCTION 0 2
|
||||
4 $i ARGUMENT ENTIER 0 -1
|
||||
5 $j ARGUMENT ENTIER 4 -1
|
||||
6 $temp LOCALE ENTIER 0 -1
|
||||
------------------------------------------
|
||||
------------------------------------------
|
||||
base = 5
|
||||
sommet = 9
|
||||
0 $tab GLOBALE TABLEAU 0 10
|
||||
1 initialiser GLOBALE FONCTION 0 0
|
||||
2 afficher GLOBALE FONCTION 0 1
|
||||
3 echanger GLOBALE FONCTION 0 2
|
||||
4 trier GLOBALE FONCTION 0 1
|
||||
5 $n ARGUMENT ENTIER 0 -1
|
||||
6 $echange LOCALE ENTIER 0 -1
|
||||
7 $j LOCALE ENTIER 4 -1
|
||||
8 $m LOCALE ENTIER 8 -1
|
||||
------------------------------------------
|
||||
------------------------------------------
|
||||
base = 6
|
||||
sommet = 6
|
||||
0 $tab GLOBALE TABLEAU 0 10
|
||||
1 initialiser GLOBALE FONCTION 0 0
|
||||
2 afficher GLOBALE FONCTION 0 1
|
||||
3 echanger GLOBALE FONCTION 0 2
|
||||
4 trier GLOBALE FONCTION 0 1
|
||||
5 main GLOBALE FONCTION 0 0
|
||||
------------------------------------------
|
||||
Reference in New Issue
Block a user