54 lines
No EOL
1.5 KiB
C
54 lines
No EOL
1.5 KiB
C
#include "symbol_table.h"
|
|
#include <stdio.h>
|
|
#include <assert.h>
|
|
#include <string.h>
|
|
|
|
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);
|
|
} |