diff --git a/src/grammar.y b/src/grammar.y index 2751080..cfcc476 100644 --- a/src/grammar.y +++ b/src/grammar.y @@ -445,6 +445,7 @@ declaration: printdebug("ID/TYPE: %s, ID: %s", getName((TableNode*)$1), $3) ; int d = getAdInfoType((TableNode*)$1); if(d == TYPE_UNDEFINED) { + throw_error(ERROR_TYPE, "Undefined type passed in declaration list"); printdebug("Undefined type passed in declaration list"); CreateEntry(cur,d,(TableNode*)$1,$3,getAdInfo((TableNode*)$1)); } @@ -468,7 +469,7 @@ declaration: d = TYPE_PRIMITIVE; CreateEntry(cur,d,(TableNode*)$1,$3,getAdInfo((TableNode*)$1)); }else { - printdebug("Invalid type passed in declaration list."); + throw_error(ERROR_TYPE, "%s is being defined with an undefined type", $3); CreateEntry(cur,d,(TableNode*)$1,$3,getAdInfo((TableNode*)$1)); } } @@ -841,6 +842,9 @@ assignable: ID { TableNode* pass = look_up(cur,$1); + if(pass == undefined){ + throw_error(ERROR_TYPE, "Undefined variable %s", $1); + } $$ = pass; printdebug("[ASSIGNABLE - RULE 1] assignable = type: %s | ID = %s", getType(pass), getName(pass)); }