From 22d9a82ba604b32fbdf97d3470c86e9d1c0a3942 Mon Sep 17 00:00:00 2001 From: Foussats Morgane Date: Thu, 1 Apr 2021 12:17:31 +0200 Subject: [PATCH] Table des symboles ok, start expressions arithm --- Table_Symboles/main.c | 13 - a.out | Bin 37088 -> 37568 bytes analyse_syntaxique.output | 1280 +++++++++-------- analyse_syntaxique.tab.c | 397 ++--- analyse_syntaxique.y | 28 +- gen_assembleur.c | 0 gen_assembleur.h | 21 + poubelle/test.c | 18 + script.sh | 9 +- .../table_symboles.c => table_symboles.c | 76 +- .../table_symboles.h => table_symboles.h | 30 +- 11 files changed, 980 insertions(+), 892 deletions(-) delete mode 100644 Table_Symboles/main.c create mode 100644 gen_assembleur.c create mode 100644 gen_assembleur.h create mode 100644 poubelle/test.c rename Table_Symboles/table_symboles.c => table_symboles.c (53%) rename Table_Symboles/table_symboles.h => table_symboles.h (74%) diff --git a/Table_Symboles/main.c b/Table_Symboles/main.c deleted file mode 100644 index ad357d1..0000000 --- a/Table_Symboles/main.c +++ /dev/null @@ -1,13 +0,0 @@ -#include -#include "table_symboles.h" - -int main() { - Table_Symboles T; - initialise_table(&T); - add_symbole_top(&T, "toto", 0, 1); - add_symbole_top(&T, "titi", 1, 0); - add_symbole_bottom(&T, "titi", 0, 1); - print_table(&T); - - return 0; -} diff --git a/a.out b/a.out index 33848c9230e3a307bf316eec2d8b49ae0f3a02d1..29ee846a20596d0beba6e507b02e403192198184 100755 GIT binary patch literal 37568 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 UNqukWr+rUI(0yO?VTrQ;19@wKbzx(_A{`mPO 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 +#include "table_symboles.h" -#line 167 "analyse_syntaxique.tab.c" /* yacc.c:358 */ +enum Initialised_Variable init; +enum Symbole_Type type; +Table_Symboles table; + +#line 172 "analyse_syntaxique.tab.c" /* yacc.c:358 */ #ifdef short # undef short @@ -405,14 +410,14 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 4 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 132 +#define YYLAST 133 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 35 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 24 +#define YYNNTS 23 /* YYNRULES -- Number of rules. */ -#define YYNRULES 54 +#define YYNRULES 53 /* YYNSTATES -- Number of states. */ #define YYNSTATES 125 @@ -463,12 +468,12 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint8 yyrline[] = { - 0, 63, 63, 65, 66, 68, 71, 72, 75, 77, - 78, 80, 81, 82, 83, 84, 85, 87, 89, 90, - 92, 93, 95, 96, 98, 100, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 112, 113, 115, 116, 118, - 120, 121, 123, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 135, 137, 139 + 0, 68, 68, 70, 71, 73, 76, 77, 80, 82, + 83, 85, 86, 87, 88, 89, 90, 92, 94, 95, + 97, 98, 100, 101, 104, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 117, 118, 120, 121, 123, 125, + 126, 128, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 140, 142, 144 }; #endif @@ -483,8 +488,8 @@ static const char *const yytname[] = "tINT", "tPRINT", "tRETURN", "tOR", "tAND", "tIF", "tELSE", "tWHILE", "tCONST", "tVAR", "tNOT", "$accept", "Main", "Params", "Param", "SuiteParams", "Body", "Instructions", "Instruction", "Decl", - "SuiteDecl", "Type", "Valeur", "Affbis", "Aff", "E", "Args", "SuiteArgs", - "If", "Else", "While", "Cond", "Invocation", "Print", "Return", YY_NULLPTR + "SuiteDecl", "Type", "Valeur", "Aff", "E", "Args", "SuiteArgs", "If", + "Else", "While", "Cond", "Invocation", "Print", "Return", YY_NULLPTR }; #endif @@ -500,10 +505,10 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -36 +#define YYPACT_NINF -35 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-36))) + (!!((Yystate) == (-35))) #define YYTABLE_NINF -1 @@ -514,19 +519,19 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int8 yypact[] = { - -7, -4, 26, 18, -36, 9, 12, 40, 36, -36, - 50, 9, -36, 54, -36, 36, -36, 55, 68, 79, - 39, -2, 63, 54, -36, 60, 80, -36, -36, -36, - 81, -36, 82, 64, 15, 15, -36, 65, 19, 19, - 88, -36, 86, 89, -36, -36, -36, -36, 93, -36, - 19, 19, 96, 15, 48, 97, -36, 99, 91, 100, - 24, 66, -36, 60, 98, 101, 1, 52, -36, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 15, - 15, 102, 103, 78, -36, -36, -36, 89, -36, -36, - -36, 5, 1, 108, -36, 24, 24, 24, 24, 24, - 24, -36, -36, 54, 54, 91, -36, 105, 106, -36, - 90, -36, -6, -36, 54, 110, 109, 15, -36, 112, - 113, 54, 111, 90, -36 + -3, -12, 31, 34, -35, 20, 25, 50, 44, -35, + 57, 20, -35, 46, -35, 44, -35, 52, 60, 65, + 56, -4, 58, 46, -35, 43, -35, -35, -35, 69, + -35, 79, 61, 14, 14, -35, 63, 16, 16, 85, + -35, 82, 91, -35, -35, 90, -35, 16, 16, 98, + 14, 45, 99, -35, 100, 101, 102, 81, 97, -35, + 16, 43, 103, 104, 8, 22, -35, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 14, 14, 108, + 109, 80, -35, -35, -35, -35, 49, 91, -35, -35, + -35, 1, 8, 106, -35, 49, 49, 49, 49, 49, + 49, -35, -35, 46, 46, 101, -35, 110, 111, -35, + 94, -35, -5, -35, 46, 112, 113, 14, -35, 105, + 115, 46, 116, 94, -35 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -536,33 +541,33 @@ static const yytype_uint8 yydefact[] = { 0, 0, 0, 0, 1, 3, 0, 0, 7, 5, 0, 0, 4, 10, 2, 7, 20, 0, 0, 0, - 0, 0, 0, 10, 15, 0, 0, 11, 12, 13, - 0, 14, 0, 0, 0, 0, 21, 36, 0, 0, - 0, 9, 22, 19, 23, 25, 16, 6, 0, 26, - 0, 0, 27, 0, 0, 0, 32, 0, 38, 0, - 24, 0, 8, 0, 0, 0, 34, 0, 51, 0, + 0, 0, 0, 10, 15, 0, 11, 12, 13, 0, + 14, 0, 0, 0, 0, 21, 35, 0, 0, 0, + 9, 23, 19, 16, 6, 0, 25, 0, 0, 26, + 0, 0, 0, 32, 0, 37, 0, 0, 0, 8, + 0, 0, 0, 0, 31, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 52, 54, 19, 17, 53, - 33, 28, 30, 29, 31, 43, 44, 45, 46, 48, - 47, 50, 49, 10, 10, 38, 18, 0, 0, 37, - 0, 42, 0, 39, 10, 0, 0, 0, 40, 0, - 0, 10, 0, 0, 41 + 0, 0, 34, 51, 24, 53, 22, 19, 17, 52, + 33, 27, 29, 28, 30, 42, 43, 44, 45, 47, + 46, 49, 48, 10, 10, 37, 18, 0, 0, 36, + 0, 41, 0, 38, 10, 0, 0, 0, 39, 0, + 0, 10, 0, 0, 40 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -36, -36, -36, 114, 115, -36, -22, -36, -36, 41, - -36, 69, -19, -36, -35, -36, 21, -36, 4, -36, - -33, -13, -36, -36 + -35, -35, -35, 118, 117, -35, -22, -35, -35, 40, + -35, 70, -35, -34, -35, 28, -35, 7, -35, -32, + -13, -35, -35 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { - -1, 2, 7, 8, 12, 14, 22, 23, 24, 64, - 25, 43, 26, 27, 54, 59, 84, 28, 113, 29, - 55, 56, 31, 40 + -1, 2, 7, 8, 12, 14, 22, 23, 24, 62, + 25, 42, 26, 51, 56, 82, 27, 113, 28, 52, + 53, 30, 39 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -570,38 +575,38 @@ static const yytype_int8 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint8 yytable[] = { - 30, 41, 57, 60, 61, 114, 44, 37, 71, 72, - 30, 70, 71, 72, 38, 66, 67, 1, 49, 3, - 68, 50, 49, 115, 51, 50, 4, 5, 51, 69, - 70, 71, 72, 6, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 44, 9, 101, 102, 52, 53, - 10, 11, 52, 69, 70, 71, 72, 69, 70, 71, - 72, 13, 90, 36, 33, 73, 74, 75, 76, 77, - 78, 69, 70, 71, 72, 79, 80, 34, 16, 17, - 86, 107, 108, 18, 119, 19, 20, 21, 35, 39, - 30, 30, 116, 42, 45, 46, 47, 48, 58, 122, - 62, 30, 38, 65, 63, 37, 83, 81, 30, 82, - 85, 105, 88, 103, 104, 89, 72, 110, 111, 117, - 112, 118, 120, 123, 121, 15, 109, 124, 106, 0, - 32, 0, 87 + 29, 40, 54, 57, 58, 36, 114, 68, 69, 70, + 29, 3, 37, 64, 65, 69, 70, 46, 66, 46, + 47, 1, 47, 48, 115, 48, 86, 67, 68, 69, + 70, 4, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 5, 6, 101, 102, 49, 50, 49, + 67, 68, 69, 70, 67, 68, 69, 70, 9, 11, + 10, 32, 71, 72, 73, 74, 75, 76, 13, 33, + 16, 17, 77, 78, 34, 18, 41, 19, 20, 21, + 35, 107, 108, 43, 38, 119, 67, 68, 69, 70, + 29, 29, 116, 44, 45, 84, 55, 59, 60, 122, + 63, 29, 67, 68, 69, 70, 61, 36, 29, 79, + 80, 85, 83, 105, 70, 120, 81, 88, 89, 103, + 104, 117, 110, 111, 112, 118, 121, 106, 123, 15, + 124, 87, 31, 109 }; -static const yytype_int8 yycheck[] = +static const yytype_uint8 yycheck[] = { - 13, 23, 35, 38, 39, 11, 25, 9, 7, 8, - 23, 6, 7, 8, 16, 50, 51, 24, 3, 23, - 53, 6, 3, 29, 9, 6, 0, 9, 9, 5, - 6, 7, 8, 24, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 63, 33, 79, 80, 33, 34, - 10, 15, 33, 5, 6, 7, 8, 5, 6, 7, - 8, 11, 10, 24, 9, 17, 18, 19, 20, 21, - 22, 5, 6, 7, 8, 27, 28, 9, 24, 25, - 14, 103, 104, 29, 117, 31, 32, 33, 9, 26, - 103, 104, 114, 33, 14, 14, 14, 33, 33, 121, - 12, 114, 16, 10, 15, 9, 15, 10, 121, 10, - 10, 33, 14, 11, 11, 14, 8, 12, 12, 9, - 30, 12, 10, 12, 11, 11, 105, 123, 87, -1, - 15, -1, 63 + 13, 23, 34, 37, 38, 9, 11, 6, 7, 8, + 23, 23, 16, 47, 48, 7, 8, 3, 50, 3, + 6, 24, 6, 9, 29, 9, 60, 5, 6, 7, + 8, 0, 10, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 9, 24, 77, 78, 33, 34, 33, + 5, 6, 7, 8, 5, 6, 7, 8, 33, 15, + 10, 9, 17, 18, 19, 20, 21, 22, 11, 9, + 24, 25, 27, 28, 9, 29, 33, 31, 32, 33, + 24, 103, 104, 14, 26, 117, 5, 6, 7, 8, + 103, 104, 114, 14, 33, 14, 33, 12, 16, 121, + 10, 114, 5, 6, 7, 8, 15, 9, 121, 10, + 10, 14, 10, 33, 8, 10, 15, 14, 14, 11, + 11, 9, 12, 12, 30, 12, 11, 87, 12, 11, + 123, 61, 15, 105 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -610,17 +615,17 @@ static const yytype_uint8 yystos[] = { 0, 24, 36, 23, 0, 9, 24, 37, 38, 33, 10, 15, 39, 11, 40, 38, 24, 25, 29, 31, - 32, 33, 41, 42, 43, 45, 47, 48, 52, 54, - 56, 57, 39, 9, 9, 9, 24, 9, 16, 26, - 58, 41, 33, 46, 47, 14, 14, 14, 33, 3, - 6, 9, 33, 34, 49, 55, 56, 55, 33, 50, - 49, 49, 12, 15, 44, 10, 49, 49, 55, 5, - 6, 7, 8, 17, 18, 19, 20, 21, 22, 27, - 28, 10, 10, 15, 51, 10, 14, 46, 14, 14, - 10, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 55, 55, 11, 11, 33, 44, 41, 41, 51, - 12, 12, 30, 53, 11, 29, 41, 9, 12, 55, - 10, 11, 41, 12, 53 + 32, 33, 41, 42, 43, 45, 47, 51, 53, 55, + 56, 39, 9, 9, 9, 24, 9, 16, 26, 57, + 41, 33, 46, 14, 14, 33, 3, 6, 9, 33, + 34, 48, 54, 55, 54, 33, 49, 48, 48, 12, + 16, 15, 44, 10, 48, 48, 54, 5, 6, 7, + 8, 17, 18, 19, 20, 21, 22, 27, 28, 10, + 10, 15, 50, 10, 14, 14, 48, 46, 14, 14, + 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 54, 54, 11, 11, 33, 44, 41, 41, 50, + 12, 12, 30, 52, 11, 29, 41, 9, 12, 54, + 10, 11, 41, 12, 52 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -628,10 +633,10 @@ static const yytype_uint8 yyr1[] = { 0, 35, 36, 37, 37, 38, 39, 39, 40, 41, 41, 42, 42, 42, 42, 42, 42, 43, 44, 44, - 45, 45, 46, 46, 47, 48, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 50, 50, 51, 51, 52, - 53, 53, 54, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 56, 57, 58 + 45, 45, 46, 46, 47, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 49, 49, 50, 50, 51, 52, + 52, 53, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 55, 56, 57 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -639,10 +644,10 @@ static const yytype_uint8 yyr2[] = { 0, 2, 6, 0, 2, 2, 4, 0, 4, 2, 0, 1, 1, 1, 1, 1, 2, 4, 3, 0, - 1, 2, 1, 1, 3, 2, 1, 1, 3, 3, - 3, 3, 1, 3, 2, 2, 0, 3, 0, 8, - 4, 9, 7, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 4, 5, 3 + 1, 2, 3, 1, 4, 1, 1, 3, 3, 3, + 3, 2, 1, 3, 2, 0, 3, 0, 8, 4, + 9, 7, 3, 3, 3, 3, 3, 3, 3, 3, + 2, 4, 5, 3 }; @@ -1319,205 +1324,205 @@ yyreduce: switch (yyn) { case 2: -#line 63 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Dans main\n");} -#line 1325 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 68 "analyse_syntaxique.y" /* yacc.c:1646 */ + {} +#line 1330 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 3: -#line 65 "analyse_syntaxique.y" /* yacc.c:1646 */ +#line 70 "analyse_syntaxique.y" /* yacc.c:1646 */ {printf("Sans params\n");} -#line 1331 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 1336 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 5: -#line 68 "analyse_syntaxique.y" /* yacc.c:1646 */ +#line 73 "analyse_syntaxique.y" /* yacc.c:1646 */ {printf("Parametre : %s\n", (yyvsp[0].id));} -#line 1337 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 1342 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 8: -#line 75 "analyse_syntaxique.y" /* yacc.c:1646 */ +#line 80 "analyse_syntaxique.y" /* yacc.c:1646 */ {printf("Dans body\n");} -#line 1343 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ - break; - - case 17: -#line 87 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Declaration\n");} -#line 1349 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 1348 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 20: -#line 92 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("int\n");} -#line 1355 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 97 "analyse_syntaxique.y" /* yacc.c:1646 */ + {type = TYPE_INT;} +#line 1354 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 21: -#line 93 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("const int\n");} -#line 1361 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 98 "analyse_syntaxique.y" /* yacc.c:1646 */ + {type = TYPE_CONST_INT;} +#line 1360 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 22: -#line 95 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Declaration %s\n", (yyvsp[0].id));} -#line 1367 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 100 "analyse_syntaxique.y" /* yacc.c:1646 */ + {add_symbole_top(&table, (yyvsp[-2].id), type, INITIALISED, table.depth);} +#line 1366 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ + break; + + case 23: +#line 101 "analyse_syntaxique.y" /* yacc.c:1646 */ + {add_symbole_top(&table, (yyvsp[0].id), type, NOT_INITIALISED, table.depth);} +#line 1372 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 24: -#line 98 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Affectation : %s\n", (yyvsp[-2].id));} -#line 1373 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 104 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Affectation : %s\n", (yyvsp[-3].id));} +#line 1378 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ + break; + + case 25: +#line 106 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("int %d\n", (yyvsp[0].nombre));} +#line 1384 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 26: -#line 102 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("int %d\n", (yyvsp[0].nombre));} -#line 1379 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 107 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("var %s\n", (yyvsp[0].id));} +#line 1390 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 27: -#line 103 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("var %s\n", (yyvsp[0].id));} -#line 1385 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 108 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Addition\n");} +#line 1396 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 28: -#line 104 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Addition\n");} -#line 1391 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 109 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Multiplication\n");} +#line 1402 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 29: -#line 105 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Multiplication\n");} -#line 1397 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 110 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Soustraction\n");} +#line 1408 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 30: -#line 106 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Soustraction\n");} -#line 1403 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 111 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Division\n");} +#line 1414 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 31: -#line 107 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Division\n");} -#line 1409 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 112 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Soustraction\n");} +#line 1420 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 33: -#line 109 "analyse_syntaxique.y" /* yacc.c:1646 */ +#line 114 "analyse_syntaxique.y" /* yacc.c:1646 */ {printf("Parenthèse\n");} -#line 1415 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 1426 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; - case 34: -#line 110 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Soustraction\n");} -#line 1421 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ + case 38: +#line 123 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Dans if\n");} +#line 1432 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 39: -#line 118 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Dans if\n");} -#line 1427 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 125 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("else\n");} +#line 1438 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 40: -#line 120 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("else\n");} -#line 1433 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 126 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("elsif\n");} +#line 1444 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 41: -#line 121 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("elsif\n");} -#line 1439 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 128 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Dans while\n");} +#line 1450 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 42: -#line 123 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Dans while\n");} -#line 1445 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 130 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Cond ==\n");} +#line 1456 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 43: -#line 125 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Cond ==\n");} -#line 1451 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 131 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Cond !=\n");} +#line 1462 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 44: -#line 126 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Cond !=\n");} -#line 1457 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 132 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Cond <\n");} +#line 1468 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 45: -#line 127 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Cond <\n");} -#line 1463 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 133 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Cond >\n");} +#line 1474 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 46: -#line 128 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Cond >\n");} -#line 1469 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 134 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Cond <=\n");} +#line 1480 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 47: -#line 129 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Cond <=\n");} -#line 1475 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 135 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Cond >=\n");} +#line 1486 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 48: -#line 130 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Cond >=\n");} -#line 1481 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 136 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Cond &&\n");} +#line 1492 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 49: -#line 131 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Cond &&\n");} -#line 1487 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 137 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Cond ||\n");} +#line 1498 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 50: -#line 132 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Cond ||\n");} -#line 1493 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 138 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Cond !\n");} +#line 1504 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 51: -#line 133 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Cond !\n");} -#line 1499 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 140 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("Dans invocation\n");} +#line 1510 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 52: -#line 135 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("Dans invocation\n");} -#line 1505 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 142 "analyse_syntaxique.y" /* yacc.c:1646 */ + {printf("printf de %s\n", (yyvsp[-2].id));} +#line 1516 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; case 53: -#line 137 "analyse_syntaxique.y" /* yacc.c:1646 */ - {printf("printf de %s\n", (yyvsp[-2].id));} -#line 1511 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ - break; - - case 54: -#line 139 "analyse_syntaxique.y" /* yacc.c:1646 */ +#line 144 "analyse_syntaxique.y" /* yacc.c:1646 */ {printf("return\n");} -#line 1517 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 1522 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ break; -#line 1521 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ +#line 1526 "analyse_syntaxique.tab.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -1745,10 +1750,14 @@ yyreturn: #endif return yyresult; } -#line 141 "analyse_syntaxique.y" /* yacc.c:1906 */ +#line 146 "analyse_syntaxique.y" /* yacc.c:1906 */ #include void main(void){ + initialise_table(&table); yyparse(); + print_table(&table); + remove_symboles(&table, 0); + print_table(&table); } diff --git a/analyse_syntaxique.y b/analyse_syntaxique.y index f7ee35b..bc35442 100644 --- a/analyse_syntaxique.y +++ b/analyse_syntaxique.y @@ -5,6 +5,11 @@ char id[30]; %{ #include +#include "table_symboles.h" + +enum Initialised_Variable init; +enum Symbole_Type type; +Table_Symboles table; %} @@ -60,7 +65,7 @@ char id[30]; //Fonction : tINT tVAR tPO Params tPF Body; -Main : tINT tMAIN tPO Params tPF Body {printf("Dans main\n");}; +Main : tINT tMAIN tPO Params tPF Body {}; Params : {printf("Sans params\n");} ; Params : Param SuiteParams ; @@ -84,20 +89,19 @@ Instruction : Print ; Instruction : Decl ; Instruction : Invocation tPV ; -Decl : Type Valeur SuiteDecl tPV {printf("Declaration\n");} ; +Decl : Type Valeur SuiteDecl tPV ; SuiteDecl: tVIRGULE Valeur SuiteDecl ; SuiteDecl: ; -Type : tINT {printf("int\n");} ; -Type : tCONST tINT {printf("const int\n");} ; +Type : tINT {type = TYPE_INT;} ; +Type : tCONST tINT {type = TYPE_CONST_INT;} ; -Valeur : tVAR {printf("Declaration %s\n", $1);}; -Valeur : Affbis ; +Valeur : tVAR tAFFECTATION E {add_symbole_top(&table, $1, type, INITIALISED, table.depth);}; +Valeur : tVAR {add_symbole_top(&table, $1, type, NOT_INITIALISED, table.depth);}; -Affbis : tVAR tAFFECTATION E {printf("Affectation : %s\n", $1);}; -Aff : Affbis tPV ; +Aff : tVAR tAFFECTATION E tPV {printf("Affectation : %s\n", $1);}; E : tENTIER {printf("int %d\n", $1);}; E : tVAR {printf("var %s\n", $1);}; @@ -105,9 +109,10 @@ E : E tADD E {printf("Addition\n");} ; E : E tMUL E {printf("Multiplication\n");} ; E : E tSUB E {printf("Soustraction\n");} ; E : E tDIV E {printf("Division\n");} ; +E : tSUB E {printf("Soustraction\n");} ; E : Invocation ; E : tPO E tPF {printf("Parenthèse\n");} ; -E : tSUB E {printf("Soustraction\n");} ; + Args : tVAR SuiteArgs ; Args : ; @@ -141,6 +146,11 @@ Return : tRETURN E tPV {printf("return\n");}; %% #include void main(void){ + //TODO: rajouter gestion des erreurs + initialise_table(&table); yyparse(); + print_table(&table); + remove_symboles(&table, 0); + print_table(&table); } diff --git a/gen_assembleur.c b/gen_assembleur.c new file mode 100644 index 0000000..e69de29 diff --git a/gen_assembleur.h b/gen_assembleur.h new file mode 100644 index 0000000..3b0f268 --- /dev/null +++ b/gen_assembleur.h @@ -0,0 +1,21 @@ +#ifndef GEN_ASSEMBLEUR_H +#define GEN_ASSEMBLEUR_H + +#define INSTRUCTION_TABLE_SIZE 1000 +#define INSTRUCTION_SIZE 100 + +//table des instructions +typedef struct table{ + char* +} + +enum operation{ADD, SUB, MUL, DIV}; + + +void gen_arithmetique(enum operation op, int arg1, int arg2); + + +//renvoie l'index (ou valeur?) de la premiere @ dispo +int new_temp(); + +#endif \ No newline at end of file diff --git a/poubelle/test.c b/poubelle/test.c new file mode 100644 index 0000000..3552281 --- /dev/null +++ b/poubelle/test.c @@ -0,0 +1,18 @@ +#include +#include "table_symboles.h" + +int main() { + + Table_Symboles table; + initialise_table(&table); + + add_symbole_top(&table, "var1" , TYPE_INT, INITIALISED); + add_symbole_top(&table, "var1" , TYPE_INT, INITIALISED); + + add_symbole_top(&table, "var2" , TYPE_INT, INITIALISED); + add_symbole_bottom(&table, "varTemp1" , TYPE_CONST_INT, INITIALISED); + add_symbole_bottom(&table, "varTemp2" , TYPE_INT, NOT_INITIALISED); + + print_table(&table); + return 0; +} diff --git a/script.sh b/script.sh index e3a96f5..7f06ad4 100755 --- a/script.sh +++ b/script.sh @@ -3,12 +3,9 @@ flex analyse_lexicale.lex gcc -w *.c -ly echo " int main(){ - const int toto = 1, mimi, lolo = 6; - int tata = 5, lala; - while (tata == 5){ - printf(tata); - lala = lolo + 6; - } + const int var1 = 1, var2; + int var2; + int var3, var4 = 1; return 1; } " | ./a.out \ No newline at end of file diff --git a/Table_Symboles/table_symboles.c b/table_symboles.c similarity index 53% rename from Table_Symboles/table_symboles.c rename to table_symboles.c index 38c74a2..fc31bde 100644 --- a/Table_Symboles/table_symboles.c +++ b/table_symboles.c @@ -1,7 +1,3 @@ -// -// Created by Nahom Belay on 31/03/2021. -// - #include "table_symboles.h" #include #include @@ -10,31 +6,33 @@ void initialise_table(Table_Symboles * table){ table->indexAvailableBottom = TABLE_SIZE - 1; table->indexAvailableTop = 0; + table->depth = 0; } int variable_exists(Table_Symboles * table, char * varName){ for (int i = 0; i < table->indexAvailableTop; i++){ if (strcmp(varName, table->array[i].Variable_Name) == 0){ - return -1; + return i; } } for (int i = (table->indexAvailableBottom + 1); i < TABLE_SIZE; i++){ if (strcmp(varName, table->array[i].Variable_Name) == 0){ - return -1; + return i; } } return 0; } -int add_symbole_top(Table_Symboles * table, char * varName, enum Symbole_Type type, enum Initialised_Variable init){ +int add_symbole_top(Table_Symboles * table, char * varName, enum Symbole_Type type, enum Initialised_Variable init, int depth){ Symbole symbole; - symbole.Variable_Name = varName; + strcpy(symbole.Variable_Name, varName); symbole.addr = table->indexAvailableTop; symbole.init = init; symbole.type = type; + symbole.symbole_depth = table->depth; if (table->indexAvailableTop >= table->indexAvailableBottom){ return -1; - } else if (variable_exists(table, varName) == -1){ + } else if (variable_exists(table, varName) != 0){ return -2; } else { table->array[table->indexAvailableTop] = symbole; @@ -45,13 +43,14 @@ int add_symbole_top(Table_Symboles * table, char * varName, enum Symbole_Type ty int add_symbole_bottom(Table_Symboles * table, char * varName, enum Symbole_Type type, enum Initialised_Variable init){ Symbole symbole; - symbole.Variable_Name = varName; + strcpy(symbole.Variable_Name, varName); symbole.addr = table->indexAvailableBottom; symbole.init = init; symbole.type = type; + //symbole.symbole_depth = -1; if (table->indexAvailableTop >= table->indexAvailableBottom){ return -1; - } else if (variable_exists(table, varName) == 1){ + } else if (variable_exists(table, varName) != 0){ return -2; } else { table->array[table->indexAvailableBottom] = symbole; @@ -60,28 +59,55 @@ int add_symbole_bottom(Table_Symboles * table, char * varName, enum Symbole_Type return 0; } +int remove_symboles(Table_Symboles * table, int depth){ + int index; + if (depth < table->depth){ + return -1; + } else { + index = table->indexAvailableTop; + while(table->array[index].symbole_depth == depth && index >=0){ + //remove + table->indexAvailableTop--; + index--; + } + + //TODO: vérifier qu'il n'y a pas de varaibles temporarires au moment de changement de profondeur + } + return 0; +} + +int initialise_symbole(Table_Symboles * table, char * varName){ + int index = variable_exists(table, varName); + if (index == -1){ + return -1; + } else { + table->array[index].init = INITIALISED; + } +} + void print_symbole(Symbole * symbole){ char * var = symbole->Variable_Name; int addr = symbole->addr; - int type = symbole->type; - char * typeStr; - if (type == 0){ - typeStr = "INT"; + enum Symbole_Type type = symbole->type; + char typeStr[20]; + if (type == TYPE_INT){ + strcpy(typeStr, "INT"); } else{ - typeStr = "CONST_INT"; + strcpy(typeStr, "CONST_INT"); } - int init = symbole->init; - char * initStr; - if (type == 0){ - initStr = "INITIALISED"; + enum Initialised_Variable init = symbole->init; + char initStr[20]; + if (init == INITIALISED){ + strcpy(initStr,"INITIALISED"); } else{ - initStr = "NOT_INITIALISED"; + strcpy(initStr,"NOT_INITIALISED"); } - printf("%-20s\t\t %-12s\t\t %-12d\t %-12s\n", var, typeStr, addr, initStr); + int depth = symbole->symbole_depth; + printf("%-20s\t\t %-12s\t\t %-12d\t %-20s\t %-12d\n", var, typeStr, addr, initStr, depth); } void print_table(Table_Symboles * table){ - printf("%-20s\t\t %-12s\t\t %-12s\t %-12s\n", "Variable Name", "Type", "Address", "Initialised"); + printf("%-20s\t\t %-12s\t\t %-12s\t %-20s\t %-12s\n", "Variable Name", "Type", "Address", "Initialised", "Depth"); int indexTop = table->indexAvailableTop; int indexBottom = table->indexAvailableBottom; Symbole symbole; @@ -90,11 +116,13 @@ void print_table(Table_Symboles * table){ print_symbole(&symbole); } if (table->indexAvailableBottom != TABLE_SIZE - 1){ - printf("%-20s\t\t %-12s\t\t %-12s\t %-12s\n", "...", "...", "...", "..."); + printf("%-20s\t\t %-12s\t\t %-12s\t %-20s\t %-12s\n", "...", "...", "...", "...", "..."); for (int i = (indexBottom + 1); i < TABLE_SIZE; i++){ symbole = table->array[i]; print_symbole(&symbole); } } + + } diff --git a/Table_Symboles/table_symboles.h b/table_symboles.h similarity index 74% rename from Table_Symboles/table_symboles.h rename to table_symboles.h index a070d8f..1774420 100644 --- a/Table_Symboles/table_symboles.h +++ b/table_symboles.h @@ -1,26 +1,25 @@ -// -// Created by Nahom Belay on 31/03/2021. -// - #ifndef TABLE_SYMBOLES_H #define TABLE_SYMBOLES_H #define TABLE_SIZE 50 +#define VARIABLE_SIZE 30 enum Symbole_Type {TYPE_INT , TYPE_CONST_INT}; enum Initialised_Variable{INITIALISED , NOT_INITIALISED}; typedef struct Symboles { - char * Variable_Name; + char Variable_Name[VARIABLE_SIZE]; int addr ; enum Symbole_Type type; enum Initialised_Variable init; + int symbole_depth; } Symbole; typedef struct Table_Symboles { Symbole array[TABLE_SIZE]; int indexAvailableTop; int indexAvailableBottom; + int depth; } Table_Symboles; /** @@ -37,7 +36,7 @@ void initialise_table(Table_Symboles * table); * @param init * @return if symbole added successfully, -1 if the table is full and -2 if the varaible already exists in the table */ -int add_symbole_top(Table_Symboles * table, char * varName, enum Symbole_Type type , enum Initialised_Variable init); +int add_symbole_top(Table_Symboles * table, char * varName, enum Symbole_Type type , enum Initialised_Variable init, int depth); /** * Adds a symbole at the bottom (temp variables) @@ -57,6 +56,23 @@ int add_symbole_bottom(Table_Symboles * table, char * varName, enum Symbole_Type */ int variable_exists(Table_Symboles * table, char * varName); +/** + * Removes symbole from table having certain depth + * @param table + * @param depth + * @return -1 if the symbole isn't in the table, 0 otherwise + */ +int remove_symboles(Table_Symboles * table, int depth); + +/** + * Initialises an already exisiting symbole + * @param table + * @param varName + * @return -1 if the symbole isn't in the table, 0 otherwise + */ +int initialise_symbole(Table_Symboles * table, char * varName); + + /** * Prints a symbole with this format * varName | Type | Address | Initialised/Not_Initialised @@ -70,4 +86,4 @@ void print_symbole(Symbole * symbole); */ void print_table(Table_Symboles * table); -#endif TABLE_SYMBOLES_H +#endif \ No newline at end of file