#include "symbol_table.h" #include #include #include int main() { int err; SymbolTable table; SymbolItem *item; init_table(&table); err = add_symbol(&table, TYPE_CONST, "y"); printf("Adding y symbol\n"); assert(err == 0); err = add_symbol(&table, TYPE_INT, "x"); printf("Adding x symbol\n"); assert(err == 0); err = add_symbol(&table, TYPE_CONST, "y"); printf("Adding y symbol\n"); assert(err == -1); item = get_symbol_item(&table, "y"); printf("Getting item y: \n"); print_item(item); err = mark_symbol_initialized(&table, "y"); printf("Mark y initialized\n"); assert(err == 0); print_item(item); err = mark_symbol_initialized(&table, "y"); printf("Mark y initialized\n"); assert(err == -2); print_item(item); err = mark_symbol_initialized(&table, "b"); printf("Mark b initialized\n"); assert(err == -1); const SymbolItem* var1 = add_temp_symbol(&table, TYPE_INT); printf("Add _temp99 temporary variable\n"); assert(strcmp(var1->name, "_temp99") == 0); const SymbolItem* var2 = add_temp_symbol(&table, TYPE_INT); printf("Add _temp98 temporary variable\n"); assert(strcmp(var2->name, "_temp98") == 0); item = get_symbol_item(&table, "_temp98"); printf("_temp98:\n"); print_item(item); item = get_symbol_item(&table, "_temp0"); printf("_temp5:\n"); print_item(item); printf("\n=================\n"); printf("Full table: \n"); print_table(&table); }