Concrete visitor for all AST classes.
Represents block encapsulating list of statements.
Represent symbol table for a NMODL block.
Concrete visitor for all AST classes.
Visitor to rename local variables conflicting with global scope
const symtab::SymbolTable * symtab
non-null symbol table in the scope hierarchy
LocalVarRenameVisitor()=default
void visit_statement_block(ast::StatementBlock &node) override
rename name conflicting variables in the statement block and it's all children
std::map< std::string, int > renamed_variables
variables currently being renamed and their count
std::stack< const symtab::SymbolTable * > symtab_stack
symbol tables in case of nested blocks
encapsulates code generation backend implementations
static Node * node(Object *)
Forward declarations of symbols in namespace nmodl::symtab.