fixed several small issues

This commit is contained in:
Partho
2025-04-15 01:40:18 -04:00
parent 2b1557b52c
commit 8057060f26
4 changed files with 18 additions and 12 deletions

View File

@ -365,11 +365,12 @@ sblock:
}
statement_list
{
$<tn>$ = $3;
//$<tn>$ = $3;
printdebug("Moving up a scope after seeing sblock");
cur = getParent(cur);
}
R_BRACE
{$$ = $3;}
| L_BRACE
{
@ -390,9 +391,10 @@ sblock:
{
printdebug("Moving up a scope after seeing sblock with dblock");
cur = getParent(cur);
$<tn>$ = $5;
//$<tn>$ = $5;
}
R_BRACE
{$$ = $5;}
;
@ -880,7 +882,8 @@ assignable:
if (getNumArrDim(look_up(getParent(cur), getName((TableNode*)$1))) != $<integ>2) {
printdebug("expected %d arguments but had %d at line %d and column %d\n", getNumArrDim(look_up(cur, getName((TableNode*)$1))), $<integ>2, @2.first_line, @2.first_column);
}
$$ = getArrType(look_up(getParent(cur), getName((TableNode*)$1)));
$$ = getArrType(look_up(cur, getName((TableNode*)$1)));
printdebug("[ASSIGNABLE - RULE 2] assignable = type: %s | name_func = %s", getName((TableNode*)$$), getName((TableNode*)$1));
printdebug("[ASSIGNABLE - RULE 2] assignable = type: %s | name_func = %s", getName((TableNode*)$$), getName((TableNode*)$1));
}
cur = getParent(cur);

View File

@ -92,9 +92,10 @@ int getNumArrDim(TableNode *definition) {
"function. Invalid.");
return -1;
}
if (strcmp(getType(definition), "array") != 0) {
printdebug("not checking the dim of an array -- invalid op");
return 0;
if(getAdInfoType(definition) != TYPE_ARRAY_TYPE){
printdebug(
"passed an invalid node to getNumArrDim. Seeing tag %d in getNumArrDim. Invalid.",getAdInfoType(definition));
return -1;
}
return definition->additionalinfo->ArrayAdInfo->numofdimensions;
}
@ -113,8 +114,9 @@ TableNode *getArrType(TableNode *definition) {
"function. Invalid.");
return undefined;
}
if (strcmp(getType(definition), "array") != 0) {
printdebug("not checking the type of an array -- invalid op");
if(getAdInfoType(definition) != TYPE_ARRAY_TYPE){
printdebug(
"passed an invalid node to getArrType. Seeing tag %d. Invalid.",getAdInfoType(definition));
return undefined;
}
return definition->additionalinfo->ArrayAdInfo->typeofarray;
@ -1132,8 +1134,8 @@ void print_symbol_table(SymbolTable *table, FILE *file_ptr) {
}
if (getAdInfoType(entry) == TYPE_ARRAY) {
char *arrayType = (char *)malloc(100);
sprintf(arrayType, " %d -> %s", getNumArrDim(entry),
getName(getArrType(entry)));
//sprintf(arrayType, " %d -> %s", getNumArrDim(entry),
// getName(getArrType(entry)));
if (parentScopeNum == 0) {
st_fprint(file_ptr, getName(entry), currentScopeNum, -100, getType(entry), " Array Instance");

View File

@ -2,6 +2,6 @@ type main: string -> integer
function entry: main
entry(arg) := {
[int : x]
[integer : x]
return 0;
}

View File

@ -1,2 +1,3 @@
type tom : [integer : x; integer: y]
type rec : [integer : x; tom : prev; character : c; character : d; Boolean: b; integer : y]
type rec : [integer : x; tom : prev; character : c; character : d; Boolean: b; integer : y]
type tricky : [Boolean : b1; integer : k1; Boolean : b2; integer : k2]