diff options
author | Tucker Evans <tuckerevans24@gmail.com> | 2019-08-17 15:47:08 -0400 |
---|---|---|
committer | Tucker Evans <tuckerevans24@gmail.com> | 2019-08-17 15:47:08 -0400 |
commit | e1d044ff79638cf781816e8723fa78f1e9a7b34e (patch) | |
tree | 3d3c1e0bb1c1325a8fda319277c2cf97a6ec8f13 | |
parent | 9508f73e75aa588e9639530c72e8f5ed2c02067c (diff) |
Add Type checking if statement condition
-rw-r--r-- | scope.c | 1 | ||||
-rw-r--r-- | sem_check.c | 9 | ||||
-rw-r--r-- | tree.c | 2 |
3 files changed, 11 insertions, 1 deletions
@@ -5,6 +5,7 @@ #include "node.h" #include "scope.h" +#include "pc.h" scope* mkscope() { diff --git a/sem_check.c b/sem_check.c index d174bf8..7e6e338 100644 --- a/sem_check.c +++ b/sem_check.c @@ -123,13 +123,20 @@ ptree *t; if (type == ARRAY - INT || type == ARRAY - REAL) return ARRAY - type; break; + case IF: + if (!(t->r && t->l)) + yyerror("Incomplete parse tree\n"); + + if (t->l->ret_type != BOOL) + yyerror("If condition must be of type BOOL\n"); + return 0; + default: return -200; snprintf(buf, 101, "Unknown tree node: %d...\n", t->type); yyerror(buf); } - return -1; } @@ -5,6 +5,8 @@ #include "node.h" #include "tree.h" +#include "scope.h" +#include "sem_check.h" #include "y.tab.h" #include "pc.h" |