From 7d8e760392b266c8aa80612ae2507e75507ecbb7 Mon Sep 17 00:00:00 2001 From: Foussats Morgane Date: Thu, 20 May 2021 12:08:52 +0200 Subject: [PATCH] Dernieres modifs --- compiler/analyse_syntaxique.output | 1967 ++++++++++++++++++++++ compiler/analyse_syntaxique.y | 9 +- compiler/code_c | 29 +- compiler/compiler | Bin 0 -> 46944 bytes compiler/memory_oriented_assembly.txt | 15 +- cross_assembleur/STD_LOGIC_VECTOR_output | 6 +- cross_assembleur/cross_assembler | Bin 0 -> 28704 bytes cross_assembleur/cross_input.txt | 6 +- cross_assembleur/cross_output.txt | 4 + interpreter/interpreter | Bin 0 -> 37080 bytes interpreter/interpreter_input.txt | 49 +- interpreter/src/instructions.c | 14 +- interpreter/src/instructions.h | 2 +- interpreter/src/interpreter.l | 2 +- interpreter/src/interpreter.y | 6 +- 15 files changed, 2044 insertions(+), 65 deletions(-) create mode 100644 compiler/analyse_syntaxique.output create mode 100755 compiler/compiler create mode 100755 cross_assembleur/cross_assembler create mode 100755 interpreter/interpreter diff --git a/compiler/analyse_syntaxique.output b/compiler/analyse_syntaxique.output new file mode 100644 index 0000000..6e1ffa8 --- /dev/null +++ b/compiler/analyse_syntaxique.output @@ -0,0 +1,1967 @@ +Terminaux inutilisés dans la grammaire + + tENTIEREXP + tERROR + + +Grammaire + + 0 $accept: C $end + + 1 $@1: %empty + + 2 C: $@1 Fonctions + + 3 Fonctions: Main + 4 | Fonction Fonctions + + 5 $@2: %empty + + 6 Main: tINT tMAIN $@2 tPO Params tPF Body + + 7 $@3: %empty + + 8 Fonction: Function_type tVAR $@3 tPO Params tPF Body + + 9 Function_type: tINT + 10 | tINT tMUL + + 11 Params: %empty + 12 | Param SuiteParams + + 13 Param: Param_type tVAR + + 14 Param_type: tINT + 15 | tINT tMUL + + 16 SuiteParams: tVIRGULE Param SuiteParams + 17 | %empty + + 18 Body: tAO Instructions Return tAF + + 19 Instructions: Instruction Instructions + 20 | %empty + + 21 Instruction: Aff + 22 | If + 23 | While + 24 | Print + 25 | Decl + 26 | Invocation tPV + + 27 Decl: Type Valeur SuiteDecl tPV + + 28 SuiteDecl: tVIRGULE Valeur SuiteDecl + 29 | %empty + + 30 Type: tINT + 31 | tCONST tINT + 32 | tINT tMUL + + 33 $@4: %empty + + 34 Valeur: tVAR $@4 tAFFECTATION E + 35 | tVAR + + 36 Aff: tVAR tAFFECTATION E tPV + 37 | tMUL tVAR tAFFECTATION E tPV + + 38 E: tENTIER + 39 | tVAR + 40 | E tADD E + 41 | E tMUL E + 42 | E tSUB E + 43 | E tDIV E + 44 | tSUB E + 45 | Invocation + 46 | tPO E tPF + 47 | tAPPERSAND tVAR + 48 | tMUL tVAR + + 49 $@5: %empty + + 50 $@6: %empty + + 51 $@7: %empty + + 52 $@8: %empty + + 53 $@9: %empty + + 54 If: tIF tPO Cond tPF $@5 tAO $@6 Instructions $@7 tAF $@8 $@9 Else + + 55 $@10: %empty + + 56 $@11: %empty + + 57 Else: tELSE tAO $@10 Instructions tAF $@11 + 58 | %empty + 59 | tELSE If + + 60 $@12: %empty + + 61 $@13: %empty + + 62 $@14: %empty + + 63 $@15: %empty + + 64 While: tWHILE tPO $@12 Cond tPF $@13 tAO $@14 Instructions tAF $@15 + + 65 Cond: E tEGAL E + 66 | E tDIFF E + 67 | E tLT E + 68 | E tGT E + 69 | E tLTE E + 70 | E tGTE E + 71 | E tAND E + 72 | E tOR E + 73 | tNOT Cond + 74 | E + + 75 $@16: %empty + + 76 Invocation: tVAR tPO $@16 Args tPF + + 77 Args: Arg SuiteArgs + 78 | %empty + + 79 Arg: E + + 80 SuiteArgs: tVIRGULE Arg SuiteArgs + 81 | %empty + + 82 Print: tPRINT tPO E tPF tPV + + 83 Return: tRETURN E tPV + + +Terminaux, suivis des règles où ils apparaissent + +$end (0) 0 +error (256) +tENTIER (258) 38 +tENTIEREXP (259) +tADD (260) 40 +tSUB (261) 42 44 +tMUL (262) 10 15 32 37 41 48 +tDIV (263) 43 +tPO (264) 6 8 46 54 64 76 82 +tPF (265) 6 8 46 54 64 76 82 +tAO (266) 18 54 57 64 +tAF (267) 18 54 57 64 +tERROR (268) +tAPPERSAND (269) 47 +tPV (270) 26 27 36 37 82 83 +tVIRGULE (271) 16 28 80 +tAFFECTATION (272) 34 36 37 +tEGAL (273) 65 +tDIFF (274) 66 +tLT (275) 67 +tGT (276) 68 +tGTE (277) 70 +tLTE (278) 69 +tMAIN (279) 6 +tINT (280) 6 9 10 14 15 30 31 32 +tPRINT (281) 82 +tRETURN (282) 83 +tOR (283) 72 +tAND (284) 71 +tIF (285) 54 +tELSE (286) 57 59 +tWHILE (287) 64 +tCONST (288) 31 +tVAR (289) 8 13 34 35 36 37 39 47 48 76 +tNOT (290) 73 + + +Non-terminaux, suivis des règles où ils apparaissent + +$accept (36) + à gauche: 0 +C (37) + à gauche: 2, à droite: 0 +$@1 (38) + à gauche: 1, à droite: 2 +Fonctions (39) + à gauche: 3 4, à droite: 2 4 +Main (40) + à gauche: 6, à droite: 3 +$@2 (41) + à gauche: 5, à droite: 6 +Fonction (42) + à gauche: 8, à droite: 4 +$@3 (43) + à gauche: 7, à droite: 8 +Function_type (44) + à gauche: 9 10, à droite: 8 +Params (45) + à gauche: 11 12, à droite: 6 8 +Param (46) + à gauche: 13, à droite: 12 16 +Param_type (47) + à gauche: 14 15, à droite: 13 +SuiteParams (48) + à gauche: 16 17, à droite: 12 16 +Body (49) + à gauche: 18, à droite: 6 8 +Instructions (50) + à gauche: 19 20, à droite: 18 19 54 57 64 +Instruction (51) + à gauche: 21 22 23 24 25 26, à droite: 19 +Decl (52) + à gauche: 27, à droite: 25 +SuiteDecl (53) + à gauche: 28 29, à droite: 27 28 +Type (54) + à gauche: 30 31 32, à droite: 27 +Valeur (55) + à gauche: 34 35, à droite: 27 28 +$@4 (56) + à gauche: 33, à droite: 34 +Aff (57) + à gauche: 36 37, à droite: 21 +E (58) + à gauche: 38 39 40 41 42 43 44 45 46 47 48, à droite: 34 36 37 + 40 41 42 43 44 46 65 66 67 68 69 70 71 72 74 79 82 83 +If (59) + à gauche: 54, à droite: 22 59 +$@5 (60) + à gauche: 49, à droite: 54 +$@6 (61) + à gauche: 50, à droite: 54 +$@7 (62) + à gauche: 51, à droite: 54 +$@8 (63) + à gauche: 52, à droite: 54 +$@9 (64) + à gauche: 53, à droite: 54 +Else (65) + à gauche: 57 58 59, à droite: 54 +$@10 (66) + à gauche: 55, à droite: 57 +$@11 (67) + à gauche: 56, à droite: 57 +While (68) + à gauche: 64, à droite: 23 +$@12 (69) + à gauche: 60, à droite: 64 +$@13 (70) + à gauche: 61, à droite: 64 +$@14 (71) + à gauche: 62, à droite: 64 +$@15 (72) + à gauche: 63, à droite: 64 +Cond (73) + à gauche: 65 66 67 68 69 70 71 72 73 74, à droite: 54 64 73 +Invocation (74) + à gauche: 76, à droite: 26 45 +$@16 (75) + à gauche: 75, à droite: 76 +Args (76) + à gauche: 77 78, à droite: 76 +Arg (77) + à gauche: 79, à droite: 77 80 +SuiteArgs (78) + à gauche: 80 81, à droite: 77 80 +Print (79) + à gauche: 82, à droite: 24 +Return (80) + à gauche: 83, à droite: 18 + + +État 0 + + 0 $accept: . C $end + + $défaut réduction par utilisation de la règle 1 ($@1) + + C aller à l'état 1 + $@1 aller à l'état 2 + + +État 1 + + 0 $accept: C . $end + + $end décalage et aller à l'état 3 + + +État 2 + + 2 C: $@1 . Fonctions + + tINT décalage et aller à l'état 4 + + Fonctions aller à l'état 5 + Main aller à l'état 6 + Fonction aller à l'état 7 + Function_type aller à l'état 8 + + +État 3 + + 0 $accept: C $end . + + $défaut accepter + + +État 4 + + 6 Main: tINT . tMAIN $@2 tPO Params tPF Body + 9 Function_type: tINT . + 10 | tINT . tMUL + + tMUL décalage et aller à l'état 9 + tMAIN décalage et aller à l'état 10 + + $défaut réduction par utilisation de la règle 9 (Function_type) + + +État 5 + + 2 C: $@1 Fonctions . + + $défaut réduction par utilisation de la règle 2 (C) + + +État 6 + + 3 Fonctions: Main . + + $défaut réduction par utilisation de la règle 3 (Fonctions) + + +État 7 + + 4 Fonctions: Fonction . Fonctions + + tINT décalage et aller à l'état 4 + + Fonctions aller à l'état 11 + Main aller à l'état 6 + Fonction aller à l'état 7 + Function_type aller à l'état 8 + + +État 8 + + 8 Fonction: Function_type . tVAR $@3 tPO Params tPF Body + + tVAR décalage et aller à l'état 12 + + +État 9 + + 10 Function_type: tINT tMUL . + + $défaut réduction par utilisation de la règle 10 (Function_type) + + +État 10 + + 6 Main: tINT tMAIN . $@2 tPO Params tPF Body + + $défaut réduction par utilisation de la règle 5 ($@2) + + $@2 aller à l'état 13 + + +État 11 + + 4 Fonctions: Fonction Fonctions . + + $défaut réduction par utilisation de la règle 4 (Fonctions) + + +État 12 + + 8 Fonction: Function_type tVAR . $@3 tPO Params tPF Body + + $défaut réduction par utilisation de la règle 7 ($@3) + + $@3 aller à l'état 14 + + +État 13 + + 6 Main: tINT tMAIN $@2 . tPO Params tPF Body + + tPO décalage et aller à l'état 15 + + +État 14 + + 8 Fonction: Function_type tVAR $@3 . tPO Params tPF Body + + tPO décalage et aller à l'état 16 + + +État 15 + + 6 Main: tINT tMAIN $@2 tPO . Params tPF Body + + tINT décalage et aller à l'état 17 + + $défaut réduction par utilisation de la règle 11 (Params) + + Params aller à l'état 18 + Param aller à l'état 19 + Param_type aller à l'état 20 + + +État 16 + + 8 Fonction: Function_type tVAR $@3 tPO . Params tPF Body + + tINT décalage et aller à l'état 17 + + $défaut réduction par utilisation de la règle 11 (Params) + + Params aller à l'état 21 + Param aller à l'état 19 + Param_type aller à l'état 20 + + +État 17 + + 14 Param_type: tINT . + 15 | tINT . tMUL + + tMUL décalage et aller à l'état 22 + + $défaut réduction par utilisation de la règle 14 (Param_type) + + +État 18 + + 6 Main: tINT tMAIN $@2 tPO Params . tPF Body + + tPF décalage et aller à l'état 23 + + +État 19 + + 12 Params: Param . SuiteParams + + tVIRGULE décalage et aller à l'état 24 + + $défaut réduction par utilisation de la règle 17 (SuiteParams) + + SuiteParams aller à l'état 25 + + +État 20 + + 13 Param: Param_type . tVAR + + tVAR décalage et aller à l'état 26 + + +État 21 + + 8 Fonction: Function_type tVAR $@3 tPO Params . tPF Body + + tPF décalage et aller à l'état 27 + + +État 22 + + 15 Param_type: tINT tMUL . + + $défaut réduction par utilisation de la règle 15 (Param_type) + + +État 23 + + 6 Main: tINT tMAIN $@2 tPO Params tPF . Body + + tAO décalage et aller à l'état 28 + + Body aller à l'état 29 + + +État 24 + + 16 SuiteParams: tVIRGULE . Param SuiteParams + + tINT décalage et aller à l'état 17 + + Param aller à l'état 30 + Param_type aller à l'état 20 + + +État 25 + + 12 Params: Param SuiteParams . + + $défaut réduction par utilisation de la règle 12 (Params) + + +État 26 + + 13 Param: Param_type tVAR . + + $défaut réduction par utilisation de la règle 13 (Param) + + +État 27 + + 8 Fonction: Function_type tVAR $@3 tPO Params tPF . Body + + tAO décalage et aller à l'état 28 + + Body aller à l'état 31 + + +État 28 + + 18 Body: tAO . Instructions Return tAF + + tMUL décalage et aller à l'état 32 + tINT décalage et aller à l'état 33 + tPRINT décalage et aller à l'état 34 + tIF décalage et aller à l'état 35 + tWHILE décalage et aller à l'état 36 + tCONST décalage et aller à l'état 37 + tVAR décalage et aller à l'état 38 + + $défaut réduction par utilisation de la règle 20 (Instructions) + + Instructions aller à l'état 39 + Instruction aller à l'état 40 + Decl aller à l'état 41 + Type aller à l'état 42 + Aff aller à l'état 43 + If aller à l'état 44 + While aller à l'état 45 + Invocation aller à l'état 46 + Print aller à l'état 47 + + +État 29 + + 6 Main: tINT tMAIN $@2 tPO Params tPF Body . + + $défaut réduction par utilisation de la règle 6 (Main) + + +État 30 + + 16 SuiteParams: tVIRGULE Param . SuiteParams + + tVIRGULE décalage et aller à l'état 24 + + $défaut réduction par utilisation de la règle 17 (SuiteParams) + + SuiteParams aller à l'état 48 + + +État 31 + + 8 Fonction: Function_type tVAR $@3 tPO Params tPF Body . + + $défaut réduction par utilisation de la règle 8 (Fonction) + + +État 32 + + 37 Aff: tMUL . tVAR tAFFECTATION E tPV + + tVAR décalage et aller à l'état 49 + + +État 33 + + 30 Type: tINT . + 32 | tINT . tMUL + + tMUL décalage et aller à l'état 50 + + $défaut réduction par utilisation de la règle 30 (Type) + + +État 34 + + 82 Print: tPRINT . tPO E tPF tPV + + tPO décalage et aller à l'état 51 + + +État 35 + + 54 If: tIF . tPO Cond tPF $@5 tAO $@6 Instructions $@7 tAF $@8 $@9 Else + + tPO décalage et aller à l'état 52 + + +État 36 + + 64 While: tWHILE . tPO $@12 Cond tPF $@13 tAO $@14 Instructions tAF $@15 + + tPO décalage et aller à l'état 53 + + +État 37 + + 31 Type: tCONST . tINT + + tINT décalage et aller à l'état 54 + + +État 38 + + 36 Aff: tVAR . tAFFECTATION E tPV + 76 Invocation: tVAR . tPO $@16 Args tPF + + tPO décalage et aller à l'état 55 + tAFFECTATION décalage et aller à l'état 56 + + +État 39 + + 18 Body: tAO Instructions . Return tAF + + tRETURN décalage et aller à l'état 57 + + Return aller à l'état 58 + + +État 40 + + 19 Instructions: Instruction . Instructions + + tMUL décalage et aller à l'état 32 + tINT décalage et aller à l'état 33 + tPRINT décalage et aller à l'état 34 + tIF décalage et aller à l'état 35 + tWHILE décalage et aller à l'état 36 + tCONST décalage et aller à l'état 37 + tVAR décalage et aller à l'état 38 + + $défaut réduction par utilisation de la règle 20 (Instructions) + + Instructions aller à l'état 59 + Instruction aller à l'état 40 + Decl aller à l'état 41 + Type aller à l'état 42 + Aff aller à l'état 43 + If aller à l'état 44 + While aller à l'état 45 + Invocation aller à l'état 46 + Print aller à l'état 47 + + +État 41 + + 25 Instruction: Decl . + + $défaut réduction par utilisation de la règle 25 (Instruction) + + +État 42 + + 27 Decl: Type . Valeur SuiteDecl tPV + + tVAR décalage et aller à l'état 60 + + Valeur aller à l'état 61 + + +État 43 + + 21 Instruction: Aff . + + $défaut réduction par utilisation de la règle 21 (Instruction) + + +État 44 + + 22 Instruction: If . + + $défaut réduction par utilisation de la règle 22 (Instruction) + + +État 45 + + 23 Instruction: While . + + $défaut réduction par utilisation de la règle 23 (Instruction) + + +État 46 + + 26 Instruction: Invocation . tPV + + tPV décalage et aller à l'état 62 + + +État 47 + + 24 Instruction: Print . + + $défaut réduction par utilisation de la règle 24 (Instruction) + + +État 48 + + 16 SuiteParams: tVIRGULE Param SuiteParams . + + $défaut réduction par utilisation de la règle 16 (SuiteParams) + + +État 49 + + 37 Aff: tMUL tVAR . tAFFECTATION E tPV + + tAFFECTATION décalage et aller à l'état 63 + + +État 50 + + 32 Type: tINT tMUL . + + $défaut réduction par utilisation de la règle 32 (Type) + + +État 51 + + 82 Print: tPRINT tPO . E tPF tPV + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 70 + Invocation aller à l'état 71 + + +État 52 + + 54 If: tIF tPO . Cond tPF $@5 tAO $@6 Instructions $@7 tAF $@8 $@9 Else + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + tNOT décalage et aller à l'état 72 + + E aller à l'état 73 + Cond aller à l'état 74 + Invocation aller à l'état 71 + + +État 53 + + 64 While: tWHILE tPO . $@12 Cond tPF $@13 tAO $@14 Instructions tAF $@15 + + $défaut réduction par utilisation de la règle 60 ($@12) + + $@12 aller à l'état 75 + + +État 54 + + 31 Type: tCONST tINT . + + $défaut réduction par utilisation de la règle 31 (Type) + + +État 55 + + 76 Invocation: tVAR tPO . $@16 Args tPF + + $défaut réduction par utilisation de la règle 75 ($@16) + + $@16 aller à l'état 76 + + +État 56 + + 36 Aff: tVAR tAFFECTATION . E tPV + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 77 + Invocation aller à l'état 71 + + +État 57 + + 83 Return: tRETURN . E tPV + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 78 + Invocation aller à l'état 71 + + +État 58 + + 18 Body: tAO Instructions Return . tAF + + tAF décalage et aller à l'état 79 + + +État 59 + + 19 Instructions: Instruction Instructions . + + $défaut réduction par utilisation de la règle 19 (Instructions) + + +État 60 + + 34 Valeur: tVAR . $@4 tAFFECTATION E + 35 | tVAR . + + tAFFECTATION réduction par utilisation de la règle 33 ($@4) + $défaut réduction par utilisation de la règle 35 (Valeur) + + $@4 aller à l'état 80 + + +État 61 + + 27 Decl: Type Valeur . SuiteDecl tPV + + tVIRGULE décalage et aller à l'état 81 + + $défaut réduction par utilisation de la règle 29 (SuiteDecl) + + SuiteDecl aller à l'état 82 + + +État 62 + + 26 Instruction: Invocation tPV . + + $défaut réduction par utilisation de la règle 26 (Instruction) + + +État 63 + + 37 Aff: tMUL tVAR tAFFECTATION . E tPV + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 83 + Invocation aller à l'état 71 + + +État 64 + + 38 E: tENTIER . + + $défaut réduction par utilisation de la règle 38 (E) + + +État 65 + + 44 E: tSUB . E + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 84 + Invocation aller à l'état 71 + + +État 66 + + 48 E: tMUL . tVAR + + tVAR décalage et aller à l'état 85 + + +État 67 + + 46 E: tPO . E tPF + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 86 + Invocation aller à l'état 71 + + +État 68 + + 47 E: tAPPERSAND . tVAR + + tVAR décalage et aller à l'état 87 + + +État 69 + + 39 E: tVAR . + 76 Invocation: tVAR . tPO $@16 Args tPF + + tPO décalage et aller à l'état 55 + + $défaut réduction par utilisation de la règle 39 (E) + + +État 70 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + 82 Print: tPRINT tPO E . tPF tPV + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + tPF décalage et aller à l'état 92 + + +État 71 + + 45 E: Invocation . + + $défaut réduction par utilisation de la règle 45 (E) + + +État 72 + + 73 Cond: tNOT . Cond + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + tNOT décalage et aller à l'état 72 + + E aller à l'état 73 + Cond aller à l'état 93 + Invocation aller à l'état 71 + + +État 73 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + 65 Cond: E . tEGAL E + 66 | E . tDIFF E + 67 | E . tLT E + 68 | E . tGT E + 69 | E . tLTE E + 70 | E . tGTE E + 71 | E . tAND E + 72 | E . tOR E + 74 | E . + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + tEGAL décalage et aller à l'état 94 + tDIFF décalage et aller à l'état 95 + tLT décalage et aller à l'état 96 + tGT décalage et aller à l'état 97 + tGTE décalage et aller à l'état 98 + tLTE décalage et aller à l'état 99 + tOR décalage et aller à l'état 100 + tAND décalage et aller à l'état 101 + + $défaut réduction par utilisation de la règle 74 (Cond) + + +État 74 + + 54 If: tIF tPO Cond . tPF $@5 tAO $@6 Instructions $@7 tAF $@8 $@9 Else + + tPF décalage et aller à l'état 102 + + +État 75 + + 64 While: tWHILE tPO $@12 . Cond tPF $@13 tAO $@14 Instructions tAF $@15 + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + tNOT décalage et aller à l'état 72 + + E aller à l'état 73 + Cond aller à l'état 103 + Invocation aller à l'état 71 + + +État 76 + + 76 Invocation: tVAR tPO $@16 . Args tPF + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + $défaut réduction par utilisation de la règle 78 (Args) + + E aller à l'état 104 + Invocation aller à l'état 71 + Args aller à l'état 105 + Arg aller à l'état 106 + + +État 77 + + 36 Aff: tVAR tAFFECTATION E . tPV + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + tPV décalage et aller à l'état 107 + + +État 78 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + 83 Return: tRETURN E . tPV + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + tPV décalage et aller à l'état 108 + + +État 79 + + 18 Body: tAO Instructions Return tAF . + + $défaut réduction par utilisation de la règle 18 (Body) + + +État 80 + + 34 Valeur: tVAR $@4 . tAFFECTATION E + + tAFFECTATION décalage et aller à l'état 109 + + +État 81 + + 28 SuiteDecl: tVIRGULE . Valeur SuiteDecl + + tVAR décalage et aller à l'état 60 + + Valeur aller à l'état 110 + + +État 82 + + 27 Decl: Type Valeur SuiteDecl . tPV + + tPV décalage et aller à l'état 111 + + +État 83 + + 37 Aff: tMUL tVAR tAFFECTATION E . tPV + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + tPV décalage et aller à l'état 112 + + +État 84 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + 44 | tSUB E . + + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + + $défaut réduction par utilisation de la règle 44 (E) + + +État 85 + + 48 E: tMUL tVAR . + + $défaut réduction par utilisation de la règle 48 (E) + + +État 86 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + 46 | tPO E . tPF + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + tPF décalage et aller à l'état 113 + + +État 87 + + 47 E: tAPPERSAND tVAR . + + $défaut réduction par utilisation de la règle 47 (E) + + +État 88 + + 40 E: E tADD . E + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 114 + Invocation aller à l'état 71 + + +État 89 + + 42 E: E tSUB . E + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 115 + Invocation aller à l'état 71 + + +État 90 + + 41 E: E tMUL . E + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 116 + Invocation aller à l'état 71 + + +État 91 + + 43 E: E tDIV . E + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 117 + Invocation aller à l'état 71 + + +État 92 + + 82 Print: tPRINT tPO E tPF . tPV + + tPV décalage et aller à l'état 118 + + +État 93 + + 73 Cond: tNOT Cond . + + $défaut réduction par utilisation de la règle 73 (Cond) + + +État 94 + + 65 Cond: E tEGAL . E + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 119 + Invocation aller à l'état 71 + + +État 95 + + 66 Cond: E tDIFF . E + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 120 + Invocation aller à l'état 71 + + +État 96 + + 67 Cond: E tLT . E + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 121 + Invocation aller à l'état 71 + + +État 97 + + 68 Cond: E tGT . E + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 122 + Invocation aller à l'état 71 + + +État 98 + + 70 Cond: E tGTE . E + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 123 + Invocation aller à l'état 71 + + +État 99 + + 69 Cond: E tLTE . E + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 124 + Invocation aller à l'état 71 + + +État 100 + + 72 Cond: E tOR . E + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 125 + Invocation aller à l'état 71 + + +État 101 + + 71 Cond: E tAND . E + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 126 + Invocation aller à l'état 71 + + +État 102 + + 54 If: tIF tPO Cond tPF . $@5 tAO $@6 Instructions $@7 tAF $@8 $@9 Else + + $défaut réduction par utilisation de la règle 49 ($@5) + + $@5 aller à l'état 127 + + +État 103 + + 64 While: tWHILE tPO $@12 Cond . tPF $@13 tAO $@14 Instructions tAF $@15 + + tPF décalage et aller à l'état 128 + + +État 104 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + 79 Arg: E . + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + + $défaut réduction par utilisation de la règle 79 (Arg) + + +État 105 + + 76 Invocation: tVAR tPO $@16 Args . tPF + + tPF décalage et aller à l'état 129 + + +État 106 + + 77 Args: Arg . SuiteArgs + + tVIRGULE décalage et aller à l'état 130 + + $défaut réduction par utilisation de la règle 81 (SuiteArgs) + + SuiteArgs aller à l'état 131 + + +État 107 + + 36 Aff: tVAR tAFFECTATION E tPV . + + $défaut réduction par utilisation de la règle 36 (Aff) + + +État 108 + + 83 Return: tRETURN E tPV . + + $défaut réduction par utilisation de la règle 83 (Return) + + +État 109 + + 34 Valeur: tVAR $@4 tAFFECTATION . E + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 132 + Invocation aller à l'état 71 + + +État 110 + + 28 SuiteDecl: tVIRGULE Valeur . SuiteDecl + + tVIRGULE décalage et aller à l'état 81 + + $défaut réduction par utilisation de la règle 29 (SuiteDecl) + + SuiteDecl aller à l'état 133 + + +État 111 + + 27 Decl: Type Valeur SuiteDecl tPV . + + $défaut réduction par utilisation de la règle 27 (Decl) + + +État 112 + + 37 Aff: tMUL tVAR tAFFECTATION E tPV . + + $défaut réduction par utilisation de la règle 37 (Aff) + + +État 113 + + 46 E: tPO E tPF . + + $défaut réduction par utilisation de la règle 46 (E) + + +État 114 + + 40 E: E . tADD E + 40 | E tADD E . + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + + $défaut réduction par utilisation de la règle 40 (E) + + +État 115 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 42 | E tSUB E . + 43 | E . tDIV E + + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + + $défaut réduction par utilisation de la règle 42 (E) + + +État 116 + + 40 E: E . tADD E + 41 | E . tMUL E + 41 | E tMUL E . + 42 | E . tSUB E + 43 | E . tDIV E + + tDIV décalage et aller à l'état 91 + + $défaut réduction par utilisation de la règle 41 (E) + + +État 117 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + 43 | E tDIV E . + + $défaut réduction par utilisation de la règle 43 (E) + + +État 118 + + 82 Print: tPRINT tPO E tPF tPV . + + $défaut réduction par utilisation de la règle 82 (Print) + + +État 119 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + 65 Cond: E tEGAL E . + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + + $défaut réduction par utilisation de la règle 65 (Cond) + + +État 120 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + 66 Cond: E tDIFF E . + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + + $défaut réduction par utilisation de la règle 66 (Cond) + + +État 121 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + 67 Cond: E tLT E . + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + + $défaut réduction par utilisation de la règle 67 (Cond) + + +État 122 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + 68 Cond: E tGT E . + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + + $défaut réduction par utilisation de la règle 68 (Cond) + + +État 123 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + 70 Cond: E tGTE E . + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + + $défaut réduction par utilisation de la règle 70 (Cond) + + +État 124 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + 69 Cond: E tLTE E . + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + + $défaut réduction par utilisation de la règle 69 (Cond) + + +État 125 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + 72 Cond: E tOR E . + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + + $défaut réduction par utilisation de la règle 72 (Cond) + + +État 126 + + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + 71 Cond: E tAND E . + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + + $défaut réduction par utilisation de la règle 71 (Cond) + + +État 127 + + 54 If: tIF tPO Cond tPF $@5 . tAO $@6 Instructions $@7 tAF $@8 $@9 Else + + tAO décalage et aller à l'état 134 + + +État 128 + + 64 While: tWHILE tPO $@12 Cond tPF . $@13 tAO $@14 Instructions tAF $@15 + + $défaut réduction par utilisation de la règle 61 ($@13) + + $@13 aller à l'état 135 + + +État 129 + + 76 Invocation: tVAR tPO $@16 Args tPF . + + $défaut réduction par utilisation de la règle 76 (Invocation) + + +État 130 + + 80 SuiteArgs: tVIRGULE . Arg SuiteArgs + + tENTIER décalage et aller à l'état 64 + tSUB décalage et aller à l'état 65 + tMUL décalage et aller à l'état 66 + tPO décalage et aller à l'état 67 + tAPPERSAND décalage et aller à l'état 68 + tVAR décalage et aller à l'état 69 + + E aller à l'état 104 + Invocation aller à l'état 71 + Arg aller à l'état 136 + + +État 131 + + 77 Args: Arg SuiteArgs . + + $défaut réduction par utilisation de la règle 77 (Args) + + +État 132 + + 34 Valeur: tVAR $@4 tAFFECTATION E . + 40 E: E . tADD E + 41 | E . tMUL E + 42 | E . tSUB E + 43 | E . tDIV E + + tADD décalage et aller à l'état 88 + tSUB décalage et aller à l'état 89 + tMUL décalage et aller à l'état 90 + tDIV décalage et aller à l'état 91 + + $défaut réduction par utilisation de la règle 34 (Valeur) + + +État 133 + + 28 SuiteDecl: tVIRGULE Valeur SuiteDecl . + + $défaut réduction par utilisation de la règle 28 (SuiteDecl) + + +État 134 + + 54 If: tIF tPO Cond tPF $@5 tAO . $@6 Instructions $@7 tAF $@8 $@9 Else + + $défaut réduction par utilisation de la règle 50 ($@6) + + $@6 aller à l'état 137 + + +État 135 + + 64 While: tWHILE tPO $@12 Cond tPF $@13 . tAO $@14 Instructions tAF $@15 + + tAO décalage et aller à l'état 138 + + +État 136 + + 80 SuiteArgs: tVIRGULE Arg . SuiteArgs + + tVIRGULE décalage et aller à l'état 130 + + $défaut réduction par utilisation de la règle 81 (SuiteArgs) + + SuiteArgs aller à l'état 139 + + +État 137 + + 54 If: tIF tPO Cond tPF $@5 tAO $@6 . Instructions $@7 tAF $@8 $@9 Else + + tMUL décalage et aller à l'état 32 + tINT décalage et aller à l'état 33 + tPRINT décalage et aller à l'état 34 + tIF décalage et aller à l'état 35 + tWHILE décalage et aller à l'état 36 + tCONST décalage et aller à l'état 37 + tVAR décalage et aller à l'état 38 + + $défaut réduction par utilisation de la règle 20 (Instructions) + + Instructions aller à l'état 140 + Instruction aller à l'état 40 + Decl aller à l'état 41 + Type aller à l'état 42 + Aff aller à l'état 43 + If aller à l'état 44 + While aller à l'état 45 + Invocation aller à l'état 46 + Print aller à l'état 47 + + +État 138 + + 64 While: tWHILE tPO $@12 Cond tPF $@13 tAO . $@14 Instructions tAF $@15 + + $défaut réduction par utilisation de la règle 62 ($@14) + + $@14 aller à l'état 141 + + +État 139 + + 80 SuiteArgs: tVIRGULE Arg SuiteArgs . + + $défaut réduction par utilisation de la règle 80 (SuiteArgs) + + +État 140 + + 54 If: tIF tPO Cond tPF $@5 tAO $@6 Instructions . $@7 tAF $@8 $@9 Else + + $défaut réduction par utilisation de la règle 51 ($@7) + + $@7 aller à l'état 142 + + +État 141 + + 64 While: tWHILE tPO $@12 Cond tPF $@13 tAO $@14 . Instructions tAF $@15 + + tMUL décalage et aller à l'état 32 + tINT décalage et aller à l'état 33 + tPRINT décalage et aller à l'état 34 + tIF décalage et aller à l'état 35 + tWHILE décalage et aller à l'état 36 + tCONST décalage et aller à l'état 37 + tVAR décalage et aller à l'état 38 + + $défaut réduction par utilisation de la règle 20 (Instructions) + + Instructions aller à l'état 143 + Instruction aller à l'état 40 + Decl aller à l'état 41 + Type aller à l'état 42 + Aff aller à l'état 43 + If aller à l'état 44 + While aller à l'état 45 + Invocation aller à l'état 46 + Print aller à l'état 47 + + +État 142 + + 54 If: tIF tPO Cond tPF $@5 tAO $@6 Instructions $@7 . tAF $@8 $@9 Else + + tAF décalage et aller à l'état 144 + + +État 143 + + 64 While: tWHILE tPO $@12 Cond tPF $@13 tAO $@14 Instructions . tAF $@15 + + tAF décalage et aller à l'état 145 + + +État 144 + + 54 If: tIF tPO Cond tPF $@5 tAO $@6 Instructions $@7 tAF . $@8 $@9 Else + + $défaut réduction par utilisation de la règle 52 ($@8) + + $@8 aller à l'état 146 + + +État 145 + + 64 While: tWHILE tPO $@12 Cond tPF $@13 tAO $@14 Instructions tAF . $@15 + + $défaut réduction par utilisation de la règle 63 ($@15) + + $@15 aller à l'état 147 + + +État 146 + + 54 If: tIF tPO Cond tPF $@5 tAO $@6 Instructions $@7 tAF $@8 . $@9 Else + + $défaut réduction par utilisation de la règle 53 ($@9) + + $@9 aller à l'état 148 + + +État 147 + + 64 While: tWHILE tPO $@12 Cond tPF $@13 tAO $@14 Instructions tAF $@15 . + + $défaut réduction par utilisation de la règle 64 (While) + + +État 148 + + 54 If: tIF tPO Cond tPF $@5 tAO $@6 Instructions $@7 tAF $@8 $@9 . Else + + tELSE décalage et aller à l'état 149 + + $défaut réduction par utilisation de la règle 58 (Else) + + Else aller à l'état 150 + + +État 149 + + 57 Else: tELSE . tAO $@10 Instructions tAF $@11 + 59 | tELSE . If + + tAO décalage et aller à l'état 151 + tIF décalage et aller à l'état 35 + + If aller à l'état 152 + + +État 150 + + 54 If: tIF tPO Cond tPF $@5 tAO $@6 Instructions $@7 tAF $@8 $@9 Else . + + $défaut réduction par utilisation de la règle 54 (If) + + +État 151 + + 57 Else: tELSE tAO . $@10 Instructions tAF $@11 + + $défaut réduction par utilisation de la règle 55 ($@10) + + $@10 aller à l'état 153 + + +État 152 + + 59 Else: tELSE If . + + $défaut réduction par utilisation de la règle 59 (Else) + + +État 153 + + 57 Else: tELSE tAO $@10 . Instructions tAF $@11 + + tMUL décalage et aller à l'état 32 + tINT décalage et aller à l'état 33 + tPRINT décalage et aller à l'état 34 + tIF décalage et aller à l'état 35 + tWHILE décalage et aller à l'état 36 + tCONST décalage et aller à l'état 37 + tVAR décalage et aller à l'état 38 + + $défaut réduction par utilisation de la règle 20 (Instructions) + + Instructions aller à l'état 154 + Instruction aller à l'état 40 + Decl aller à l'état 41 + Type aller à l'état 42 + Aff aller à l'état 43 + If aller à l'état 44 + While aller à l'état 45 + Invocation aller à l'état 46 + Print aller à l'état 47 + + +État 154 + + 57 Else: tELSE tAO $@10 Instructions . tAF $@11 + + tAF décalage et aller à l'état 155 + + +État 155 + + 57 Else: tELSE tAO $@10 Instructions tAF . $@11 + + $défaut réduction par utilisation de la règle 56 ($@11) + + $@11 aller à l'état 156 + + +État 156 + + 57 Else: tELSE tAO $@10 Instructions tAF $@11 . + + $défaut réduction par utilisation de la règle 57 (Else) diff --git a/compiler/analyse_syntaxique.y b/compiler/analyse_syntaxique.y index 4660fcb..09c1d7c 100644 --- a/compiler/analyse_syntaxique.y +++ b/compiler/analyse_syntaxique.y @@ -139,20 +139,19 @@ E : E tADD E {generate_instruction_3(&array, ADD, $1, $1, $3); free_temp(&table) E : E tMUL E {generate_instruction_3(&array, MUL, $1, $1, $3); free_temp(&table); $$ = $1;} ; E : E tSUB E {generate_instruction_3(&array, SOU, $1, $1, $3); free_temp(&table); $$ = $1;} ; E : E tDIV E {generate_instruction_3(&array, DIV, $1, $1, $3); free_temp(&table); $$ = $1;} ; -E : tSUB E {printf("Variable negative\n");} ; +E : tSUB E {} ; E : Invocation { //int vt = new_temp(&table); //generate_instruction_2(&array, COP, vt, $1); remove_symboles(&table); table.depth--; $$ = $1;}; -E : tPO E tPF {printf("Parenthèse\n"); $$ = $2; } ; +E : tPO E tPF {$$ = $2; } ; E : tAPPERSAND tVAR {int vt = new_temp(&table); int varAddr = variable_exists(&table, $2); generate_instruction_2(&array, LEA, vt, varAddr); $$ = vt;}; E : tMUL tVAR {int vt = new_temp(&table); int varAddr = variable_exists(&table, $2); generate_instruction_2(&array, COP, vt, varAddr); generate_instruction_2(&array, COP_LD, vt, vt); $$ = vt;}; If : tIF tPO Cond tPF { - //gen_jmpf(&table, &array, $3, -1); generate_instruction_2(&array, JMF, $3, -1); free_temp(&table); $1 = array.index; @@ -162,7 +161,7 @@ tAO {table.depth++;} Instructions {generate_instruction_1(&array, JMP, -1);} tAF int adr_jmp = array.index; update_jmf(&array, $1, adr_jmp); } -Else {printf("updating jump\n"); update_jmp(&array, $8, $13);}; +Else {update_jmp(&array, $8, $13);}; Else : tELSE tAO {table.depth++;} Instructions tAF {remove_symboles(&table); table.depth--;} {$$ = array.index;} ; Else : {$$ = array.index;}; @@ -171,7 +170,6 @@ Else : tELSE If {$$ = array.index;} ; While : tWHILE tPO { $2 = array.index ; } Cond tPF { - //gen_jmpf(&table, &array, $4, -1); generate_instruction_2(&array, JMF, $4, -1); free_temp(&table); $1 = array.index; @@ -179,7 +177,6 @@ While : tWHILE tPO { tAO {table.depth++;} Instructions tAF {remove_symboles(&table); table.depth--;} { int adr_jmp = array.index; update_jmf(&array, $1, adr_jmp); - //gen_jmpf(&table, &array, $1, $2); generate_instruction_1(&array, JMP, $2); }; diff --git a/compiler/code_c b/compiler/code_c index f0dfdca..e6b09ee 100644 --- a/compiler/code_c +++ b/compiler/code_c @@ -1,16 +1,19 @@ -int fonction1(int * a){ - int b = *a; - printf(b); - return 1; - } +int fonction1(int * p){ + int b = *p; + printf(b); + *p = 5; + return 2; +} int main(){ - int l = 21; - int * p = &l; - int c = fonction1(p); - printf(c); - p = &c; - *p = 2; - printf(c); + int a = 7; + int * pointeur = &a; + int c = fonction1(pointeur); + printf(c); + printf(*pointeur); + return 0; +} + + + - return 0; \ No newline at end of file diff --git a/compiler/compiler b/compiler/compiler new file mode 100755 index 0000000000000000000000000000000000000000..b766d79ad9728c75cbc42aab0fca8784dd873576 GIT binary patch literal 46944 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 literal 0 HcmV?d00001 diff --git a/compiler/memory_oriented_assembly.txt b/compiler/memory_oriented_assembly.txt index 8a5ed67..27e77b8 100644 --- a/compiler/memory_oriented_assembly.txt +++ b/compiler/memory_oriented_assembly.txt @@ -1,12 +1,14 @@ -JMP 8 +JMP 10 COP 255 0 COP_LD 255 [255] COP 1 255 COP 255 1 PRI 255 -AFC 255 1 +AFC 255 5 +COP_STR [0] 255 +AFC 255 2 RET 255 -AFC 255 21 +AFC 255 7 COP 0 255 LEA 255 0 COP 1 255 @@ -16,11 +18,8 @@ CALL 1 6 COP 2 255 COP 255 2 PRI 255 -LEA 255 2 -COP 1 255 -AFC 255 2 -COP_STR [1] 255 -COP 255 2 +COP 255 1 +COP_LD 255 [255] PRI 255 AFC 255 0 RET 255 diff --git a/cross_assembleur/STD_LOGIC_VECTOR_output b/cross_assembleur/STD_LOGIC_VECTOR_output index 638e5bc..6b76690 100644 --- a/cross_assembleur/STD_LOGIC_VECTOR_output +++ b/cross_assembleur/STD_LOGIC_VECTOR_output @@ -1 +1,5 @@ -(0=>"00000111000000010000001000000000", 1=>"00000111000000100000001100000000", 2=>"00000001000000110000000100000010", 3=>"00001000000000010000001100000000", 4=>"00000111000000010000001000000000", 5=>"00000111000000100000001100000000", 6=>"00000011000000110000000100000010", 7=>"00001000000000010000001100000000", 8=>"00000111000000010000001000000000", 9=>"00001000000000010000000100000000", others => "00000000000000000000000000000000") \ No newline at end of file +(0=>"00000111000000010000001000000000", 1=>"00000111000000100000001100000000", 2=>"00000001000000110000000100000010", 3=>"00001000000000010000001100000000", 4=>"00000111000000010000001000000000", 5=>"00000111000000100000001100000000", 6=>"00000011000000110000000100000010", 7=>"00001000000000010000001100000000", 8=>"00000111000000010000001000000000", 9=>"00001000000000010000000100000000", others => "00000000000000000000000000000000") + + + + diff --git a/cross_assembleur/cross_assembler b/cross_assembleur/cross_assembler new file mode 100755 index 0000000000000000000000000000000000000000..35feac57ca3104d301a88b0d71be031840869a0d GIT binary patch literal 28704 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%0A+qp0qo%%f7;tFV`q{ewA|uN@ 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 LQZp);E&sm&P~Vk` literal 0 HcmV?d00001 diff --git a/cross_assembleur/cross_input.txt b/cross_assembleur/cross_input.txt index 22198ad..4011bbb 100644 --- a/cross_assembleur/cross_input.txt +++ b/cross_assembleur/cross_input.txt @@ -1,3 +1,7 @@ ADD 1 2 3 SOU 1 2 3 -COP 1 2 \ No newline at end of file +COP 1 2 + + + + diff --git a/cross_assembleur/cross_output.txt b/cross_assembleur/cross_output.txt index b2c24da..9d8b5e4 100644 --- a/cross_assembleur/cross_output.txt +++ b/cross_assembleur/cross_output.txt @@ -8,3 +8,7 @@ 8 1 3 0 7 1 2 0 8 1 1 0 + + + + diff --git a/interpreter/interpreter b/interpreter/interpreter new file mode 100755 index 0000000000000000000000000000000000000000..94f2b5ca53e7df31fdffddbd81d9dd3b1ee401f8 GIT binary patch literal 37080 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