aboutsummaryrefslogtreecommitdiffstats
path: root/c_parser/src/c_parser.y
diff options
context:
space:
mode:
Diffstat (limited to 'c_parser/src/c_parser.y')
-rw-r--r--c_parser/src/c_parser.y30
1 files changed, 13 insertions, 17 deletions
diff --git a/c_parser/src/c_parser.y b/c_parser/src/c_parser.y
index 25659b5..7d36fc6 100644
--- a/c_parser/src/c_parser.y
+++ b/c_parser/src/c_parser.y
@@ -15,32 +15,28 @@ void yyerror(const char *);
// AST node.
%union{
const Expression *expr;
- double number;
+ // double number;
std::string *string;
}
-
-%token T_KEYWORD T_IDENTIFIER T_CONSTANT T_OPERATOR T_LCBRACKET T_RCBRACKET
-
-%type <expr> STMNT_LIST STMNT COMP_STMNT EXPR_STMNT SLCT_STMNT ITR_STMNT JMP_STMNT
-%type <number> T_CONSTANT
-%type <string> T_KEYWORD T_IDENTIFIER T_OPERATOR
-
+
+%token T_KEYWORD T_IDENTIFIER T_SC //T_CONSTANT T_OPERATOR T_LCBRACKET T_RCBRACKET
+
+%type <expr> STMNT_LIST STMNT DCLRTN // COMP_STMNT EXPR_STMNT SLCT_STMNT ITR_STMNT JMP_STMNT
+// %type <number> // T_CONSTANT
+%type <string> T_KEYWORD T_IDENTIFIER //T_OPERATOR
+
%start ROOT
-
+
%%
ROOT : STMNT_LIST { g_root = $1; }
-STMNT_LIST : STMNT
- | STMNT_LIST STMNT
+STMNT_LIST : STMNT { $$ = $1; }
+ | STMNT_LIST STMNT { $$ = $2; }
-STMNT : COMP_STMNT
- | EXPR_STMNT
- | SLCT_STMNT
- | ITR_STMNT
- | JMP_STMNT
+STMNT : DCLRTN { $$ = $1; }
-COMP_STMNT : STMNT_LIST
+DCLRTN : T_KEYWORD T_IDENTIFIER T_SC { $$ = new Declaration(*$2); }
%%