![]() |
User Guide
|
Concrete visitor for constructing symbol table from AST. More...
Concrete visitor for constructing symbol table from AST.
Definition at line 37 of file symtab_visitor.hpp.
#include <symtab_visitor.hpp>
Private Attributes | |
symtab::ModelSymbolTable * | modsymtab = nullptr |
std::unique_ptr< printer::JSONPrinter > | printer |
std::set< std::string > | block_to_solve |
bool | update = false |
bool | under_state_block = false |
|
inlineexplicit |
Definition at line 47 of file symtab_visitor.hpp.
|
inline |
Definition at line 51 of file symtab_visitor.hpp.
|
inline |
Definition at line 55 of file symtab_visitor.hpp.
|
inline |
Definition at line 59 of file symtab_visitor.hpp.
void nmodl::visitor::SymtabVisitor::add_model_symbol_with_property | ( | ast::Node * | node, |
symtab::syminfo::NmodlType | property | ||
) |
Definition at line 150 of file symtab_visitor_helper.hpp.
void nmodl::visitor::SymtabVisitor::setup_symbol | ( | ast::Node * | node, |
symtab::syminfo::NmodlType | property | ||
) |
helper function to setup/insert symbol into symbol table for the ast nodes which are of variable types
if prime variable is already exist in symbol table then just update the order
range and non_spec_cur can appear in any order in neuron block. for both properties, we have to check if symbol is already exist. if so we have to return to avoid duplicate definition error.
insert might return different symbol if already exist in the same scope
visit children, most likely variables are already leaf nodes, not necessary to visit
Definition at line 53 of file symtab_visitor_helper.hpp.
void nmodl::visitor::SymtabVisitor::setup_symbol_table | ( | ast::Ast * | node, |
const std::string & | name, | ||
bool | is_global | ||
) |
entering into new nmodl block
there is only one solve statement allowed in mod file
not required at the moment but every node has pointer to associated symbol table
when visiting highest level node i.e. Program, we insert all global variables to the global symbol table
look for all children blocks recursively
existing nmodl block
Definition at line 185 of file symtab_visitor_helper.hpp.
void nmodl::visitor::SymtabVisitor::setup_symbol_table_for_global_block | ( | ast::Node * | node | ) |
Definition at line 232 of file symtab_visitor_helper.hpp.
void nmodl::visitor::SymtabVisitor::setup_symbol_table_for_program_block | ( | ast::Program * | node | ) |
Symtab visitor could be called multiple times, after optimization passes, in which case we have to throw awayold symbol tables and setup new ones.
Definition at line 225 of file symtab_visitor_helper.hpp.
void nmodl::visitor::SymtabVisitor::setup_symbol_table_for_scoped_block | ( | ast::Node * | node, |
const std::string & | name | ||
) |
Definition at line 237 of file symtab_visitor_helper.hpp.
|
overridevirtual |
visit node of type ast::AfterBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 154 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::Argument
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 27 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::AssignedBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 79 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::AssignedDefinition
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 207 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::BABlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 158 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::BbcorePointerVar
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 63 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::BeforeBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 150 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::BreakpointBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 146 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::ConstantBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 175 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::ConstantVar
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 187 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::ConstructorBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 91 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::CvodeBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 231 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::Define
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 199 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::DerivativeBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 103 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::DestructorBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 95 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::DiscreteBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 118 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::EigenLinearSolverBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 227 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::EigenNewtonSolverBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 223 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::ElectrodeCurVar
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 43 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::ExternVar
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 67 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::FactorDef
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 195 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::ForNetcon
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 162 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::FunctionBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 128 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::FunctionTableBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 123 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::GlobalVar
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 51 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::IndependentBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 75 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::InitialBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 87 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::KineticBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 166 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::LinearBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 108 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::LocalVar
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 183 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::LongitudinalDiffusionBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 235 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::NetReceiveBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 138 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::NeuronBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 179 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::NonLinearBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 113 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::NonspecificCurVar
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 39 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::NrnStateBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 219 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::ParamAssign
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 203 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::ParamBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 71 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::PointerVar
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 55 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::PrimeName
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 23 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::ProcedureBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 133 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::Program
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 215 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::RandomVar
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 59 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::RangeVar
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 47 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::ReadIonVar
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 31 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::SolveBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 142 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::StateBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 83 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::StatementBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 99 of file symtab_visitor.cpp.
|
overridevirtual |
Visit table statement and update symbol in symbol table.
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 247 of file symtab_visitor_helper.hpp.
|
overridevirtual |
visit node of type ast::UnitBlock
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 171 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::UnitDef
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 191 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::Useion
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 211 of file symtab_visitor.cpp.
|
overridevirtual |
visit node of type ast::WriteIonVar
Reimplemented from nmodl::visitor::AstVisitor.
Definition at line 35 of file symtab_visitor.cpp.
|
private |
Definition at line 42 of file symtab_visitor.hpp.
|
private |
Definition at line 39 of file symtab_visitor.hpp.
|
private |
Definition at line 41 of file symtab_visitor.hpp.
|
private |
Definition at line 44 of file symtab_visitor.hpp.
|
private |
Definition at line 43 of file symtab_visitor.hpp.