From 869803f1371cde83634ca546913e2c98b4add4e3 Mon Sep 17 00:00:00 2001 From: Marek Baczynski Date: Sun, 7 Oct 2007 12:50:18 +0200 Subject: [PATCH] remove unused stuff and make symbol table searches public --- src/compiler.cpp | 12 +++++++++++- src/compiler.h | 12 ++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/compiler.cpp b/src/compiler.cpp index 8ae87ec..5ba7aac 100644 --- a/src/compiler.cpp +++ b/src/compiler.cpp @@ -82,7 +82,7 @@ static inline NodeStore find_all_children(ASTNode* p, std::string type) return r; } -static ASTNode* find_symbol(parse_info &pi, std::string name) +ASTNode* find_symbol(parse_info &pi, std::string name) { { SymbolTable::iterator it = pi.staticvars.find(name); @@ -108,6 +108,16 @@ static ASTNode* find_symbol(parse_info &pi, std::string name) return 0; } +ASTNode* find_local_symbol(parse_info& pi, std::string funcname, std::string symname) +{ + FunctionTable::iterator it = pi.functions.find(funcname); + SymbolTable::iterator symit = it->second.locals.find(symname); + if (symit != it->second.locals.end()) + return symit->second.first; + else + return 0; +} + static bool validate_loop_exit(ASTNode *leaf) { ASTNode *p = find_parent(leaf, "Loop"); diff --git a/src/compiler.h b/src/compiler.h index 4086950..3cb457c 100644 --- a/src/compiler.h +++ b/src/compiler.h @@ -32,10 +32,7 @@ struct function_info /// function local variables SymbolTable locals; - /// some code - void* code; - - function_info(): index(-1), ast(0), code(0) {} + function_info(): index(-1), ast(0) {} }; typedef std::map FunctionTable; @@ -74,4 +71,11 @@ int check_parse_results(parse_info &pi); /// constant expression precalculation void constant_expression_optimization(ASTNode* root); + +/// find symbol of a given name in a given parse_info object +ASTNode* find_symbol(parse_info &pi, std::string name); + +/// find symbol of a given name in a given function's locals table +ASTNode* find_local_symbol(parse_info& pi, std::string funcname, std::string symname); + #endif -- 2.11.4.GIT