diff options
-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" |