diff --git a/eval-final-projet/compare_arbres_xml b/eval-final-projet/compare_arbres_xml new file mode 100755 index 0000000..89f8836 Binary files /dev/null and b/eval-final-projet/compare_arbres_xml differ diff --git a/eval-final-projet/input/eval20.l b/eval-final-projet/input/eval20.l.d similarity index 100% rename from eval-final-projet/input/eval20.l rename to eval-final-projet/input/eval20.l.d diff --git a/eval-final-projet/output/eval1-err.synt.xml b/eval-final-projet/output/eval1-err.synt.xml new file mode 100644 index 0000000..e69de29 diff --git a/eval-final-projet/output/eval1.asynt b/eval-final-projet/output/eval1.asynt new file mode 100644 index 0000000..f92de39 --- /dev/null +++ b/eval-final-projet/output/eval1.asynt @@ -0,0 +1,23 @@ + + + $a + + + + main + + + $a + 1 + + + + + $a + + + + + + + diff --git a/eval-final-projet/output/eval1.lex b/eval-final-projet/output/eval1.lex new file mode 100644 index 0000000..fb828db --- /dev/null +++ b/eval-final-projet/output/eval1.lex @@ -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 diff --git a/eval-final-projet/output/eval1.mips b/eval-final-projet/output/eval1.mips new file mode 100644 index 0000000..5f5f8c0 --- /dev/null +++ b/eval-final-projet/output/eval1.mips @@ -0,0 +1,37 @@ +.data +$$a: .space 4 +.text +__start: +jal main +li $v0, 10 +syscall +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$a +lw $t0, $$a +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval1.synt b/eval-final-projet/output/eval1.synt new file mode 100644 index 0000000..038df30 --- /dev/null +++ b/eval-final-projet/output/eval1.synt @@ -0,0 +1,113 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/output/eval1.tab b/eval-final-projet/output/eval1.tab new file mode 100644 index 0000000..91bc69d --- /dev/null +++ b/eval-final-projet/output/eval1.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval10-err.synt.xml b/eval-final-projet/output/eval10-err.synt.xml new file mode 100644 index 0000000..e69de29 diff --git a/eval-final-projet/output/eval10.asynt b/eval-final-projet/output/eval10.asynt new file mode 100644 index 0000000..4ff357e --- /dev/null +++ b/eval-final-projet/output/eval10.asynt @@ -0,0 +1,28 @@ + + + + procedure + + + 1 + + + + + + main + + + + + procedure + + + + + + + + + + diff --git a/eval-final-projet/output/eval10.lex b/eval-final-projet/output/eval10.lex new file mode 100644 index 0000000..5577cab --- /dev/null +++ b/eval-final-projet/output/eval10.lex @@ -0,0 +1,21 @@ +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval10.mips b/eval-final-projet/output/eval10.mips new file mode 100644 index 0000000..870d3f4 --- /dev/null +++ b/eval-final-projet/output/eval10.mips @@ -0,0 +1,54 @@ +.data +.text +__start: +jal main +li $v0, 10 +syscall +procedure : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0 4($fp) #Adresse de retour +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +jr $ra +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 #Val Retour +jal procedure +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval10.synt b/eval-final-projet/output/eval10.synt new file mode 100644 index 0000000..5a20a3e --- /dev/null +++ b/eval-final-projet/output/eval10.synt @@ -0,0 +1,118 @@ + + + + + + procedure + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + procedure + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/output/eval10.tab b/eval-final-projet/output/eval10.tab new file mode 100644 index 0000000..a780954 --- /dev/null +++ b/eval-final-projet/output/eval10.tab @@ -0,0 +1,11 @@ +------------------------------------------ +base = 1 +sommet = 1 +0 procedure GLOBALE FONCTION 0 0 +------------------------------------------ +------------------------------------------ +base = 2 +sommet = 2 +0 procedure GLOBALE FONCTION 0 0 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval11-err.synt.xml b/eval-final-projet/output/eval11-err.synt.xml new file mode 100644 index 0000000..a4dc1a4 --- /dev/null +++ b/eval-final-projet/output/eval11-err.synt.xml @@ -0,0 +1,34 @@ +.data +$$a: .space 40 +$$b: .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, 10 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$a($t4) +li $t0, 5 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$b +Indice tableau $a est attendu diff --git a/eval-final-projet/output/eval11.asynt b/eval-final-projet/output/eval11.asynt new file mode 100644 index 0000000..cef5db4 --- /dev/null +++ b/eval-final-projet/output/eval11.asynt @@ -0,0 +1,37 @@ + + + + procedure + + $a + + + + $a + 1 + + + + + $a + + + + + + + + main + + + + procedure + + + + + + + + + diff --git a/eval-final-projet/output/eval11.lex b/eval-final-projet/output/eval11.lex new file mode 100644 index 0000000..d2991f9 --- /dev/null +++ b/eval-final-projet/output/eval11.lex @@ -0,0 +1,27 @@ +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +{ 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 +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval11.mips b/eval-final-projet/output/eval11.mips new file mode 100644 index 0000000..649b873 --- /dev/null +++ b/eval-final-projet/output/eval11.mips @@ -0,0 +1,52 @@ +.data +.text +__start: +jal main +li $v0, 10 +syscall +procedure : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -8($fp) #variable locale +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +addi $sp, $sp 4 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 #Val Retour +jal procedure +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval11.synt b/eval-final-projet/output/eval11.synt new file mode 100644 index 0000000..9147791 --- /dev/null +++ b/eval-final-projet/output/eval11.synt @@ -0,0 +1,146 @@ + + + + + + procedure + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + procedure + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/output/eval11.tab b/eval-final-projet/output/eval11.tab new file mode 100644 index 0000000..75b866f --- /dev/null +++ b/eval-final-projet/output/eval11.tab @@ -0,0 +1,12 @@ +------------------------------------------ +base = 1 +sommet = 2 +0 procedure GLOBALE FONCTION 0 0 +1 $a LOCALE ENTIER 0 -1 +------------------------------------------ +------------------------------------------ +base = 2 +sommet = 2 +0 procedure GLOBALE FONCTION 0 0 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval12-err.synt.xml b/eval-final-projet/output/eval12-err.synt.xml new file mode 100644 index 0000000..4868e4e --- /dev/null +++ b/eval-final-projet/output/eval12-err.synt.xml @@ -0,0 +1,7 @@ +.data +.text +__start: +jal main +li $v0, 10 +syscall +Fonction main non trouvé diff --git a/eval-final-projet/output/eval12.asynt b/eval-final-projet/output/eval12.asynt new file mode 100644 index 0000000..f4b25e7 --- /dev/null +++ b/eval-final-projet/output/eval12.asynt @@ -0,0 +1,20 @@ + + + $a + + + + main + + + 1 + + + 1 + + + + + + + diff --git a/eval-final-projet/output/eval12.lex b/eval-final-projet/output/eval12.lex new file mode 100644 index 0000000..a51d4f1 --- /dev/null +++ b/eval-final-projet/output/eval12.lex @@ -0,0 +1,19 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +1 nombre 1 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval12.mips b/eval-final-projet/output/eval12.mips new file mode 100644 index 0000000..19de312 --- /dev/null +++ b/eval-final-projet/output/eval12.mips @@ -0,0 +1,40 @@ +.data +$$a: .space 4 +.text +__start: +jal main +li $v0, 10 +syscall +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $zero e0 +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +j e1 +e0: +e1: +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval12.synt b/eval-final-projet/output/eval12.synt new file mode 100644 index 0000000..c855a07 --- /dev/null +++ b/eval-final-projet/output/eval12.synt @@ -0,0 +1,112 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + 1 + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 1 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/output/eval12.tab b/eval-final-projet/output/eval12.tab new file mode 100644 index 0000000..91bc69d --- /dev/null +++ b/eval-final-projet/output/eval12.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval13.asynt b/eval-final-projet/output/eval13.asynt new file mode 100644 index 0000000..68c8ccf --- /dev/null +++ b/eval-final-projet/output/eval13.asynt @@ -0,0 +1,25 @@ + + + $a + + + + main + + + 0 + + + 1 + + + + + 0 + + + + + + + diff --git a/eval-final-projet/output/eval13.lex b/eval-final-projet/output/eval13.lex new file mode 100644 index 0000000..a40b0de --- /dev/null +++ b/eval-final-projet/output/eval13.lex @@ -0,0 +1,27 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +0 nombre 0 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +sinon mot_clef sinon +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +0 nombre 0 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval13.mips b/eval-final-projet/output/eval13.mips new file mode 100644 index 0000000..4b91b0c --- /dev/null +++ b/eval-final-projet/output/eval13.mips @@ -0,0 +1,51 @@ +.data +$$a: .space 4 +.text +__start: +jal main +li $v0, 10 +syscall +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $zero e0 +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +j e1 +e0: +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +e1: +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval13.synt b/eval-final-projet/output/eval13.synt new file mode 100644 index 0000000..f049cf1 --- /dev/null +++ b/eval-final-projet/output/eval13.synt @@ -0,0 +1,154 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + 0 + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 1 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 0 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/output/eval13.tab b/eval-final-projet/output/eval13.tab new file mode 100644 index 0000000..91bc69d --- /dev/null +++ b/eval-final-projet/output/eval13.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval14.asynt b/eval-final-projet/output/eval14.asynt new file mode 100644 index 0000000..96fad91 --- /dev/null +++ b/eval-final-projet/output/eval14.asynt @@ -0,0 +1,96 @@ + + + $tab[10] + + + + main + + $a + + + + $a + 0 + + + + + inf + + $a + + 10 + + + + + $tab + + $a + + + + $a + + + + + $a + + plus + + $a + + 1 + + + + + + + + $a + 0 + + + + + inf + + $a + + 10 + + + + + + $tab + + $a + + + + + + + $a + + plus + + $a + + 1 + + + + + + + + + + + + diff --git a/eval-final-projet/output/eval14.lex b/eval-final-projet/output/eval14.lex new file mode 100644 index 0000000..3c9e1b9 --- /dev/null +++ b/eval-final-projet/output/eval14.lex @@ -0,0 +1,64 @@ +entier mot_clef entier +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +10 nombre 10 +] symbole CROCHET_FERMANT +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$a id_variable $a += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +tantque mot_clef tantque +$a id_variable $a +< symbole INFERIEUR +10 nombre 10 +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$a id_variable $a +] symbole CROCHET_FERMANT += symbole EGAL +$a id_variable $a +; symbole POINT_VIRGULE +$a id_variable $a += symbole EGAL +$a id_variable $a ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +$a id_variable $a += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +tantque mot_clef tantque +$a id_variable $a +< symbole INFERIEUR +10 nombre 10 +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$a id_variable $a +] symbole CROCHET_FERMANT +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$a id_variable $a += symbole EGAL +$a id_variable $a ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval14.mips b/eval-final-projet/output/eval14.mips new file mode 100644 index 0000000..04753b1 --- /dev/null +++ b/eval-final-projet/output/eval14.mips @@ -0,0 +1,140 @@ +.data +$$tab: .space 40 +.text +__start: +jal main +li $v0, 10 +syscall +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -8($fp) #variable locale +e0: +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 10 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +li $t0, 1 +blt $t1, $t2 e2 +li $t0, 0 +e2: +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $0 e1 +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$tab($t4) +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +add $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -8($fp) #variable locale +j e0 +e1: +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -8($fp) #variable locale +e3: +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 10 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +li $t0, 1 +blt $t1, $t2 e5 +li $t0, 0 +e5: +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $0 e4 +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, $$tab($t4) +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +add $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -8($fp) #variable locale +j e3 +e4: +addi $sp, $sp 4 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval14.synt b/eval-final-projet/output/eval14.synt new file mode 100644 index 0000000..d0d0c20 --- /dev/null +++ b/eval-final-projet/output/eval14.synt @@ -0,0 +1,487 @@ + + + + + entier + $tab + + CROCHET_OUVRANT + 10 + CROCHET_FERMANT + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $a + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $a + + + + EGAL + + + + + + + + + $a + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + + $a + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $a + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + $a + + + + EGAL + + + + + + + + + $a + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/output/eval14.tab b/eval-final-projet/output/eval14.tab new file mode 100644 index 0000000..6ef7c9a --- /dev/null +++ b/eval-final-projet/output/eval14.tab @@ -0,0 +1,7 @@ +------------------------------------------ +base = 2 +sommet = 3 +0 $tab GLOBALE TABLEAU 0 10 +1 main GLOBALE FONCTION 0 0 +2 $a LOCALE ENTIER 0 -1 +------------------------------------------ diff --git a/eval-final-projet/output/eval15.asynt b/eval-final-projet/output/eval15.asynt new file mode 100644 index 0000000..80cfd53 --- /dev/null +++ b/eval-final-projet/output/eval15.asynt @@ -0,0 +1,29 @@ + + + $tab[10] + + + + main + + + + $tab + 4 + + 4 + + + + + + $tab + 4 + + + + + + + + diff --git a/eval-final-projet/output/eval15.lex b/eval-final-projet/output/eval15.lex new file mode 100644 index 0000000..d3d8f9d --- /dev/null +++ b/eval-final-projet/output/eval15.lex @@ -0,0 +1,27 @@ +entier mot_clef entier +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +10 nombre 10 +] symbole CROCHET_FERMANT +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +4 nombre 4 +] symbole CROCHET_FERMANT += symbole EGAL +4 nombre 4 +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +4 nombre 4 +] symbole CROCHET_FERMANT +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval15.mips b/eval-final-projet/output/eval15.mips new file mode 100644 index 0000000..39381b4 --- /dev/null +++ b/eval-final-projet/output/eval15.mips @@ -0,0 +1,51 @@ +.data +$$tab: .space 40 +.text +__start: +jal main +li $v0, 10 +syscall +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 4 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 4 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$tab($t4) +li $t0, 4 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, $$tab($t4) +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval15.synt b/eval-final-projet/output/eval15.synt new file mode 100644 index 0000000..f09da36 --- /dev/null +++ b/eval-final-projet/output/eval15.synt @@ -0,0 +1,170 @@ + + + + + entier + $tab + + CROCHET_OUVRANT + 10 + CROCHET_FERMANT + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 4 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 4 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 4 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/output/eval15.tab b/eval-final-projet/output/eval15.tab new file mode 100644 index 0000000..de4eeb4 --- /dev/null +++ b/eval-final-projet/output/eval15.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $tab GLOBALE TABLEAU 0 10 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval16.asynt b/eval-final-projet/output/eval16.asynt new file mode 100644 index 0000000..4b68dd0 --- /dev/null +++ b/eval-final-projet/output/eval16.asynt @@ -0,0 +1,20 @@ + + + $a + + + + main + + + 0 + + + 1 + + + + + + + diff --git a/eval-final-projet/output/eval16.lex b/eval-final-projet/output/eval16.lex new file mode 100644 index 0000000..911ee5b --- /dev/null +++ b/eval-final-projet/output/eval16.lex @@ -0,0 +1,19 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +tantque mot_clef tantque +0 nombre 0 +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval16.mips b/eval-final-projet/output/eval16.mips new file mode 100644 index 0000000..28928f9 --- /dev/null +++ b/eval-final-projet/output/eval16.mips @@ -0,0 +1,40 @@ +.data +$$a: .space 4 +.text +__start: +jal main +li $v0, 10 +syscall +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +e0: +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $0 e1 +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +j e0 +e1: +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval16.synt b/eval-final-projet/output/eval16.synt new file mode 100644 index 0000000..7dcd9b3 --- /dev/null +++ b/eval-final-projet/output/eval16.synt @@ -0,0 +1,110 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + tantque + + + + + + + + 0 + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 1 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/output/eval16.tab b/eval-final-projet/output/eval16.tab new file mode 100644 index 0000000..91bc69d --- /dev/null +++ b/eval-final-projet/output/eval16.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval17.asynt b/eval-final-projet/output/eval17.asynt new file mode 100644 index 0000000..370907a --- /dev/null +++ b/eval-final-projet/output/eval17.asynt @@ -0,0 +1,46 @@ + + + $a + + + + main + + + $a + 0 + + + + + inf + + $a + + 10 + + + + + $a + + + + + $a + + plus + + $a + + 1 + + + + + + + + + + diff --git a/eval-final-projet/output/eval17.lex b/eval-final-projet/output/eval17.lex new file mode 100644 index 0000000..fb449a8 --- /dev/null +++ b/eval-final-projet/output/eval17.lex @@ -0,0 +1,31 @@ +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 +0 nombre 0 +; symbole POINT_VIRGULE +tantque mot_clef tantque +$a id_variable $a +< symbole INFERIEUR +10 nombre 10 +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$a id_variable $a += symbole EGAL +$a id_variable $a ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval17.mips b/eval-final-projet/output/eval17.mips new file mode 100644 index 0000000..66b00b6 --- /dev/null +++ b/eval-final-projet/output/eval17.mips @@ -0,0 +1,75 @@ +.data +$$a: .space 4 +.text +__start: +jal main +li $v0, 10 +syscall +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$a +e0: +lw $t0, $$a +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 10 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +li $t0, 1 +blt $t1, $t2 e2 +li $t0, 0 +e2: +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $0 e1 +lw $t0, $$a +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +lw $t0, $$a +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +add $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$a +j e0 +e1: +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval17.synt b/eval-final-projet/output/eval17.synt new file mode 100644 index 0000000..812c711 --- /dev/null +++ b/eval-final-projet/output/eval17.synt @@ -0,0 +1,222 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $a + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + $a + + + + EGAL + + + + + + + + + $a + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/output/eval17.tab b/eval-final-projet/output/eval17.tab new file mode 100644 index 0000000..91bc69d --- /dev/null +++ b/eval-final-projet/output/eval17.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval18.asynt b/eval-final-projet/output/eval18.asynt new file mode 100644 index 0000000..eae93f6 --- /dev/null +++ b/eval-final-projet/output/eval18.asynt @@ -0,0 +1,107 @@ + + + $t0 + + $t1 + + $123 + + $ + + $$ + + $$$ + + $f + + $_ + + + + + + + + + + + f + + $$ + + + $$$ + + $f + + $_ + + + + + + $ + + plus + + plus + + $123 + + + $_ + + + + $$ + + + + + + + $ + + + + + + + + main + + + $t0 + 1 + + + + $123 + + plus + + $t0 + + 0 + + + + + + f + + + $123 + + + + + + + + + + + + + diff --git a/eval-final-projet/output/eval18.lex b/eval-final-projet/output/eval18.lex new file mode 100644 index 0000000..628d3be --- /dev/null +++ b/eval-final-projet/output/eval18.lex @@ -0,0 +1,74 @@ +entier mot_clef entier +$t0 id_variable $t0 +, symbole VIRGULE +entier mot_clef entier +$t1 id_variable $t1 +, symbole VIRGULE +entier mot_clef entier +$123 id_variable $123 +, symbole VIRGULE +entier mot_clef entier +$ id_variable $ +, symbole VIRGULE +entier mot_clef entier +$$ id_variable $$ +, symbole VIRGULE +entier mot_clef entier +$$$ id_variable $$$ +, symbole VIRGULE +entier mot_clef entier +$f id_variable $f +, symbole VIRGULE +entier mot_clef entier +$_ id_variable $_ +; symbole POINT_VIRGULE +f id_fonction f +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$$ id_variable $$ +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$$$ id_variable $$$ +, symbole VIRGULE +entier mot_clef entier +$f id_variable $f +, symbole VIRGULE +entier mot_clef entier +$_ id_variable $_ +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$ id_variable $ += symbole EGAL +$123 id_variable $123 ++ symbole PLUS +$_ id_variable $_ ++ symbole PLUS +$$ id_variable $$ +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$ id_variable $ +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$t0 id_variable $t0 += symbole EGAL +1 nombre 1 +; symbole POINT_VIRGULE +$123 id_variable $123 += symbole EGAL +$t0 id_variable $t0 ++ symbole PLUS +0 nombre 0 +; symbole POINT_VIRGULE +f id_fonction f +( symbole PARENTHESE_OUVRANTE +$123 id_variable $123 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval18.mips b/eval-final-projet/output/eval18.mips new file mode 100644 index 0000000..aa464a5 --- /dev/null +++ b/eval-final-projet/output/eval18.mips @@ -0,0 +1,108 @@ +.data +$$t0: .space 4 +$$t1: .space 4 +$$123: .space 4 +$$: .space 4 +$$$: .space 4 +$$$$: .space 4 +$$f: .space 4 +$$_: .space 4 +.text +__start: +jal main +li $v0, 10 +syscall +f : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 +subi $sp, $sp, 4 +subi $sp, $sp, 4 +lw $t0, $$123 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, -16($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +add $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 4($fp) #variable argument $$ +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +add $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$ +lw $t0, $$ +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +addi $sp, $sp 12 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$t0 +lw $t0, $$t0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +add $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$123 +subi $sp, $sp, 4 #Val Retour +lw $t0, $$123 +subi $sp, $sp, 4 +sw $t0, 0($sp) +jal f +addi $sp, $sp, 4 #désalocation des arguments +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval18.synt b/eval-final-projet/output/eval18.synt new file mode 100644 index 0000000..0adb6ca --- /dev/null +++ b/eval-final-projet/output/eval18.synt @@ -0,0 +1,401 @@ + + + + + entier + $t0 + + + + + VIRGULE + + entier + $t1 + + + + + VIRGULE + + entier + $123 + + + + + VIRGULE + + entier + $ + + + + + VIRGULE + + entier + $$ + + + + + VIRGULE + + entier + $$$ + + + + + VIRGULE + + entier + $f + + + + + VIRGULE + + entier + $_ + + + + + + + + + + + + + + POINT_VIRGULE + + + + f + + PARENTHESE_OUVRANTE + + + + entier + $$ + + + + + + + + PARENTHESE_FERMANTE + + + + + entier + $$$ + + + + + VIRGULE + + entier + $f + + + + + VIRGULE + + entier + $_ + + + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $ + + + + EGAL + + + + + + + + + $123 + + + + + + + + + PLUS + + + + $_ + + + + + + + + + PLUS + + + + $$ + + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $ + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $t0 + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $123 + + + + EGAL + + + + + + + + + $t0 + + + + + + + + + PLUS + + + 0 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + f + PARENTHESE_OUVRANTE + + + + + + + + + + $123 + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/output/eval18.tab b/eval-final-projet/output/eval18.tab new file mode 100644 index 0000000..028ddd4 --- /dev/null +++ b/eval-final-projet/output/eval18.tab @@ -0,0 +1,31 @@ +------------------------------------------ +base = 9 +sommet = 13 +0 $t0 GLOBALE ENTIER 0 -1 +1 $t1 GLOBALE ENTIER 4 -1 +2 $123 GLOBALE ENTIER 8 -1 +3 $ GLOBALE ENTIER 12 -1 +4 $$ GLOBALE ENTIER 16 -1 +5 $$$ GLOBALE ENTIER 20 -1 +6 $f GLOBALE ENTIER 24 -1 +7 $_ GLOBALE ENTIER 28 -1 +8 f GLOBALE FONCTION 0 1 +9 $$ ARGUMENT ENTIER 0 -1 +10 $$$ LOCALE ENTIER 0 -1 +11 $f LOCALE ENTIER 4 -1 +12 $_ LOCALE ENTIER 8 -1 +------------------------------------------ +------------------------------------------ +base = 10 +sommet = 10 +0 $t0 GLOBALE ENTIER 0 -1 +1 $t1 GLOBALE ENTIER 4 -1 +2 $123 GLOBALE ENTIER 8 -1 +3 $ GLOBALE ENTIER 12 -1 +4 $$ GLOBALE ENTIER 16 -1 +5 $$$ GLOBALE ENTIER 20 -1 +6 $f GLOBALE ENTIER 24 -1 +7 $_ GLOBALE ENTIER 28 -1 +8 f GLOBALE FONCTION 0 1 +9 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval19.asynt b/eval-final-projet/output/eval19.asynt new file mode 100644 index 0000000..edf971b --- /dev/null +++ b/eval-final-projet/output/eval19.asynt @@ -0,0 +1,16 @@ + + + + main + + + + et + 1 + 2 + + + + + + diff --git a/eval-final-projet/output/eval19.lex b/eval-final-projet/output/eval19.lex new file mode 100644 index 0000000..b89d57d --- /dev/null +++ b/eval-final-projet/output/eval19.lex @@ -0,0 +1,13 @@ +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +& symbole ET +2 nombre 2 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval19.mips b/eval-final-projet/output/eval19.mips new file mode 100644 index 0000000..4c3f4c9 --- /dev/null +++ b/eval-final-projet/output/eval19.mips @@ -0,0 +1,46 @@ +.data +.text +__start: +jal main +li $v0, 10 +syscall +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t1, 0($sp) +addi $sp, $sp, 4 +beq $zero, $t1, e1 +li $t0, 2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +beq $zero, $t2, e1 +and $t0, $t1, $t2 +j e0 + e1 : +li $t0 0 + e0 : +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval19.synt b/eval-final-projet/output/eval19.synt new file mode 100644 index 0000000..3f15bda --- /dev/null +++ b/eval-final-projet/output/eval19.synt @@ -0,0 +1,80 @@ + + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 1 + + + + + + + + + + + + + ET + + + + + + 2 + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/output/eval19.tab b/eval-final-projet/output/eval19.tab new file mode 100644 index 0000000..2a3c2e8 --- /dev/null +++ b/eval-final-projet/output/eval19.tab @@ -0,0 +1,5 @@ +------------------------------------------ +base = 1 +sommet = 1 +0 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval2-err.synt.xml b/eval-final-projet/output/eval2-err.synt.xml new file mode 100644 index 0000000..9280285 --- /dev/null +++ b/eval-final-projet/output/eval2-err.synt.xml @@ -0,0 +1,79 @@ +.data +.text +__start: +jal main +li $v0, 10 +syscall +add : +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 +add $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0 12($fp) #Adresse de retour +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +jr $ra +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 +subi $sp, $sp, 4 +subi $sp, $sp, 4 +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -8($fp) #variable locale +li $t0, 2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -12($fp) #variable locale +li $t0, 3 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -16($fp) #variable locale +subi $sp, $sp, 4 #Val Retour +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, -12($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, -16($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +Nombre Argument différent pour l'appel à add diff --git a/eval-final-projet/output/eval2.asynt b/eval-final-projet/output/eval2.asynt new file mode 100644 index 0000000..3f2aace --- /dev/null +++ b/eval-final-projet/output/eval2.asynt @@ -0,0 +1,63 @@ + + + $i + + $carre + + + + + main + + + $i + 0 + + + + + inf + + $i + + 10 + + + + $carre + + fois + + $i + + + $i + + + + + + + $carre + + + + + $i + + plus + + $i + + 1 + + + + + + + + + + + diff --git a/eval-final-projet/output/eval2.lex b/eval-final-projet/output/eval2.lex new file mode 100644 index 0000000..cbdea9f --- /dev/null +++ b/eval-final-projet/output/eval2.lex @@ -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 diff --git a/eval-final-projet/output/eval2.mips b/eval-final-projet/output/eval2.mips new file mode 100644 index 0000000..56e0446 --- /dev/null +++ b/eval-final-projet/output/eval2.mips @@ -0,0 +1,93 @@ +.data +$$i: .space 4 +$$carre: .space 4 +.text +__start: +jal main +li $v0, 10 +syscall +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$i +e0: +lw $t0, $$i +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 10 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +li $t0, 1 +blt $t1, $t2 e2 +li $t0, 0 +e2: +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $0 e1 +lw $t0, $$i +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, $$i +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +mult $t1, $t2 +mflo $t0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$carre +lw $t0, $$carre +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +lw $t0, $$i +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +add $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$i +j e0 +e1: +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval2.synt b/eval-final-projet/output/eval2.synt new file mode 100644 index 0000000..c3cf0f2 --- /dev/null +++ b/eval-final-projet/output/eval2.synt @@ -0,0 +1,283 @@ + + + + + entier + $i + + + + + VIRGULE + + entier + $carre + + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $i + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $i + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + + $carre + + + + EGAL + + + + + + + + + $i + + + + + + FOIS + + + $i + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $carre + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + $i + + + + EGAL + + + + + + + + + $i + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + ACCOLADE_FERMANTE + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/output/eval2.tab b/eval-final-projet/output/eval2.tab new file mode 100644 index 0000000..f37700e --- /dev/null +++ b/eval-final-projet/output/eval2.tab @@ -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 +------------------------------------------ diff --git a/eval-final-projet/output/eval20.asynt b/eval-final-projet/output/eval20.asynt new file mode 100644 index 0000000..de7c576 --- /dev/null +++ b/eval-final-projet/output/eval20.asynt @@ -0,0 +1,93 @@ + + + + fact + + $f + + + + + ou + + egal + + $f + + 1 + + + egal + + $f + + 0 + + + + + 1 + + + + + + fois + + + fact + + + moins + + $f + + 1 + + + + + + + + $f + + + + + + + + + + main + + $a + + + + $a + + + + + + + + fact + + + $a + + + + + + + + + + + + + diff --git a/eval-final-projet/output/eval20.lex b/eval-final-projet/output/eval20.lex new file mode 100644 index 0000000..bd86f66 --- /dev/null +++ b/eval-final-projet/output/eval20.lex @@ -0,0 +1,57 @@ +fact id_fonction fact +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$f id_variable $f +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +$f id_variable $f += symbole EGAL +1 nombre 1 +| symbole OU +$f id_variable $f += symbole EGAL +0 nombre 0 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +sinon mot_clef sinon +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +fact id_fonction fact +( symbole PARENTHESE_OUVRANTE +$f id_variable $f +- symbole MOINS +1 nombre 1 +) symbole PARENTHESE_FERMANTE +* symbole FOIS +$f id_variable $f +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +{ 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 +fact id_fonction fact +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval20.mips b/eval-final-projet/output/eval20.mips new file mode 100644 index 0000000..0cf87dd --- /dev/null +++ b/eval-final-projet/output/eval20.mips @@ -0,0 +1,156 @@ +.data +.text +__start: +jal main +li $v0, 10 +syscall +fact : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +lw $t0, 4($fp) #variable argument $f +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +li $t0, 1 +beq $t1, $t2 e4 +li $t0, 0 +e4: +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t1, 0($sp) +addi $sp, $sp, 4 +beq $zero, $t1, e0 +j e2 +e0 : +lw $t0, 4($fp) #variable argument $f +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +li $t0, 1 +beq $t1, $t2 e5 +li $t0, 0 +e5: +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +e2 : +or $t0, $t1, $t2 +j e3 +e1 : +or $t0, $t1, $t2 +e3 : +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $zero e6 +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0 8($fp) #Adresse de retour +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +jr $ra +j e7 +e6: +subi $sp, $sp, 4 #Val Retour +lw $t0, 4($fp) #variable argument $f +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +sub $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +jal fact +addi $sp, $sp, 4 #désalocation des arguments +lw $t0, 4($fp) #variable argument $f +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +mult $t1, $t2 +mflo $t0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0 8($fp) #Adresse de retour +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +jr $ra +e7: +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 +li $v0 5 +syscall +move $t0, $v0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 #Val Retour +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +jal fact +addi $sp, $sp, 4 #désalocation des arguments +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +addi $sp, $sp 4 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval20.synt b/eval-final-projet/output/eval20.synt new file mode 100644 index 0000000..8c37de9 --- /dev/null +++ b/eval-final-projet/output/eval20.synt @@ -0,0 +1,408 @@ + + + + + + fact + + PARENTHESE_OUVRANTE + + + + entier + $f + + + + + + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + + $f + + + + + + + + + + + + EGAL + + + + 1 + + + + + + + + + + + + + + + + + OU + + + + + + + + $f + + + + + + + + + + + + EGAL + + + + 0 + + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + fact + PARENTHESE_OUVRANTE + + + + + + + + + + $f + + + + + + + + + MOINS + + + 1 + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + FOIS + + + $f + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + fact + PARENTHESE_OUVRANTE + + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/output/eval20.tab b/eval-final-projet/output/eval20.tab new file mode 100644 index 0000000..8d8ab1f --- /dev/null +++ b/eval-final-projet/output/eval20.tab @@ -0,0 +1,13 @@ +------------------------------------------ +base = 1 +sommet = 2 +0 fact GLOBALE FONCTION 0 1 +1 $f ARGUMENT ENTIER 0 -1 +------------------------------------------ +------------------------------------------ +base = 2 +sommet = 3 +0 fact GLOBALE FONCTION 0 1 +1 main GLOBALE FONCTION 0 0 +2 $a LOCALE ENTIER 0 -1 +------------------------------------------ diff --git a/eval-final-projet/output/eval21.asynt b/eval-final-projet/output/eval21.asynt new file mode 100644 index 0000000..292ebb7 --- /dev/null +++ b/eval-final-projet/output/eval21.asynt @@ -0,0 +1,85 @@ + + + + fibo + + $n + + + + + inf + + $n + + 2 + + + + 1 + + + + + + plus + + + fibo + + + moins + + $n + + 1 + + + + + + + + + fibo + + + moins + + $n + + 2 + + + + + + + + + + + + + + + main + + + + + fibo + + + + + + + + + + + + + + diff --git a/eval-final-projet/output/eval21.lex b/eval-final-projet/output/eval21.lex new file mode 100644 index 0000000..40e933b --- /dev/null +++ b/eval-final-projet/output/eval21.lex @@ -0,0 +1,51 @@ +fibo id_fonction fibo +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$n id_variable $n +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +$n id_variable $n +< symbole INFERIEUR +2 nombre 2 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +sinon mot_clef sinon +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +fibo id_fonction fibo +( symbole PARENTHESE_OUVRANTE +$n id_variable $n +- symbole MOINS +1 nombre 1 +) symbole PARENTHESE_FERMANTE ++ symbole PLUS +fibo id_fonction fibo +( symbole PARENTHESE_OUVRANTE +$n id_variable $n +- symbole MOINS +2 nombre 2 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +fibo id_fonction fibo +( symbole PARENTHESE_OUVRANTE +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval21.mips b/eval-final-projet/output/eval21.mips new file mode 100644 index 0000000..7d118aa --- /dev/null +++ b/eval-final-projet/output/eval21.mips @@ -0,0 +1,130 @@ +.data +.text +__start: +jal main +li $v0, 10 +syscall +fibo : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +lw $t0, 4($fp) #variable argument $n +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +li $t0, 1 +blt $t1, $t2 e0 +li $t0, 0 +e0: +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $zero e1 +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0 8($fp) #Adresse de retour +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +jr $ra +j e2 +e1: +subi $sp, $sp, 4 #Val Retour +lw $t0, 4($fp) #variable argument $n +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +sub $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +jal fibo +addi $sp, $sp, 4 #désalocation des arguments +subi $sp, $sp, 4 #Val Retour +lw $t0, 4($fp) #variable argument $n +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +sub $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +jal fibo +addi $sp, $sp, 4 #désalocation des arguments +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +add $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0 8($fp) #Adresse de retour +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +jr $ra +e2: +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 #Val Retour +li $v0 5 +syscall +move $t0, $v0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +jal fibo +addi $sp, $sp, 4 #désalocation des arguments +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval21.synt b/eval-final-projet/output/eval21.synt new file mode 100644 index 0000000..1ca6407 --- /dev/null +++ b/eval-final-projet/output/eval21.synt @@ -0,0 +1,360 @@ + + + + + + fibo + + PARENTHESE_OUVRANTE + + + + entier + $n + + + + + + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + + $n + + + + + + + + + + + + INFERIEUR + + + + 2 + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + fibo + PARENTHESE_OUVRANTE + + + + + + + + + + $n + + + + + + + + + MOINS + + + 1 + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + PLUS + + + + fibo + PARENTHESE_OUVRANTE + + + + + + + + + + $n + + + + + + + + + MOINS + + + 2 + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + fibo + PARENTHESE_OUVRANTE + + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/output/eval21.tab b/eval-final-projet/output/eval21.tab new file mode 100644 index 0000000..9245325 --- /dev/null +++ b/eval-final-projet/output/eval21.tab @@ -0,0 +1,12 @@ +------------------------------------------ +base = 1 +sommet = 2 +0 fibo GLOBALE FONCTION 0 1 +1 $n ARGUMENT ENTIER 0 -1 +------------------------------------------ +------------------------------------------ +base = 2 +sommet = 2 +0 fibo GLOBALE FONCTION 0 1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval22.asynt b/eval-final-projet/output/eval22.asynt new file mode 100644 index 0000000..efeef4e --- /dev/null +++ b/eval-final-projet/output/eval22.asynt @@ -0,0 +1,161 @@ + + + $a + + $b + + + + + pgcd + + $a + + $b + + + + $c + + + + $c + + moins + + $a + + + fois + + divise + + $a + + + $b + + + + $b + + + + + + + + egal + + $c + + 0 + + + + + $b + + + + + + + + pgcd + + + $b + + + + $c + + + + + + + + + + + + + + + + main + + + $a + + + + + + $b + + + + + + + inf + + $b + + + $a + + + + + + + pgcd + + + $a + + + + $b + + + + + + + + + + + + + + pgcd + + + $b + + + + $a + + + + + + + + + + + + + + + + + diff --git a/eval-final-projet/output/eval22.lex b/eval-final-projet/output/eval22.lex new file mode 100644 index 0000000..d4220d6 --- /dev/null +++ b/eval-final-projet/output/eval22.lex @@ -0,0 +1,100 @@ +entier mot_clef entier +$a id_variable $a +, symbole VIRGULE +entier mot_clef entier +$b id_variable $b +; symbole POINT_VIRGULE +pgcd id_fonction pgcd +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$a id_variable $a +, symbole VIRGULE +entier mot_clef entier +$b id_variable $b +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$c id_variable $c +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$c id_variable $c += symbole EGAL +$a id_variable $a +- symbole MOINS +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +/ symbole DIVISE +$b id_variable $b +) symbole PARENTHESE_FERMANTE +* symbole FOIS +$b id_variable $b +; symbole POINT_VIRGULE +si mot_clef si +$c id_variable $c += symbole EGAL +0 nombre 0 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +$b id_variable $b +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +sinon mot_clef sinon +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +pgcd id_fonction pgcd +( symbole PARENTHESE_OUVRANTE +$b id_variable $b +, symbole VIRGULE +$c id_variable $c +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE +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 +$b id_variable $b += symbole EGAL +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +si mot_clef si +$b id_variable $b +< symbole INFERIEUR +$a id_variable $a +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +pgcd id_fonction pgcd +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +, symbole VIRGULE +$b id_variable $b +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +sinon mot_clef sinon +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +pgcd id_fonction pgcd +( symbole PARENTHESE_OUVRANTE +$b id_variable $b +, symbole VIRGULE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval22.mips b/eval-final-projet/output/eval22.mips new file mode 100644 index 0000000..89fd3f8 --- /dev/null +++ b/eval-final-projet/output/eval22.mips @@ -0,0 +1,197 @@ +.data +$$a: .space 4 +$$b: .space 4 +.text +__start: +jal main +li $v0, 10 +syscall +pgcd : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 +lw $t0, 8($fp) #variable argument $a +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 8($fp) #variable argument $a +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 4($fp) #variable argument $b +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +div $t1, $t2 +mflo $t0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 4($fp) #variable argument $b +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +mult $t1, $t2 +mflo $t0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +sub $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -8($fp) #variable locale +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +li $t0, 1 +beq $t1, $t2 e0 +li $t0, 0 +e0: +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $zero e1 +lw $t0, 4($fp) #variable argument $b +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0 12($fp) #Adresse de retour +addi $sp, $sp 4 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +jr $ra +j e2 +e1: +subi $sp, $sp, 4 #Val Retour +lw $t0, 4($fp) #variable argument $b +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +jal pgcd +addi $sp, $sp, 8 #désalocation des arguments +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0 12($fp) #Adresse de retour +addi $sp, $sp 4 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +jr $ra +e2: +addi $sp, $sp 4 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $v0 5 +syscall +move $t0, $v0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$a +li $v0 5 +syscall +move $t0, $v0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$b +lw $t0, $$b +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, $$a +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +li $t0, 1 +blt $t1, $t2 e3 +li $t0, 0 +e3: +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $zero e4 +subi $sp, $sp, 4 #Val Retour +lw $t0, $$a +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, $$b +subi $sp, $sp, 4 +sw $t0, 0($sp) +jal pgcd +addi $sp, $sp, 8 #désalocation des arguments +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +j e5 +e4: +subi $sp, $sp, 4 #Val Retour +lw $t0, $$b +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, $$a +subi $sp, $sp, 4 +sw $t0, 0($sp) +jal pgcd +addi $sp, $sp, 8 #désalocation des arguments +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +e5: +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval22.synt b/eval-final-projet/output/eval22.synt new file mode 100644 index 0000000..9f90605 --- /dev/null +++ b/eval-final-projet/output/eval22.synt @@ -0,0 +1,759 @@ + + + + + entier + $a + + + + + VIRGULE + + entier + $b + + + + + + + + POINT_VIRGULE + + + + pgcd + + PARENTHESE_OUVRANTE + + + + entier + $a + + + + + VIRGULE + + entier + $b + + + + + + + + + PARENTHESE_FERMANTE + + + + + entier + $c + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $c + + + + EGAL + + + + + + + + + $a + + + + + + + + + MOINS + + + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + DIVISE + + + $b + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + FOIS + + + $b + + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + si + + + + + + + + + $c + + + + + + + + + + + + EGAL + + + + 0 + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + pgcd + PARENTHESE_OUVRANTE + + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $c + + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $b + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + si + + + + + + + + + $b + + + + + + + + + + + + INFERIEUR + + + + + $a + + + + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + pgcd + PARENTHESE_OUVRANTE + + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + pgcd + PARENTHESE_OUVRANTE + + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/output/eval22.tab b/eval-final-projet/output/eval22.tab new file mode 100644 index 0000000..a0255dd --- /dev/null +++ b/eval-final-projet/output/eval22.tab @@ -0,0 +1,18 @@ +------------------------------------------ +base = 3 +sommet = 6 +0 $a GLOBALE ENTIER 0 -1 +1 $b GLOBALE ENTIER 4 -1 +2 pgcd GLOBALE FONCTION 0 2 +3 $a ARGUMENT ENTIER 0 -1 +4 $b ARGUMENT ENTIER 4 -1 +5 $c LOCALE ENTIER 0 -1 +------------------------------------------ +------------------------------------------ +base = 4 +sommet = 4 +0 $a GLOBALE ENTIER 0 -1 +1 $b GLOBALE ENTIER 4 -1 +2 pgcd GLOBALE FONCTION 0 2 +3 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval23.asynt b/eval-final-projet/output/eval23.asynt new file mode 100644 index 0000000..c46432c --- /dev/null +++ b/eval-final-projet/output/eval23.asynt @@ -0,0 +1,22 @@ + + + + main + + + + ou + 1 + + + + + + 5 + + + + + + + diff --git a/eval-final-projet/output/eval23.lex b/eval-final-projet/output/eval23.lex new file mode 100644 index 0000000..d384bb1 --- /dev/null +++ b/eval-final-projet/output/eval23.lex @@ -0,0 +1,20 @@ +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +1 nombre 1 +| symbole OU +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +5 nombre 5 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval23.mips b/eval-final-projet/output/eval23.mips new file mode 100644 index 0000000..11fffbc --- /dev/null +++ b/eval-final-projet/output/eval23.mips @@ -0,0 +1,58 @@ +.data +.text +__start: +jal main +li $v0, 10 +syscall +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t1, 0($sp) +addi $sp, $sp, 4 +beq $zero, $t1, e0 +j e2 +e0 : +li $v0 5 +syscall +move $t0, $v0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +or $t0, $t1, $t2 +j e3 +e2 : +move $t0 $t1 +e3 : +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $zero e4 +li $t0, 5 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +j e5 +e4: +e5: +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval23.synt b/eval-final-projet/output/eval23.synt new file mode 100644 index 0000000..08c8ac7 --- /dev/null +++ b/eval-final-projet/output/eval23.synt @@ -0,0 +1,127 @@ + + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + 1 + + + + + + + + + + + + + + + + OU + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 5 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/output/eval23.tab b/eval-final-projet/output/eval23.tab new file mode 100644 index 0000000..2a3c2e8 --- /dev/null +++ b/eval-final-projet/output/eval23.tab @@ -0,0 +1,5 @@ +------------------------------------------ +base = 1 +sommet = 1 +0 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval24.asynt b/eval-final-projet/output/eval24.asynt new file mode 100644 index 0000000..7f3b530 --- /dev/null +++ b/eval-final-projet/output/eval24.asynt @@ -0,0 +1,65 @@ + + + + main + + + + ou + 3 + 4 + + + + + + et + 3 + 6 + + + + + + ou + 3 + + + + + + + + et + 3 + + + + + + + + ou + 0 + + + + + + + + et + 0 + + + + + + + + + + + + + diff --git a/eval-final-projet/output/eval24.lex b/eval-final-projet/output/eval24.lex new file mode 100644 index 0000000..a840965 --- /dev/null +++ b/eval-final-projet/output/eval24.lex @@ -0,0 +1,56 @@ +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +3 nombre 3 +| symbole OU +4 nombre 4 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +3 nombre 3 +& symbole ET +6 nombre 6 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +3 nombre 3 +| symbole OU +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +3 nombre 3 +& symbole ET +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +0 nombre 0 +| symbole OU +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +0 nombre 0 +& symbole ET +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval24.mips b/eval-final-projet/output/eval24.mips new file mode 100644 index 0000000..c010107 --- /dev/null +++ b/eval-final-projet/output/eval24.mips @@ -0,0 +1,192 @@ +.data +.text +__start: +jal main +li $v0, 10 +syscall +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 3 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t1, 0($sp) +addi $sp, $sp, 4 +beq $zero, $t1, e0 +j e2 +e0 : +li $t0, 4 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +or $t0, $t1, $t2 +j e3 +e2 : +move $t0 $t1 +e3 : +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +li $t0, 3 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t1, 0($sp) +addi $sp, $sp, 4 +beq $zero, $t1, e5 +li $t0, 6 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +beq $zero, $t2, e5 +and $t0, $t1, $t2 +j e4 + e5 : +li $t0 0 + e4 : +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +li $t0, 3 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t1, 0($sp) +addi $sp, $sp, 4 +beq $zero, $t1, e6 +j e8 +e6 : +li $v0 5 +syscall +move $t0, $v0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +or $t0, $t1, $t2 +j e9 +e8 : +move $t0 $t1 +e9 : +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +li $t0, 3 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t1, 0($sp) +addi $sp, $sp, 4 +beq $zero, $t1, e11 +li $v0 5 +syscall +move $t0, $v0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +beq $zero, $t2, e11 +and $t0, $t1, $t2 +j e10 + e11 : +li $t0 0 + e10 : +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t1, 0($sp) +addi $sp, $sp, 4 +beq $zero, $t1, e12 +j e14 +e12 : +li $v0 5 +syscall +move $t0, $v0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +or $t0, $t1, $t2 +j e15 +e14 : +move $t0 $t1 +e15 : +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t1, 0($sp) +addi $sp, $sp, 4 +beq $zero, $t1, e17 +li $v0 5 +syscall +move $t0, $v0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +beq $zero, $t2, e17 +and $t0, $t1, $t2 +j e16 + e17 : +li $t0 0 + e16 : +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval24.synt b/eval-final-projet/output/eval24.synt new file mode 100644 index 0000000..d08fc77 --- /dev/null +++ b/eval-final-projet/output/eval24.synt @@ -0,0 +1,375 @@ + + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 3 + + + + + + + + + + + + + + + + OU + + + + + + + 4 + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 3 + + + + + + + + + + + + + ET + + + + + + 6 + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 3 + + + + + + + + + + + + + + + + OU + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 3 + + + + + + + + + + + + + ET + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 0 + + + + + + + + + + + + + + + + OU + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 0 + + + + + + + + + + + + + ET + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/output/eval24.tab b/eval-final-projet/output/eval24.tab new file mode 100644 index 0000000..2a3c2e8 --- /dev/null +++ b/eval-final-projet/output/eval24.tab @@ -0,0 +1,5 @@ +------------------------------------------ +base = 1 +sommet = 1 +0 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval25.synt b/eval-final-projet/output/eval25.synt new file mode 100644 index 0000000..e69de29 diff --git a/eval-final-projet/output/eval3-err.synt.xml b/eval-final-projet/output/eval3-err.synt.xml new file mode 100644 index 0000000..b6a708d --- /dev/null +++ b/eval-final-projet/output/eval3-err.synt.xml @@ -0,0 +1,13 @@ +.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) +Fonction procedure introuvable diff --git a/eval-final-projet/output/eval3.asynt b/eval-final-projet/output/eval3.asynt new file mode 100644 index 0000000..5a3244d --- /dev/null +++ b/eval-final-projet/output/eval3.asynt @@ -0,0 +1,19 @@ + + + $a + + + + main + + + + fois + 5 + 2 + + + + + + diff --git a/eval-final-projet/output/eval3.lex b/eval-final-projet/output/eval3.lex new file mode 100644 index 0000000..a569a71 --- /dev/null +++ b/eval-final-projet/output/eval3.lex @@ -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 diff --git a/eval-final-projet/output/eval3.mips b/eval-final-projet/output/eval3.mips new file mode 100644 index 0000000..74cae41 --- /dev/null +++ b/eval-final-projet/output/eval3.mips @@ -0,0 +1,42 @@ +.data +$$a: .space 4 +.text +__start: +jal main +li $v0, 10 +syscall +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 5 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +mult $t1, $t2 +mflo $t0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval3.synt b/eval-final-projet/output/eval3.synt new file mode 100644 index 0000000..4d058f0 --- /dev/null +++ b/eval-final-projet/output/eval3.synt @@ -0,0 +1,77 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 5 + + + FOIS + + 2 + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/output/eval3.tab b/eval-final-projet/output/eval3.tab new file mode 100644 index 0000000..91bc69d --- /dev/null +++ b/eval-final-projet/output/eval3.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval4-err.synt.xml b/eval-final-projet/output/eval4-err.synt.xml new file mode 100644 index 0000000..f4723a6 --- /dev/null +++ b/eval-final-projet/output/eval4-err.synt.xml @@ -0,0 +1,16 @@ +.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) +Variable $a non déclaré diff --git a/eval-final-projet/output/eval4.asynt b/eval-final-projet/output/eval4.asynt new file mode 100644 index 0000000..e419965 --- /dev/null +++ b/eval-final-projet/output/eval4.asynt @@ -0,0 +1,106 @@ + + + + max + + $a + + $b + + + + + + inf + + $a + + + $b + + + + + + $b + + + + + + + + $a + + + + + + + + main + + $v_1 + + $v_2 + + + + + $v_1 + + + + + + $v_2 + + + + + + + egal + + + max + + + $v_1 + + + + $v_2 + + + + + + + + + $v_1 + + + + + + $v_1 + + + + + + + $v_2 + + + + + + + + + + + diff --git a/eval-final-projet/output/eval4.lex b/eval-final-projet/output/eval4.lex new file mode 100644 index 0000000..5b96821 --- /dev/null +++ b/eval-final-projet/output/eval4.lex @@ -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 diff --git a/eval-final-projet/output/eval4.mips b/eval-final-projet/output/eval4.mips new file mode 100644 index 0000000..187d585 --- /dev/null +++ b/eval-final-projet/output/eval4.mips @@ -0,0 +1,146 @@ +.data +.text +__start: +jal main +li $v0, 10 +syscall +max : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +lw $t0, 8($fp) #variable argument $a +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 4($fp) #variable argument $b +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +li $t0, 1 +blt $t1, $t2 e0 +li $t0, 0 +e0: +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $zero e1 +lw $t0, 4($fp) #variable argument $b +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0 12($fp) #Adresse de retour +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +jr $ra +j e2 +e1: +e2: +lw $t0, 8($fp) #variable argument $a +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0 12($fp) #Adresse de retour +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +jr $ra +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 +subi $sp, $sp, 4 +li $v0 5 +syscall +move $t0, $v0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -8($fp) #variable locale +li $v0 5 +syscall +move $t0, $v0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -12($fp) #variable locale +subi $sp, $sp, 4 #Val Retour +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, -12($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +jal max +addi $sp, $sp, 8 #désalocation des arguments +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +li $t0, 1 +beq $t1, $t2 e3 +li $t0, 0 +e3: +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $zero e4 +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +j e5 +e4: +lw $t0, -12($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +e5: +addi $sp, $sp 8 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval4.synt b/eval-final-projet/output/eval4.synt new file mode 100644 index 0000000..08f06d7 --- /dev/null +++ b/eval-final-projet/output/eval4.synt @@ -0,0 +1,513 @@ + + + + + + max + + PARENTHESE_OUVRANTE + + + + entier + $a + + + + + VIRGULE + + entier + $b + + + + + + + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + + $a + + + + + + + + + + + + INFERIEUR + + + + + $b + + + + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + retour + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + entier + $v_1 + + + + + VIRGULE + + entier + $v_2 + + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $v_1 + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $v_2 + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + si + + + + + + + + + max + PARENTHESE_OUVRANTE + + + + + + + + + + $v_1 + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $v_2 + + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + EGAL + + + + + $v_1 + + + + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $v_1 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $v_2 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/output/eval4.tab b/eval-final-projet/output/eval4.tab new file mode 100644 index 0000000..3d3086c --- /dev/null +++ b/eval-final-projet/output/eval4.tab @@ -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 +------------------------------------------ diff --git a/eval-final-projet/output/eval5-err.synt.xml b/eval-final-projet/output/eval5-err.synt.xml new file mode 100644 index 0000000..a746856 --- /dev/null +++ b/eval-final-projet/output/eval5-err.synt.xml @@ -0,0 +1,3 @@ +.data +$$a: .space 4 +Variable $a déjà déclaré diff --git a/eval-final-projet/output/eval5.asynt b/eval-final-projet/output/eval5.asynt new file mode 100644 index 0000000..f1106e5 --- /dev/null +++ b/eval-final-projet/output/eval5.asynt @@ -0,0 +1,418 @@ + + + $tab[10] + + + + initialiser + + + + $tab + 0 + + 8 + + + + + $tab + 1 + + 6 + + + + + $tab + 2 + + 9 + + + + + $tab + 3 + + 9 + + + + + $tab + 4 + + 4 + + + + + $tab + 5 + + 2 + + + + + $tab + 6 + + 3 + + + + + $tab + 7 + + 1 + + + + + $tab + 8 + + 4 + + + + + $tab + 9 + + 5 + + + + + + + + + + + + + + + afficher + + $n + + + $i + + + + $i + 0 + + + + + inf + + $i + + + $n + + + + + + + $tab + + $i + + + + + + + $i + + plus + + $i + + 1 + + + + + + + + 0 + + + + + + + + echanger + + $i + + $j + + + + $temp + + + + $temp + + + $tab + + $j + + + + + + + + $tab + + $j + + + + + $tab + + $i + + + + + + + + $tab + + $i + + + + $temp + + + + + + + + + trier + + $n + + + $echange + + $j + + $m + + + + + + $m + + $n + + + + + $echange + 1 + + + + + egal + + $echange + + 1 + + + + $echange + 0 + + + + $j + 0 + + + + + inf + + $j + + + moins + + $m + + 1 + + + + + + inf + + + $tab + + plus + + $j + + 1 + + + + + + $tab + + $j + + + + + + + + echanger + + + $j + + + + plus + + $j + + 1 + + + + + + + + + + $echange + 1 + + + + + + + $j + + plus + + $j + + 1 + + + + + + + + $m + + moins + + $m + + 1 + + + + + + + + + + + + + + main + + + + initialiser + + + + + + + + afficher + + 10 + + + + + + + + + trier + + 10 + + + + + + + + + afficher + + 10 + + + + + + + + + + + + + + + + diff --git a/eval-final-projet/output/eval5.lex b/eval-final-projet/output/eval5.lex new file mode 100644 index 0000000..457125e --- /dev/null +++ b/eval-final-projet/output/eval5.lex @@ -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 diff --git a/eval-final-projet/output/eval5.mips b/eval-final-projet/output/eval5.mips new file mode 100644 index 0000000..3557338 --- /dev/null +++ b/eval-final-projet/output/eval5.mips @@ -0,0 +1,527 @@ +.data +$$tab: .space 40 +.text +__start: +jal main +li $v0, 10 +syscall +initialiser : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 8 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$tab($t4) +li $t0, 6 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$tab($t4) +li $t0, 9 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$tab($t4) +li $t0, 9 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 3 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$tab($t4) +li $t0, 4 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 4 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$tab($t4) +li $t0, 2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 5 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$tab($t4) +li $t0, 3 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 6 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$tab($t4) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 7 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$tab($t4) +li $t0, 4 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 8 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$tab($t4) +li $t0, 5 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 9 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$tab($t4) +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +afficher : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -8($fp) #variable locale +e0: +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 4($fp) #variable argument $n +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +li $t0, 1 +blt $t1, $t2 e2 +li $t0, 0 +e2: +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $0 e1 +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, $$tab($t4) +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +add $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -8($fp) #variable locale +j e0 +e1: +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +addi $sp, $sp 4 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +echanger : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 +lw $t0, 4($fp) #variable argument $j +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, $$tab($t4) +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -8($fp) #variable locale +lw $t0, 8($fp) #variable argument $i +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, $$tab($t4) +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 4($fp) #variable argument $j +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$tab($t4) +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 8($fp) #variable argument $i +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, $$tab($t4) +addi $sp, $sp 4 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +trier : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 +subi $sp, $sp, 4 +subi $sp, $sp, 4 +lw $t0, 4($fp) #variable argument $n +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -16($fp) #variable locale +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -8($fp) #variable locale +e3: +lw $t0, -8($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +li $t0, 1 +beq $t1, $t2 e5 +li $t0, 0 +e5: +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $0 e4 +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -8($fp) #variable locale +li $t0, 0 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -12($fp) #variable locale +e6: +lw $t0, -12($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, -16($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +sub $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +li $t0, 1 +blt $t1, $t2 e8 +li $t0, 0 +e8: +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $0 e7 +lw $t0, -12($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +add $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, $$tab($t4) +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, -12($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t4, 0($sp) +addi $sp, $sp, 4 +add $t4,$t4,$t4 +add $t4,$t4,$t4 +lw $t0, $$tab($t4) +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +li $t0, 1 +blt $t1, $t2 e9 +li $t0, 0 +e9: +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +beq $t0 $zero e10 +subi $sp, $sp, 4 #Val Retour +lw $t0, -12($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, -12($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +add $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +jal echanger +addi $sp, $sp, 8 #désalocation des arguments +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -8($fp) #variable locale +j e11 +e10: +e11: +lw $t0, -12($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +add $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -12($fp) #variable locale +j e6 +e7: +lw $t0, -16($fp) #variable locale +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +sub $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +sw $t0, -16($fp) #variable locale +j e3 +e4: +addi $sp, $sp 12 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 #Val Retour +jal initialiser +subi $sp, $sp, 4 #Val Retour +li $t0, 10 +subi $sp, $sp, 4 +sw $t0, 0($sp) +jal afficher +addi $sp, $sp, 4 #désalocation des arguments +subi $sp, $sp, 4 #Val Retour +li $t0, 10 +subi $sp, $sp, 4 +sw $t0, 0($sp) +jal trier +addi $sp, $sp, 4 #désalocation des arguments +subi $sp, $sp, 4 #Val Retour +li $t0, 10 +subi $sp, $sp, 4 +sw $t0, 0($sp) +jal afficher +addi $sp, $sp, 4 #désalocation des arguments +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval5.synt b/eval-final-projet/output/eval5.synt new file mode 100644 index 0000000..77a518b --- /dev/null +++ b/eval-final-projet/output/eval5.synt @@ -0,0 +1,2146 @@ + + + + + entier + $tab + + CROCHET_OUVRANT + 10 + CROCHET_FERMANT + + + + + + POINT_VIRGULE + + + + initialiser + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 0 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 8 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 1 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 6 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 2 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 9 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 3 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 9 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 4 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 4 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 5 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 2 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 6 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 3 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 7 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 8 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 4 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 9 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 5 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + + + + + + + + ACCOLADE_FERMANTE + + + + + afficher + + PARENTHESE_OUVRANTE + + + + entier + $n + + + + + + + + PARENTHESE_FERMANTE + + + + + entier + $i + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $i + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $i + + + + + + + + + + + + INFERIEUR + + + + + $n + + + + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $i + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + $i + + + + EGAL + + + + + + + + + $i + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 0 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + + ACCOLADE_FERMANTE + + + + + echanger + + PARENTHESE_OUVRANTE + + + + entier + $i + + + + + VIRGULE + + entier + $j + + + + + + + + + PARENTHESE_FERMANTE + + + + + entier + $temp + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $temp + + + + EGAL + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $j + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $j + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $i + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $i + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + + $temp + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + ACCOLADE_FERMANTE + + + + + trier + + PARENTHESE_OUVRANTE + + + + entier + $n + + + + + + + + PARENTHESE_FERMANTE + + + + + entier + $echange + + + + + VIRGULE + + entier + $j + + + + + VIRGULE + + entier + $m + + + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $m + + + + EGAL + + + + + + + + + $n + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $echange + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $echange + + + + + + + + + + + + EGAL + + + + 1 + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + + $echange + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $j + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $j + + + + + + + + + + + + INFERIEUR + + + + + $m + + + + + + + + + MOINS + + + 1 + + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $j + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + INFERIEUR + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $j + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + + echanger + PARENTHESE_OUVRANTE + + + + + + + + + + $j + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $j + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + $echange + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + + + + $j + + + + EGAL + + + + + + + + + $j + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + + $m + + + + EGAL + + + + + + + + + $m + + + + + + + + + MOINS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + + ACCOLADE_FERMANTE + + + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + initialiser + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + afficher + PARENTHESE_OUVRANTE + + + + + + + + + 10 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + trier + PARENTHESE_OUVRANTE + + + + + + + + + 10 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + afficher + PARENTHESE_OUVRANTE + + + + + + + + + 10 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + + + ACCOLADE_FERMANTE + + + + + + + + + + diff --git a/eval-final-projet/output/eval5.tab b/eval-final-projet/output/eval5.tab new file mode 100644 index 0000000..b248a59 --- /dev/null +++ b/eval-final-projet/output/eval5.tab @@ -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 +------------------------------------------ diff --git a/eval-final-projet/output/eval6-err.synt.xml b/eval-final-projet/output/eval6-err.synt.xml new file mode 100644 index 0000000..f4723a6 --- /dev/null +++ b/eval-final-projet/output/eval6-err.synt.xml @@ -0,0 +1,16 @@ +.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) +Variable $a non déclaré diff --git a/eval-final-projet/output/eval6.asynt b/eval-final-projet/output/eval6.asynt new file mode 100644 index 0000000..c9f82a0 --- /dev/null +++ b/eval-final-projet/output/eval6.asynt @@ -0,0 +1,29 @@ + + + $a + + + + procedure + + + 1 + + + + + + main + + + + procedure + + + + + + + + + diff --git a/eval-final-projet/output/eval6.lex b/eval-final-projet/output/eval6.lex new file mode 100644 index 0000000..f54672c --- /dev/null +++ b/eval-final-projet/output/eval6.lex @@ -0,0 +1,23 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval6.mips b/eval-final-projet/output/eval6.mips new file mode 100644 index 0000000..afeb2bf --- /dev/null +++ b/eval-final-projet/output/eval6.mips @@ -0,0 +1,46 @@ +.data +$$a: .space 4 +.text +__start: +jal main +li $v0, 10 +syscall +procedure : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 #Val Retour +jal procedure +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval6.synt b/eval-final-projet/output/eval6.synt new file mode 100644 index 0000000..8451b47 --- /dev/null +++ b/eval-final-projet/output/eval6.synt @@ -0,0 +1,104 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + procedure + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 1 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + procedure + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/output/eval6.tab b/eval-final-projet/output/eval6.tab new file mode 100644 index 0000000..52a6119 --- /dev/null +++ b/eval-final-projet/output/eval6.tab @@ -0,0 +1,13 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 procedure GLOBALE FONCTION 0 0 +------------------------------------------ +------------------------------------------ +base = 3 +sommet = 3 +0 $a GLOBALE ENTIER 0 -1 +1 procedure GLOBALE FONCTION 0 0 +2 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval7-err.synt.xml b/eval-final-projet/output/eval7-err.synt.xml new file mode 100644 index 0000000..cf70be0 --- /dev/null +++ b/eval-final-projet/output/eval7-err.synt.xml @@ -0,0 +1,30 @@ +.data +.text +__start: +jal main +li $v0, 10 +syscall +procedure : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 #Val Retour +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +Nombre Argument différent pour l'appel à procedure diff --git a/eval-final-projet/output/eval7.asynt b/eval-final-projet/output/eval7.asynt new file mode 100644 index 0000000..95531e5 --- /dev/null +++ b/eval-final-projet/output/eval7.asynt @@ -0,0 +1,23 @@ + + + $a + + + + main + + + + plus + + moins + 5 + 3 + + 2 + + + + + + diff --git a/eval-final-projet/output/eval7.lex b/eval-final-projet/output/eval7.lex new file mode 100644 index 0000000..c59c081 --- /dev/null +++ b/eval-final-projet/output/eval7.lex @@ -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 +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +5 nombre 5 +- symbole MOINS +3 nombre 3 ++ symbole PLUS +2 nombre 2 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval7.mips b/eval-final-projet/output/eval7.mips new file mode 100644 index 0000000..bc714e6 --- /dev/null +++ b/eval-final-projet/output/eval7.mips @@ -0,0 +1,51 @@ +.data +$$a: .space 4 +.text +__start: +jal main +li $v0, 10 +syscall +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 5 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 3 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +sub $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +li $t0, 2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t2, 0($sp) +addi $sp, $sp, 4 +lw $t1, 0($sp) +addi $sp, $sp, 4 +add $t0, $t1, $t2 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval7.synt b/eval-final-projet/output/eval7.synt new file mode 100644 index 0000000..62e65c9 --- /dev/null +++ b/eval-final-projet/output/eval7.synt @@ -0,0 +1,91 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 5 + + + + + + MOINS + + + 3 + + + + + + PLUS + + + 2 + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/output/eval7.tab b/eval-final-projet/output/eval7.tab new file mode 100644 index 0000000..91bc69d --- /dev/null +++ b/eval-final-projet/output/eval7.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval8-err.synt.xml b/eval-final-projet/output/eval8-err.synt.xml new file mode 100644 index 0000000..250b873 --- /dev/null +++ b/eval-final-projet/output/eval8-err.synt.xml @@ -0,0 +1,14 @@ +.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) +$a n'est pas un Tableau diff --git a/eval-final-projet/output/eval8.asynt b/eval-final-projet/output/eval8.asynt new file mode 100644 index 0000000..3c3faf2 --- /dev/null +++ b/eval-final-projet/output/eval8.asynt @@ -0,0 +1,34 @@ + + + + procedure + + $a + + + + + $a + + + + + + + main + + + + procedure + + 10 + + + + + + + + + + diff --git a/eval-final-projet/output/eval8.lex b/eval-final-projet/output/eval8.lex new file mode 100644 index 0000000..631b37d --- /dev/null +++ b/eval-final-projet/output/eval8.lex @@ -0,0 +1,23 @@ +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$a id_variable $a +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +10 nombre 10 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval8.mips b/eval-final-projet/output/eval8.mips new file mode 100644 index 0000000..a04e648 --- /dev/null +++ b/eval-final-projet/output/eval8.mips @@ -0,0 +1,49 @@ +.data +.text +__start: +jal main +li $v0, 10 +syscall +procedure : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +lw $t0, 4($fp) #variable argument $a +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 #Val Retour +li $t0, 10 +subi $sp, $sp, 4 +sw $t0, 0($sp) +jal procedure +addi $sp, $sp, 4 #désalocation des arguments +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval8.synt b/eval-final-projet/output/eval8.synt new file mode 100644 index 0000000..ab621d9 --- /dev/null +++ b/eval-final-projet/output/eval8.synt @@ -0,0 +1,134 @@ + + + + + + procedure + + PARENTHESE_OUVRANTE + + + + entier + $a + + + + + + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + procedure + PARENTHESE_OUVRANTE + + + + + + + + + 10 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/output/eval8.tab b/eval-final-projet/output/eval8.tab new file mode 100644 index 0000000..e831412 --- /dev/null +++ b/eval-final-projet/output/eval8.tab @@ -0,0 +1,12 @@ +------------------------------------------ +base = 1 +sommet = 2 +0 procedure GLOBALE FONCTION 0 1 +1 $a ARGUMENT ENTIER 0 -1 +------------------------------------------ +------------------------------------------ +base = 2 +sommet = 2 +0 procedure GLOBALE FONCTION 0 1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/output/eval9-err.synt.xml b/eval-final-projet/output/eval9-err.synt.xml new file mode 100644 index 0000000..e69de29 diff --git a/eval-final-projet/output/eval9.asynt b/eval-final-projet/output/eval9.asynt new file mode 100644 index 0000000..7e82dc0 --- /dev/null +++ b/eval-final-projet/output/eval9.asynt @@ -0,0 +1,26 @@ + + + + procedure + + + 1 + + + + + + main + + + + procedure + + + + + + + + + diff --git a/eval-final-projet/output/eval9.lex b/eval-final-projet/output/eval9.lex new file mode 100644 index 0000000..95dbd62 --- /dev/null +++ b/eval-final-projet/output/eval9.lex @@ -0,0 +1,20 @@ +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/output/eval9.mips b/eval-final-projet/output/eval9.mips new file mode 100644 index 0000000..a661af0 --- /dev/null +++ b/eval-final-projet/output/eval9.mips @@ -0,0 +1,45 @@ +.data +.text +__start: +jal main +li $v0, 10 +syscall +procedure : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +li $t0, 1 +subi $sp, $sp, 4 +sw $t0, 0($sp) +lw $t0, 0($sp) +addi $sp, $sp, 4 +move $a0, $t0 +li $v0, 1 +syscall +li $a0, '\n' +li $v0, 11 +syscall +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra +main : +subi $sp, $sp, 4 +sw $fp, 0($sp) +move $fp, $sp +subi $sp, $sp, 4 +sw $ra, 0($sp) +subi $sp, $sp, 4 #Val Retour +jal procedure +addi $sp, $sp 0 # desallocation variables locales +lw $ra, 0($sp) +addi $sp, $sp, 4 +lw $fp, 0($sp) +addi $sp, $sp, 4 +addi $sp, $sp, 4 #ignore valeur de retour +jr $ra diff --git a/eval-final-projet/output/eval9.synt b/eval-final-projet/output/eval9.synt new file mode 100644 index 0000000..cf9f1f3 --- /dev/null +++ b/eval-final-projet/output/eval9.synt @@ -0,0 +1,93 @@ + + + + + + procedure + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 1 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + procedure + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/output/eval9.tab b/eval-final-projet/output/eval9.tab new file mode 100644 index 0000000..a780954 --- /dev/null +++ b/eval-final-projet/output/eval9.tab @@ -0,0 +1,11 @@ +------------------------------------------ +base = 1 +sommet = 1 +0 procedure GLOBALE FONCTION 0 0 +------------------------------------------ +------------------------------------------ +base = 2 +sommet = 2 +0 procedure GLOBALE FONCTION 0 0 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/testAll.sh b/eval-final-projet/testAll.sh index 379fe18..b811c47 100755 --- a/eval-final-projet/testAll.sh +++ b/eval-final-projet/testAll.sh @@ -30,13 +30,13 @@ # 1) MODIFIEZ LA VARIABLE CI-DESSOUS AVEC LE CHEMIN VERS VOTRE COMPILATEUR -MYCOMPILO="../../TP/src/compilo" +MYCOMPILO="../compilateur-l" # 2) DÉCOMMENTEZ + MODIFIEZ LES COMMANDES POUR GÉNÉRER LES DIFFÉRENTES SORTIES MYCOMPILODEFAULT="${MYCOMPILO}" # utilisé pour test reconnaissance et erreur -#MYCOMPILOLEX="${MYCOMPILO} -l" # exécuter l'analyseur lexical -#MYCOMPILOSYNT="${MYCOMPILO} -s" # exécuter l'analyseur syntaxique +MYCOMPILOLEX="${MYCOMPILO} -l" # exécuter l'analyseur lexical +MYCOMPILOSYNT="${MYCOMPILO} -s" # exécuter l'analyseur syntaxique MYCOMPILOASYNT="${MYCOMPILO} -a" # afficher l'arbre abstrait MYCOMPILOTAB="${MYCOMPILO} -t" # afficher les tables des symboles MYCOMPILOMIPS="${MYCOMPILO} -m" # générer code MIPS diff --git a/src/parcours.c b/src/parcours.c index cd5ebfa..20826fc 100644 --- a/src/parcours.c +++ b/src/parcours.c @@ -499,7 +499,7 @@ void parcours_opExp(n_exp *n) parcours_exp(n->u.opExp_.op1); sprintf(tmp, "$t%d", iRegistre2); depile(tmp); - sprintf(tmp,"beq $zero, $t%d, %s",iRegistre2,faux1); + sprintf(tmp,"beq $zero, $t%d, %s",iRegistre2, faux1); printMips(tmp); sprintf(tmp,"j %s",vrai); printMips(tmp); @@ -507,19 +507,19 @@ void parcours_opExp(n_exp *n) printMips(tmp); parcours_exp(n->u.opExp_.op2); - sprintf(tmp, "$t%d", iRegistre2); + sprintf(tmp, "$t%d", iRegistre3); depile(tmp); - sprintf(tmp,"beq $zero $t%d %s",iRegistre2,faux2); - sprintf(tmp, "%s :", vrai); - printMips(tmp); - sprintf(tmp,"li $t%d 1",iRegistre); + + sprintf(tmp,"or $t%d, $t%d, $t%d",iRegistre, iRegistre2, iRegistre3); printMips(tmp); + sprintf(tmp,"j %s",empile); printMips(tmp); - sprintf(tmp,"%s :",faux2); + sprintf(tmp, "%s :", vrai); printMips(tmp); - sprintf(tmp,"li $t%d 0",iRegistre); + sprintf(tmp,"move $t%d $t%d",iRegistre, iRegistre2); printMips(tmp); + sprintf(tmp,"%s : ", empile); printMips(tmp); } else if(n->u.opExp_.op == et) { @@ -531,8 +531,8 @@ void parcours_opExp(n_exp *n) parcours_exp(n->u.opExp_.op1); sprintf(tmp, "$t%d", iRegistre2); depile(tmp); - sprintf(tmp,"li $t%d, 1",iRegistre); - printMips(tmp); + //sprintf(tmp,"li $t%d, 1",iRegistre); + //printMips(tmp); sprintf(tmp,"beq $zero, $t%d, %s",iRegistre2,faux); printMips(tmp); @@ -542,6 +542,11 @@ void parcours_opExp(n_exp *n) sprintf(tmp,"beq $zero, $t%d, %s",iRegistre3,faux); printMips(tmp); + //-- + sprintf(tmp,"and $t%d, $t%d, $t%d",iRegistre, iRegistre2, iRegistre3); + printMips(tmp); + //-- + sprintf(tmp,"j %s", empile); printMips(tmp);