From 850f46eeb6de286d4b079373104af87e3aca781c Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Fri, 17 Feb 2017 21:55:16 +0000 Subject: Finished functions completely, now moving on to statements --- c_parser/src/c_parser.y | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'c_parser/src') diff --git a/c_parser/src/c_parser.y b/c_parser/src/c_parser.y index bdafa5b..d8396a8 100644 --- a/c_parser/src/c_parser.y +++ b/c_parser/src/c_parser.y @@ -26,7 +26,7 @@ void yyerror(const char *); %type EXT_DEF EXT_DECLARATION %type FUNC_DEF PARAMETER_LIST PARAMETER PARAM_DECLARATOR %type DECLARATION_LIST DECLARATION DECLARATION_SPEC DECLARATION_SPEC_T INIT_DECLARATOR INIT_DECLARATOR_LIST DECLARATOR INITIALIZER -%type COMPOUND_STATEMENT COMPOUND_STATEMENT_2 +%type STATEMENT_LIST STATEMENT COMPOUND_STATEMENT COMPOUND_STATEMENT_2 // %type // T_CONSTANT %type T_IDENTIFIER //T_OPERATOR @@ -96,13 +96,24 @@ INITIALIZER : T_INT_CONST { ; } // STATEMENT +STATEMENT_LIST : STATEMENT { $$ = new ast_StatementList($1); } + | STATEMENT_LIST STATEMENT { $$->push($2); } +; + +STATEMENT : COMPOUND_STATEMENT { $$ = $1; } +; + COMPOUND_STATEMENT : T_LCB COMPOUND_STATEMENT_2 { $$ = $2; } ; -COMPOUND_STATEMENT_2 : T_RCB { $$ = new ast_CompoundStatement(); } +COMPOUND_STATEMENT_2 : T_RCB { $$ = new ast_CompoundStatement; } | DECLARATION_LIST T_RCB { $$ = new ast_CompoundStatement($1); } +| DECLARATION_LIST STATEMENT_LIST T_RCB { $$ = new ast_CompoundStatement($1, $2); } + | STATEMENT_LIST T_RCB { $$ = new ast_CompoundStatement($1); } ; +// Expressions + %% ast_Top *g_root; // Definition of variable (to match declaration earlier) -- cgit