implementing symbol table and AST