From df8c9fb6618b919e90c5f0fbd48b9e3f9a30830b Mon Sep 17 00:00:00 2001 From: Partho Date: Fri, 11 Apr 2025 12:50:24 -0400 Subject: [PATCH] updated print symbol table to use getters --- src/symbol_table.c | 58 +++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/src/symbol_table.c b/src/symbol_table.c index a187fdf..ce69570 100644 --- a/src/symbol_table.c +++ b/src/symbol_table.c @@ -105,13 +105,13 @@ TableNode *getArrType(TableNode *definition) { printdebug( "passed an NULL entry to getArrType " "function. Invalid."); - return NULL; + return undefined; } if (definition == undefined) { printdebug( "passed an undefined entry to getArrType " "function. Invalid."); - return NULL; + return undefined; } if (strcmp(getType(definition), "array") != 0) { printdebug("not checking the type of an array -- invalid op"); @@ -1103,93 +1103,93 @@ void print_symbol_table(SymbolTable *table, FILE *file_ptr) { for (; entry != NULL; entry = getNextEntry(entry)) { if (getAdInfoType(entry) == TYPE_ARRAY_TYPE) { char *arrayType = (char *)malloc(100); - sprintf(arrayType, " %d -> %s", entry->additionalinfo->ArrayAdInfo->numofdimensions, - entry->additionalinfo->ArrayAdInfo->typeofarray->theName); + sprintf(arrayType, " %d -> %s", getNumArrDim(entry), + getName(getArrType(entry))); if (parentScopeNum == 0) { - st_fprint(file_ptr, entry->theName, currentScopeNum, -100, arrayType, " Type of Array"); + st_fprint(file_ptr, getName(entry), currentScopeNum, -100, arrayType, " Type of Array"); } else { - st_fprint(file_ptr, entry->theName, currentScopeNum, parentScopeNum, arrayType, " Type of Array"); + st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, arrayType, " Type of Array"); } } if (getAdInfoType(entry) == TYPE_RECORD_TYPE) { char *recordAdInfo = (char *)malloc(100); - sprintf(recordAdInfo, " elements-%d", entry->additionalinfo->RecAdInfo->numofelements); + sprintf(recordAdInfo, " elements-%d", getRecLength(entry)); if (parentScopeNum == 0) { - st_fprint(file_ptr, entry->theName, currentScopeNum, -100, "record type", recordAdInfo); + st_fprint(file_ptr, getName(entry), currentScopeNum, -100, "record type", recordAdInfo); } else { - st_fprint(file_ptr, entry->theName, currentScopeNum, parentScopeNum, "record type", recordAdInfo); + st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, "record type", recordAdInfo); } } if (getAdInfoType(entry) == TYPE_RECORD) { char *recordAdInfo = (char *)malloc(100); - sprintf(recordAdInfo, " elements-%d", entry->additionalinfo->RecAdInfo->numofelements); + sprintf(recordAdInfo, " elements-%d", getRecLength(entry)); if (parentScopeNum == 0) { - st_fprint(file_ptr, entry->theName, currentScopeNum, -100, "record instance", recordAdInfo); + st_fprint(file_ptr, getName(entry), currentScopeNum, -100, "record instance", recordAdInfo); } else { - st_fprint(file_ptr, entry->theName, currentScopeNum, parentScopeNum, "record instance", recordAdInfo); + st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, "record instance", recordAdInfo); } } if (getAdInfoType(entry) == TYPE_PRIMITIVE) { char *primAdInfo = (char *)malloc(100); - sprintf(primAdInfo, " size-%d bytes", entry->additionalinfo->PrimAdInfo->size); + sprintf(primAdInfo, " size-%d bytes", getPrimSize(entry)); if (parentScopeNum == 0) { - st_fprint(file_ptr, entry->theName, currentScopeNum, -100, " Primitive", primAdInfo); + st_fprint(file_ptr, getName(entry), currentScopeNum, -100, " Primitive", primAdInfo); } else { printdebug("%sTHIS ONE", COLOR_RED); printTableNode(entry); char *primType = (char *)malloc(sizeof(getType(entry) + 1)); sprintf(primType, " %s", getType(entry)); - st_fprint(file_ptr, entry->theName, currentScopeNum, parentScopeNum, primType, primAdInfo); + st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, primType, primAdInfo); } } if (getAdInfoType(entry) == TYPE_FUNCTION_TYPE) { char *functiontype = (char *)malloc(100); - sprintf(functiontype, " %s -> %s", entry->additionalinfo->FunTypeAdInfo->parameter->theName, - entry->additionalinfo->FunTypeAdInfo->returntype->theName); + sprintf(functiontype, " %s -> %s", getName(getParameter(entry)), + getName(getReturn(entry))); if (parentScopeNum == 0) { - st_fprint(file_ptr, entry->theName, currentScopeNum, -100, functiontype, " Type of Function"); + st_fprint(file_ptr, getName(entry), currentScopeNum, -100, functiontype, " Type of Function"); } else { - st_fprint(file_ptr, entry->theName, currentScopeNum, parentScopeNum, functiontype, " Type of Function"); + st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, functiontype, " Type of Function"); } } if (getAdInfoType(entry) == TYPE_FUNCTION_DECLARATION) { if (parentScopeNum == 0) { - st_fprint(file_ptr, entry->theName, currentScopeNum, -100, " Function", " Function Declaration"); + st_fprint(file_ptr, getName(entry), currentScopeNum, -100, " Function", " Function Declaration"); } else { - st_fprint(file_ptr, entry->theName, currentScopeNum, parentScopeNum, " Function", " Function Declaration"); + st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, " Function", " Function Declaration"); } } if (getAdInfoType(entry) == TYPE_UNDEFINED) { if (parentScopeNum == 0) { - st_fprint(file_ptr, entry->theName, currentScopeNum, -100, " undefined", "undefined entry"); + st_fprint(file_ptr, getName(entry), currentScopeNum, -100, " undefined", "undefined entry"); } else { - st_fprint(file_ptr, entry->theName, currentScopeNum, parentScopeNum, " undefined", "undefined entry"); + st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, " undefined", "undefined entry"); } } } if (getChildren(table) != NULL) { ListOfTable *node = getChildren(table); - for (; node != NULL; node = node->next) { - if ((node->table) == NULL) { - print_symbol_table(node->table, file_ptr); + for (; node != NULL; node = getRestOfChildren(node)) { + if ((getFirstChild(node)) == NULL) { + print_symbol_table(getFirstChild(node), file_ptr); } else { - if ((node->table)->Line_Number == -1) { + if (getLine(getFirstChild(node)) == -1) { continue; } else { - print_symbol_table(node->table, file_ptr); + print_symbol_table(getFirstChild(node), file_ptr); } } } } - if (table->Parent_Scope == NULL) { + if (getParent(table) == NULL) { printline(file_ptr); } }