yet another version of symbol table, parser seems to be passing tests