diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2017-02-17 10:55:21 +0000 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2017-02-17 10:55:21 +0000 |
commit | a60337264c2551fffc2b5aeea12f40a06b7cb0e9 (patch) | |
tree | f9898cfcfed008a001bb03e3f8919f889107e469 /c_parser/src | |
parent | 392805699c8d411400901b8e3d7298f0f9198bb5 (diff) | |
download | Compiler-a60337264c2551fffc2b5aeea12f40a06b7cb0e9.tar.gz Compiler-a60337264c2551fffc2b5aeea12f40a06b7cb0e9.zip |
Working variables finally by adding mutable
Diffstat (limited to 'c_parser/src')
-rw-r--r-- | c_parser/src/c_parser.y | 14 | ||||
-rw-r--r-- | c_parser/src/parser_main.cpp | 4 |
2 files changed, 10 insertions, 8 deletions
diff --git a/c_parser/src/c_parser.y b/c_parser/src/c_parser.y index 5429f76..9171a1b 100644 --- a/c_parser/src/c_parser.y +++ b/c_parser/src/c_parser.y @@ -37,12 +37,12 @@ ROOT : EXT_DEF { ; } // EXTERNAL DEFINITION -EXT_DEF : EXT_DECLARATION { ; } - | EXT_DEF EXT_DECLARATION { $$ = $2; } +EXT_DEF : EXT_DECLARATION { g_root->push($1); } + | EXT_DEF EXT_DECLARATION { g_root->push($2); } EXT_DECLARATION : DECLARATION_SPEC EXT_DECLARATION_2 { $$ = $2; } -EXT_DECLARATION_2 : DECLARATION { ; } +EXT_DECLARATION_2 : DECLARATION { $$ = $1; } | FUNC_DEF { ; } // FUNCTION DEFINITION @@ -51,7 +51,7 @@ FUNC_DEF : T_IDENTIFIER T_LRB T_RRB T_LCB T_RCB { ; } // DECLARATION -DECLARATION : INIT_DECLARATOR_LIST T_SC { ; } +DECLARATION : INIT_DECLARATOR_LIST T_SC { $$ = $1; } DECLARATION_SPEC : DECLARATION_SPEC_T { ; } | DECLARATION_SPEC_T DECLARATION_SPEC { ; } @@ -60,13 +60,13 @@ DECLARATION_SPEC_T : T_TYPE_SPEC { ; } | T_TYPE_QUAL { ; } | T_STRG_SPEC { ; } -INIT_DECLARATOR_LIST : INIT_DECLARATOR { g_root->push($1); } - | INIT_DECLARATOR_LIST T_CMA INIT_DECLARATOR { g_root->push($3); } +INIT_DECLARATOR_LIST : INIT_DECLARATOR { $$ = new ast_VariableDeclaration($1); } + | INIT_DECLARATOR_LIST T_CMA INIT_DECLARATOR { $$->push($3); } INIT_DECLARATOR : DECLARATOR { ; } | DECLARATOR T_EQ INITIALIZER { ; } -DECLARATOR : T_IDENTIFIER {$$ = new ast_Declaration(*$1); } +DECLARATOR : T_IDENTIFIER {$$ = new ast_Variable(*$1); } INITIALIZER : T_INT_CONST { ; } diff --git a/c_parser/src/parser_main.cpp b/c_parser/src/parser_main.cpp index 02f3b3f..9626334 100644 --- a/c_parser/src/parser_main.cpp +++ b/c_parser/src/parser_main.cpp @@ -5,9 +5,11 @@ int main(int argc, char *argv[]) { ast_Top *ast = parseAST(); + std::cout << "<?xml version=\"1.0\"?>" << std::endl << "<Program>" << std::endl; + ast->print(); - std::cout << std::endl; + std::cout << "</Program>" << std::endl; return 0; } |