User Guide
|
Classes for implementing Abstract Syntax Tree (AST) More...
Classes for implementing Abstract Syntax Tree (AST)
Classes | |
class | nmodl::ast::AfterBlock |
Represents a AFTER block in NMODL. More... | |
class | nmodl::ast::Argument |
Represents an argument to functions and procedures. More... | |
class | nmodl::ast::AssignedBlock |
Represents a ASSIGNED block in the NMODL. More... | |
class | nmodl::ast::AssignedDefinition |
Represents a statement in ASSIGNED or STATE block. More... | |
struct | nmodl::ast::Ast |
Base class for all Abstract Syntax Tree node types. More... | |
class | nmodl::ast::BABlock |
Represents a block to be executed before or after another block. More... | |
class | nmodl::ast::BABlockType |
Type to represent different block types for before/after block. More... | |
class | nmodl::ast::BbcorePointer |
Represents BBCOREPOINTER statement in NMODL. More... | |
class | nmodl::ast::BbcorePointerVar |
Represent a single variable of type BBCOREPOINTER. More... | |
class | nmodl::ast::BeforeBlock |
Represents a BEFORE block in NMODL. More... | |
class | nmodl::ast::BinaryExpression |
Represents binary expression in the NMODL. More... | |
class | nmodl::ast::BinaryOperator |
Operator used in ast::BinaryExpression. More... | |
class | nmodl::ast::Block |
Base class for all block scoped nodes. More... | |
class | nmodl::ast::BlockComment |
Represents a multi-line comment in NMODL. More... | |
class | nmodl::ast::Boolean |
Represents a boolean variable. More... | |
class | nmodl::ast::BreakpointBlock |
Represents a BREAKPOINT block in NMODL. More... | |
class | nmodl::ast::Compartment |
Represent COMPARTMENT statement in NMODL. More... | |
class | nmodl::ast::ConductanceHint |
Represents CONDUCTANCE statement in NMODL. More... | |
class | nmodl::ast::Conserve |
Represent CONSERVE statement in NMODL. More... | |
class | nmodl::ast::ConstantBlock |
Represent CONSTANT block in the mod file. More... | |
class | nmodl::ast::ConstantStatement |
Represent statement in CONSTANT block of NMODL. More... | |
class | nmodl::ast::ConstantVar |
Represents a variable in the ast::ConstantBlock. More... | |
class | nmodl::ast::ConstructorBlock |
Represents a CONSTRUCTOR block in the NMODL. More... | |
class | nmodl::ast::CvodeBlock |
Represents a block used for variable timestep integration (CVODE) of DERIVATIVE blocks. More... | |
class | nmodl::ast::Define |
Represents a DEFINE statement in NMODL. More... | |
class | nmodl::ast::DerivativeBlock |
Represents DERIVATIVE block in the NMODL. More... | |
class | nmodl::ast::DerivimplicitCallback |
Represent a callback to NEURON's derivimplicit solver. More... | |
class | nmodl::ast::DestructorBlock |
Represents a DESTRUCTOR block in the NMODL. More... | |
class | nmodl::ast::DiffEqExpression |
Represents differential equation in DERIVATIVE block. More... | |
class | nmodl::ast::DiscreteBlock |
TODO. More... | |
class | nmodl::ast::Double |
Represents a double variable. More... | |
class | nmodl::ast::DoubleUnit |
TODO. More... | |
class | nmodl::ast::EigenLinearSolverBlock |
Represent linear solver solution block based on Eigen. More... | |
class | nmodl::ast::EigenNewtonSolverBlock |
Represent newton solver solution block based on Eigen. More... | |
class | nmodl::ast::ElectrodeCurVar |
TODO. More... | |
class | nmodl::ast::ElectrodeCurrent |
Represents ELECTRODE_CURRENT variables statement in NMODL. More... | |
class | nmodl::ast::ElseIfStatement |
TODO. More... | |
class | nmodl::ast::ElseStatement |
TODO. More... | |
class | nmodl::ast::Expression |
Base class for all expressions in the NMODL. More... | |
class | nmodl::ast::ExpressionStatement |
TODO. More... | |
class | nmodl::ast::ExternVar |
TODO. More... | |
class | nmodl::ast::External |
This construct is deprecated and no longer supported in the NMODL. More... | |
class | nmodl::ast::FactorDef |
TODO. More... | |
class | nmodl::ast::Float |
Represents a float variable. More... | |
class | nmodl::ast::ForNetcon |
TODO. More... | |
class | nmodl::ast::FromStatement |
TODO. More... | |
class | nmodl::ast::FunctionBlock |
TODO. More... | |
class | nmodl::ast::FunctionCall |
TODO. More... | |
class | nmodl::ast::FunctionTableBlock |
TODO. More... | |
class | nmodl::ast::Global |
Represents GLOBAL statement in NMODL. More... | |
class | nmodl::ast::GlobalVar |
TODO. More... | |
class | nmodl::ast::Identifier |
Base class for all identifiers. More... | |
class | nmodl::ast::IfStatement |
TODO. More... | |
class | nmodl::ast::Include |
Represents an INCLUDE statement in NMODL. More... | |
class | nmodl::ast::IndependentBlock |
Represents a INDEPENDENT block in the NMODL. More... | |
class | nmodl::ast::IndexedName |
Represents specific element of an array variable. More... | |
class | nmodl::ast::InitialBlock |
Represents a INITIAL block in the NMODL. More... | |
class | nmodl::ast::Integer |
Represents an integer variable. More... | |
class | nmodl::ast::KineticBlock |
TODO. More... | |
class | nmodl::ast::LagStatement |
Represents a LAG statement in the mod file. More... | |
class | nmodl::ast::Limits |
TODO. More... | |
class | nmodl::ast::LinEquation |
One equation in a system of equations tha collectively form a LINEAR block. More... | |
class | nmodl::ast::LineComment |
Represents a one line comment in NMODL. More... | |
class | nmodl::ast::LinearBlock |
Represents LINEAR block in the NMODL. More... | |
class | nmodl::ast::LocalListStatement |
TODO. More... | |
class | nmodl::ast::LocalVar |
TODO. More... | |
class | nmodl::ast::LonDiffuse |
Represent LONGITUDINAL_DIFFUSION statement in NMODL. More... | |
class | nmodl::ast::LongitudinalDiffusionBlock |
Extracts information required for LONGITUDINAL_DIFFUSION for each KINETIC block. More... | |
class | nmodl::ast::Model |
TODO. More... | |
class | nmodl::ast::MutexLock |
Represent MUTEXLOCK statement in NMODL. More... | |
class | nmodl::ast::MutexUnlock |
Represent MUTEXUNLOCK statement in NMODL. More... | |
class | nmodl::ast::Name |
Represents a name. More... | |
class | nmodl::ast::NetReceiveBlock |
TODO. More... | |
class | nmodl::ast::NeuronBlock |
Represent NEURON block in the mod file. More... | |
class | nmodl::ast::Node |
Base class for all AST node. More... | |
class | nmodl::ast::NonLinEquation |
One equation in a system of equations that collectively make a NONLINEAR block. More... | |
class | nmodl::ast::NonLinearBlock |
Represents NONLINEAR block in the NMODL. More... | |
class | nmodl::ast::Nonspecific |
Represents NONSPECIFIC_CURRENT variables statement in NMODL. More... | |
class | nmodl::ast::NonspecificCurVar |
TODO. More... | |
class | nmodl::ast::NrnStateBlock |
Represents the coreneuron nrn_state callback function. More... | |
class | nmodl::ast::Number |
Base class for all numbers. More... | |
class | nmodl::ast::NumberRange |
TODO. More... | |
class | nmodl::ast::OntologyStatement |
Represents CURIE information in NMODL. More... | |
class | nmodl::ast::ParamAssign |
TODO. More... | |
class | nmodl::ast::ParamBlock |
Represents a PARAMETER block in the NMODL. More... | |
class | nmodl::ast::ParenExpression |
TODO. More... | |
class | nmodl::ast::Pointer |
Represents POINTER statement in NMODL. More... | |
class | nmodl::ast::PointerVar |
TODO. More... | |
class | nmodl::ast::PrimeName |
Represents a prime variable (for ODE) More... | |
class | nmodl::ast::ProcedureBlock |
TODO. More... | |
class | nmodl::ast::Program |
Represents top level AST node for whole NMODL input. More... | |
class | nmodl::ast::ProtectStatement |
TODO. More... | |
class | nmodl::ast::RandomVar |
Single variable of type RANDOM. More... | |
class | nmodl::ast::RandomVarList |
Represents RANDOM statement in NMODL. More... | |
class | nmodl::ast::Range |
Represents RANGE variables statement in NMODL. More... | |
class | nmodl::ast::RangeVar |
TODO. More... | |
class | nmodl::ast::ReactVarName |
TODO. More... | |
class | nmodl::ast::ReactionOperator |
TODO. More... | |
class | nmodl::ast::ReactionStatement |
TODO. More... | |
class | nmodl::ast::ReadIonVar |
TODO. More... | |
class | nmodl::ast::SolutionExpression |
Represent solution of a block in the AST. More... | |
class | nmodl::ast::SolveBlock |
TODO. More... | |
class | nmodl::ast::StateBlock |
Represents a STATE block in the NMODL. More... | |
class | nmodl::ast::Statement |
TODO. More... | |
class | nmodl::ast::StatementBlock |
Represents block encapsulating list of statements. More... | |
class | nmodl::ast::String |
Represents a string. More... | |
class | nmodl::ast::Suffix |
Represents SUFFIX statement in NMODL. More... | |
class | nmodl::ast::TableStatement |
Represents TABLE statement in NMODL. More... | |
class | nmodl::ast::ThreadSafe |
Represents THREADSAFE statement in NMODL. More... | |
class | nmodl::ast::UnaryExpression |
TODO. More... | |
class | nmodl::ast::UnaryOperator |
TODO. More... | |
class | nmodl::ast::Unit |
TODO. More... | |
class | nmodl::ast::UnitBlock |
TODO. More... | |
class | nmodl::ast::UnitDef |
TODO. More... | |
class | nmodl::ast::UnitState |
TODO. More... | |
class | nmodl::ast::UpdateDt |
Statement to indicate a change in timestep in a given block. More... | |
class | nmodl::ast::Useion |
Represents USEION statement in NMODL. More... | |
class | nmodl::ast::Valence |
TODO. More... | |
class | nmodl::ast::VarName |
Represents a variable. More... | |
class | nmodl::ast::Verbatim |
Represents a C code block. More... | |
class | nmodl::ast::Watch |
TODO. More... | |
class | nmodl::ast::WatchStatement |
Represent WATCH statement in NMODL. More... | |
class | nmodl::ast::WhileStatement |
TODO. More... | |
class | nmodl::ast::WrappedExpression |
Wrap any other expression type. More... | |
class | nmodl::ast::WriteIonVar |
TODO. More... | |
Functions | |
virtual std::shared_ptr< Ast > | nmodl::ast::Ast::get_shared_ptr () |
get std::shared_ptr from this pointer of the AST node More... | |
virtual std::shared_ptr< const Ast > | nmodl::ast::Ast::get_shared_ptr () const |
get std::shared_ptr from this pointer of the AST node More... | |
virtual bool | nmodl::ast::Ast::is_ast () const noexcept |
Check if the ast node is an instance of ast::Ast. More... | |
virtual bool | nmodl::ast::Ast::is_node () const noexcept |
Check if the ast node is an instance of ast::Node. More... | |
virtual bool | nmodl::ast::Ast::is_statement () const noexcept |
Check if the ast node is an instance of ast::Statement. More... | |
virtual bool | nmodl::ast::Ast::is_expression () const noexcept |
Check if the ast node is an instance of ast::Expression. More... | |
virtual bool | nmodl::ast::Ast::is_block () const noexcept |
Check if the ast node is an instance of ast::Block. More... | |
virtual bool | nmodl::ast::Ast::is_identifier () const noexcept |
Check if the ast node is an instance of ast::Identifier. More... | |
virtual bool | nmodl::ast::Ast::is_number () const noexcept |
Check if the ast node is an instance of ast::Number. More... | |
virtual bool | nmodl::ast::Ast::is_string () const noexcept |
Check if the ast node is an instance of ast::String. More... | |
virtual bool | nmodl::ast::Ast::is_integer () const noexcept |
Check if the ast node is an instance of ast::Integer. More... | |
virtual bool | nmodl::ast::Ast::is_float () const noexcept |
Check if the ast node is an instance of ast::Float. More... | |
virtual bool | nmodl::ast::Ast::is_double () const noexcept |
Check if the ast node is an instance of ast::Double. More... | |
virtual bool | nmodl::ast::Ast::is_boolean () const noexcept |
Check if the ast node is an instance of ast::Boolean. More... | |
virtual bool | nmodl::ast::Ast::is_name () const noexcept |
Check if the ast node is an instance of ast::Name. More... | |
virtual bool | nmodl::ast::Ast::is_prime_name () const noexcept |
Check if the ast node is an instance of ast::PrimeName. More... | |
virtual bool | nmodl::ast::Ast::is_indexed_name () const noexcept |
Check if the ast node is an instance of ast::IndexedName. More... | |
virtual bool | nmodl::ast::Ast::is_var_name () const noexcept |
Check if the ast node is an instance of ast::VarName. More... | |
virtual bool | nmodl::ast::Ast::is_argument () const noexcept |
Check if the ast node is an instance of ast::Argument. More... | |
virtual bool | nmodl::ast::Ast::is_react_var_name () const noexcept |
Check if the ast node is an instance of ast::ReactVarName. More... | |
virtual bool | nmodl::ast::Ast::is_read_ion_var () const noexcept |
Check if the ast node is an instance of ast::ReadIonVar. More... | |
virtual bool | nmodl::ast::Ast::is_write_ion_var () const noexcept |
Check if the ast node is an instance of ast::WriteIonVar. More... | |
virtual bool | nmodl::ast::Ast::is_nonspecific_cur_var () const noexcept |
Check if the ast node is an instance of ast::NonspecificCurVar. More... | |
virtual bool | nmodl::ast::Ast::is_electrode_cur_var () const noexcept |
Check if the ast node is an instance of ast::ElectrodeCurVar. More... | |
virtual bool | nmodl::ast::Ast::is_range_var () const noexcept |
Check if the ast node is an instance of ast::RangeVar. More... | |
virtual bool | nmodl::ast::Ast::is_global_var () const noexcept |
Check if the ast node is an instance of ast::GlobalVar. More... | |
virtual bool | nmodl::ast::Ast::is_pointer_var () const noexcept |
Check if the ast node is an instance of ast::PointerVar. More... | |
virtual bool | nmodl::ast::Ast::is_random_var () const noexcept |
Check if the ast node is an instance of ast::RandomVar. More... | |
virtual bool | nmodl::ast::Ast::is_bbcore_pointer_var () const noexcept |
Check if the ast node is an instance of ast::BbcorePointerVar. More... | |
virtual bool | nmodl::ast::Ast::is_extern_var () const noexcept |
Check if the ast node is an instance of ast::ExternVar. More... | |
virtual bool | nmodl::ast::Ast::is_param_block () const noexcept |
Check if the ast node is an instance of ast::ParamBlock. More... | |
virtual bool | nmodl::ast::Ast::is_independent_block () const noexcept |
Check if the ast node is an instance of ast::IndependentBlock. More... | |
virtual bool | nmodl::ast::Ast::is_assigned_block () const noexcept |
Check if the ast node is an instance of ast::AssignedBlock. More... | |
virtual bool | nmodl::ast::Ast::is_state_block () const noexcept |
Check if the ast node is an instance of ast::StateBlock. More... | |
virtual bool | nmodl::ast::Ast::is_initial_block () const noexcept |
Check if the ast node is an instance of ast::InitialBlock. More... | |
virtual bool | nmodl::ast::Ast::is_constructor_block () const noexcept |
Check if the ast node is an instance of ast::ConstructorBlock. More... | |
virtual bool | nmodl::ast::Ast::is_destructor_block () const noexcept |
Check if the ast node is an instance of ast::DestructorBlock. More... | |
virtual bool | nmodl::ast::Ast::is_statement_block () const noexcept |
Check if the ast node is an instance of ast::StatementBlock. More... | |
virtual bool | nmodl::ast::Ast::is_derivative_block () const noexcept |
Check if the ast node is an instance of ast::DerivativeBlock. More... | |
virtual bool | nmodl::ast::Ast::is_linear_block () const noexcept |
Check if the ast node is an instance of ast::LinearBlock. More... | |
virtual bool | nmodl::ast::Ast::is_non_linear_block () const noexcept |
Check if the ast node is an instance of ast::NonLinearBlock. More... | |
virtual bool | nmodl::ast::Ast::is_discrete_block () const noexcept |
Check if the ast node is an instance of ast::DiscreteBlock. More... | |
virtual bool | nmodl::ast::Ast::is_function_table_block () const noexcept |
Check if the ast node is an instance of ast::FunctionTableBlock. More... | |
virtual bool | nmodl::ast::Ast::is_function_block () const noexcept |
Check if the ast node is an instance of ast::FunctionBlock. More... | |
virtual bool | nmodl::ast::Ast::is_procedure_block () const noexcept |
Check if the ast node is an instance of ast::ProcedureBlock. More... | |
virtual bool | nmodl::ast::Ast::is_net_receive_block () const noexcept |
Check if the ast node is an instance of ast::NetReceiveBlock. More... | |
virtual bool | nmodl::ast::Ast::is_solve_block () const noexcept |
Check if the ast node is an instance of ast::SolveBlock. More... | |
virtual bool | nmodl::ast::Ast::is_breakpoint_block () const noexcept |
Check if the ast node is an instance of ast::BreakpointBlock. More... | |
virtual bool | nmodl::ast::Ast::is_before_block () const noexcept |
Check if the ast node is an instance of ast::BeforeBlock. More... | |
virtual bool | nmodl::ast::Ast::is_after_block () const noexcept |
Check if the ast node is an instance of ast::AfterBlock. More... | |
virtual bool | nmodl::ast::Ast::is_ba_block () const noexcept |
Check if the ast node is an instance of ast::BABlock. More... | |
virtual bool | nmodl::ast::Ast::is_for_netcon () const noexcept |
Check if the ast node is an instance of ast::ForNetcon. More... | |
virtual bool | nmodl::ast::Ast::is_kinetic_block () const noexcept |
Check if the ast node is an instance of ast::KineticBlock. More... | |
virtual bool | nmodl::ast::Ast::is_unit_block () const noexcept |
Check if the ast node is an instance of ast::UnitBlock. More... | |
virtual bool | nmodl::ast::Ast::is_constant_block () const noexcept |
Check if the ast node is an instance of ast::ConstantBlock. More... | |
virtual bool | nmodl::ast::Ast::is_neuron_block () const noexcept |
Check if the ast node is an instance of ast::NeuronBlock. More... | |
virtual bool | nmodl::ast::Ast::is_unit () const noexcept |
Check if the ast node is an instance of ast::Unit. More... | |
virtual bool | nmodl::ast::Ast::is_double_unit () const noexcept |
Check if the ast node is an instance of ast::DoubleUnit. More... | |
virtual bool | nmodl::ast::Ast::is_local_var () const noexcept |
Check if the ast node is an instance of ast::LocalVar. More... | |
virtual bool | nmodl::ast::Ast::is_limits () const noexcept |
Check if the ast node is an instance of ast::Limits. More... | |
virtual bool | nmodl::ast::Ast::is_number_range () const noexcept |
Check if the ast node is an instance of ast::NumberRange. More... | |
virtual bool | nmodl::ast::Ast::is_constant_var () const noexcept |
Check if the ast node is an instance of ast::ConstantVar. More... | |
virtual bool | nmodl::ast::Ast::is_binary_operator () const noexcept |
Check if the ast node is an instance of ast::BinaryOperator. More... | |
virtual bool | nmodl::ast::Ast::is_unary_operator () const noexcept |
Check if the ast node is an instance of ast::UnaryOperator. More... | |
virtual bool | nmodl::ast::Ast::is_reaction_operator () const noexcept |
Check if the ast node is an instance of ast::ReactionOperator. More... | |
virtual bool | nmodl::ast::Ast::is_paren_expression () const noexcept |
Check if the ast node is an instance of ast::ParenExpression. More... | |
virtual bool | nmodl::ast::Ast::is_binary_expression () const noexcept |
Check if the ast node is an instance of ast::BinaryExpression. More... | |
virtual bool | nmodl::ast::Ast::is_diff_eq_expression () const noexcept |
Check if the ast node is an instance of ast::DiffEqExpression. More... | |
virtual bool | nmodl::ast::Ast::is_unary_expression () const noexcept |
Check if the ast node is an instance of ast::UnaryExpression. More... | |
virtual bool | nmodl::ast::Ast::is_non_lin_equation () const noexcept |
Check if the ast node is an instance of ast::NonLinEquation. More... | |
virtual bool | nmodl::ast::Ast::is_lin_equation () const noexcept |
Check if the ast node is an instance of ast::LinEquation. More... | |
virtual bool | nmodl::ast::Ast::is_function_call () const noexcept |
Check if the ast node is an instance of ast::FunctionCall. More... | |
virtual bool | nmodl::ast::Ast::is_watch () const noexcept |
Check if the ast node is an instance of ast::Watch. More... | |
virtual bool | nmodl::ast::Ast::is_ba_block_type () const noexcept |
Check if the ast node is an instance of ast::BABlockType. More... | |
virtual bool | nmodl::ast::Ast::is_unit_def () const noexcept |
Check if the ast node is an instance of ast::UnitDef. More... | |
virtual bool | nmodl::ast::Ast::is_factor_def () const noexcept |
Check if the ast node is an instance of ast::FactorDef. More... | |
virtual bool | nmodl::ast::Ast::is_valence () const noexcept |
Check if the ast node is an instance of ast::Valence. More... | |
virtual bool | nmodl::ast::Ast::is_unit_state () const noexcept |
Check if the ast node is an instance of ast::UnitState. More... | |
virtual bool | nmodl::ast::Ast::is_local_list_statement () const noexcept |
Check if the ast node is an instance of ast::LocalListStatement. More... | |
virtual bool | nmodl::ast::Ast::is_model () const noexcept |
Check if the ast node is an instance of ast::Model. More... | |
virtual bool | nmodl::ast::Ast::is_define () const noexcept |
Check if the ast node is an instance of ast::Define. More... | |
virtual bool | nmodl::ast::Ast::is_include () const noexcept |
Check if the ast node is an instance of ast::Include. More... | |
virtual bool | nmodl::ast::Ast::is_param_assign () const noexcept |
Check if the ast node is an instance of ast::ParamAssign. More... | |
virtual bool | nmodl::ast::Ast::is_assigned_definition () const noexcept |
Check if the ast node is an instance of ast::AssignedDefinition. More... | |
virtual bool | nmodl::ast::Ast::is_conductance_hint () const noexcept |
Check if the ast node is an instance of ast::ConductanceHint. More... | |
virtual bool | nmodl::ast::Ast::is_expression_statement () const noexcept |
Check if the ast node is an instance of ast::ExpressionStatement. More... | |
virtual bool | nmodl::ast::Ast::is_protect_statement () const noexcept |
Check if the ast node is an instance of ast::ProtectStatement. More... | |
virtual bool | nmodl::ast::Ast::is_from_statement () const noexcept |
Check if the ast node is an instance of ast::FromStatement. More... | |
virtual bool | nmodl::ast::Ast::is_while_statement () const noexcept |
Check if the ast node is an instance of ast::WhileStatement. More... | |
virtual bool | nmodl::ast::Ast::is_if_statement () const noexcept |
Check if the ast node is an instance of ast::IfStatement. More... | |
virtual bool | nmodl::ast::Ast::is_else_if_statement () const noexcept |
Check if the ast node is an instance of ast::ElseIfStatement. More... | |
virtual bool | nmodl::ast::Ast::is_else_statement () const noexcept |
Check if the ast node is an instance of ast::ElseStatement. More... | |
virtual bool | nmodl::ast::Ast::is_watch_statement () const noexcept |
Check if the ast node is an instance of ast::WatchStatement. More... | |
virtual bool | nmodl::ast::Ast::is_mutex_lock () const noexcept |
Check if the ast node is an instance of ast::MutexLock. More... | |
virtual bool | nmodl::ast::Ast::is_mutex_unlock () const noexcept |
Check if the ast node is an instance of ast::MutexUnlock. More... | |
virtual bool | nmodl::ast::Ast::is_conserve () const noexcept |
Check if the ast node is an instance of ast::Conserve. More... | |
virtual bool | nmodl::ast::Ast::is_compartment () const noexcept |
Check if the ast node is an instance of ast::Compartment. More... | |
virtual bool | nmodl::ast::Ast::is_lon_diffuse () const noexcept |
Check if the ast node is an instance of ast::LonDiffuse. More... | |
virtual bool | nmodl::ast::Ast::is_reaction_statement () const noexcept |
Check if the ast node is an instance of ast::ReactionStatement. More... | |
virtual bool | nmodl::ast::Ast::is_lag_statement () const noexcept |
Check if the ast node is an instance of ast::LagStatement. More... | |
virtual bool | nmodl::ast::Ast::is_constant_statement () const noexcept |
Check if the ast node is an instance of ast::ConstantStatement. More... | |
virtual bool | nmodl::ast::Ast::is_table_statement () const noexcept |
Check if the ast node is an instance of ast::TableStatement. More... | |
virtual bool | nmodl::ast::Ast::is_suffix () const noexcept |
Check if the ast node is an instance of ast::Suffix. More... | |
virtual bool | nmodl::ast::Ast::is_useion () const noexcept |
Check if the ast node is an instance of ast::Useion. More... | |
virtual bool | nmodl::ast::Ast::is_nonspecific () const noexcept |
Check if the ast node is an instance of ast::Nonspecific. More... | |
virtual bool | nmodl::ast::Ast::is_electrode_current () const noexcept |
Check if the ast node is an instance of ast::ElectrodeCurrent. More... | |
virtual bool | nmodl::ast::Ast::is_range () const noexcept |
Check if the ast node is an instance of ast::Range. More... | |
virtual bool | nmodl::ast::Ast::is_global () const noexcept |
Check if the ast node is an instance of ast::Global. More... | |
virtual bool | nmodl::ast::Ast::is_random_var_list () const noexcept |
Check if the ast node is an instance of ast::RandomVarList. More... | |
virtual bool | nmodl::ast::Ast::is_pointer () const noexcept |
Check if the ast node is an instance of ast::Pointer. More... | |
virtual bool | nmodl::ast::Ast::is_bbcore_pointer () const noexcept |
Check if the ast node is an instance of ast::BbcorePointer. More... | |
virtual bool | nmodl::ast::Ast::is_external () const noexcept |
Check if the ast node is an instance of ast::External. More... | |
virtual bool | nmodl::ast::Ast::is_thread_safe () const noexcept |
Check if the ast node is an instance of ast::ThreadSafe. More... | |
virtual bool | nmodl::ast::Ast::is_verbatim () const noexcept |
Check if the ast node is an instance of ast::Verbatim. More... | |
virtual bool | nmodl::ast::Ast::is_line_comment () const noexcept |
Check if the ast node is an instance of ast::LineComment. More... | |
virtual bool | nmodl::ast::Ast::is_block_comment () const noexcept |
Check if the ast node is an instance of ast::BlockComment. More... | |
virtual bool | nmodl::ast::Ast::is_ontology_statement () const noexcept |
Check if the ast node is an instance of ast::OntologyStatement. More... | |
virtual bool | nmodl::ast::Ast::is_program () const noexcept |
Check if the ast node is an instance of ast::Program. More... | |
virtual bool | nmodl::ast::Ast::is_nrn_state_block () const noexcept |
Check if the ast node is an instance of ast::NrnStateBlock. More... | |
virtual bool | nmodl::ast::Ast::is_eigen_newton_solver_block () const noexcept |
Check if the ast node is an instance of ast::EigenNewtonSolverBlock. More... | |
virtual bool | nmodl::ast::Ast::is_eigen_linear_solver_block () const noexcept |
Check if the ast node is an instance of ast::EigenLinearSolverBlock. More... | |
virtual bool | nmodl::ast::Ast::is_cvode_block () const noexcept |
Check if the ast node is an instance of ast::CvodeBlock. More... | |
virtual bool | nmodl::ast::Ast::is_longitudinal_diffusion_block () const noexcept |
Check if the ast node is an instance of ast::LongitudinalDiffusionBlock. More... | |
virtual bool | nmodl::ast::Ast::is_wrapped_expression () const noexcept |
Check if the ast node is an instance of ast::WrappedExpression. More... | |
virtual bool | nmodl::ast::Ast::is_derivimplicit_callback () const noexcept |
Check if the ast node is an instance of ast::DerivimplicitCallback. More... | |
virtual bool | nmodl::ast::Ast::is_solution_expression () const noexcept |
Check if the ast node is an instance of ast::SolutionExpression. More... | |
virtual bool | nmodl::ast::Ast::is_update_dt () const noexcept |
Check if the ast node is an instance of ast::UpdateDt. More... | |
virtual Ast * | nmodl::ast::Ast::get_parent () const |
Parent getter. More... | |
virtual void | nmodl::ast::Ast::set_parent (Ast *p) |
Parent setter. More... | |
Variables | |
Ast * | nmodl::ast::Ast::parent = nullptr |
Generic pointer to the parent. More... | |
Ctor & dtor | |
nmodl::ast::Ast::Ast ()=default | |
virtual | nmodl::ast::Ast::~Ast ()=default |
Pure Virtual Functions | |
virtual AstNodeType | nmodl::ast::Ast::get_node_type () const =0 |
Return type (ast::AstNodeType) of AST node. More... | |
virtual std::string | nmodl::ast::Ast::get_node_type_name () const =0 |
Return type (ast::AstNodeType) of ast node as std::string. More... | |
virtual std::string | nmodl::ast::Ast::get_nmodl_name () const |
Return NMODL statement of ast node as std::string. More... | |
virtual void | nmodl::ast::Ast::accept (visitor::Visitor &v)=0 |
Accept (or visit) the AST node using current visitor. More... | |
virtual void | nmodl::ast::Ast::accept (visitor::ConstVisitor &v) const =0 |
Accept (or visit) the AST node using a given visitor. More... | |
virtual void | nmodl::ast::Ast::visit_children (visitor::Visitor &v)=0 |
Visit children i.e. More... | |
virtual void | nmodl::ast::Ast::visit_children (visitor::ConstVisitor &v) const =0 |
Visit children i.e. More... | |
virtual Ast * | nmodl::ast::Ast::clone () const |
Create a copy of the current node. More... | |
Not implemented | |
virtual std::string | nmodl::ast::Ast::get_node_name () const |
Return name of of the node. More... | |
virtual const ModToken * | nmodl::ast::Ast::get_token () const |
Return associated token for the AST node. More... | |
virtual symtab::SymbolTable * | nmodl::ast::Ast::get_symbol_table () const |
Return associated symbol table for the AST node. More... | |
virtual std::shared_ptr< StatementBlock > | nmodl::ast::Ast::get_statement_block () const |
Return associated statement block for the AST node. More... | |
virtual void | nmodl::ast::Ast::set_symbol_table (symtab::SymbolTable *symtab) |
Set symbol table for the AST node. More... | |
virtual void | nmodl::ast::Ast::set_name (const std::string &name) |
Set name for the AST node. More... | |
virtual void | nmodl::ast::Ast::negate () |
Negate the value of AST node. More... | |
|
pure virtual |
Accept (or visit) the AST node using a given visitor.
v | constant visitor visiting the AST node accept(visitor::Visitor&); |
Implemented in nmodl::ast::EigenNewtonSolverBlock, nmodl::ast::EigenLinearSolverBlock, nmodl::ast::AssignedDefinition, nmodl::ast::FunctionBlock, nmodl::ast::ProcedureBlock, nmodl::ast::CvodeBlock, nmodl::ast::Useion, nmodl::ast::FromStatement, nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::AssignedBlock, nmodl::ast::ReactionStatement, nmodl::ast::TableStatement, nmodl::ast::FactorDef, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::StatementBlock, nmodl::ast::DerivativeBlock, nmodl::ast::SolveBlock, nmodl::ast::Program, nmodl::ast::IfStatement, nmodl::ast::ParamAssign, nmodl::ast::DiscreteBlock, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::Global, nmodl::ast::LocalListStatement, nmodl::ast::Pointer, nmodl::ast::WatchStatement, nmodl::ast::VarName, nmodl::ast::Compartment, nmodl::ast::LonDiffuse, nmodl::ast::BinaryExpression, nmodl::ast::BreakpointBlock, nmodl::ast::DestructorBlock, nmodl::ast::NeuronBlock, nmodl::ast::ConstantVar, nmodl::ast::ParamBlock, nmodl::ast::AfterBlock, nmodl::ast::ConstructorBlock, nmodl::ast::StateBlock, nmodl::ast::ConstantBlock, nmodl::ast::InitialBlock, nmodl::ast::BABlock, nmodl::ast::IndependentBlock, nmodl::ast::Define, nmodl::ast::LagStatement, nmodl::ast::PrimeName, nmodl::ast::Argument, nmodl::ast::ConductanceHint, nmodl::ast::IndexedName, nmodl::ast::BeforeBlock, nmodl::ast::NrnStateBlock, nmodl::ast::UnitBlock, nmodl::ast::Include, nmodl::ast::Conserve, nmodl::ast::ElseIfStatement, nmodl::ast::Integer, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::WhileStatement, nmodl::ast::FunctionCall, nmodl::ast::ReactVarName, nmodl::ast::Suffix, nmodl::ast::UnitDef, nmodl::ast::Name, nmodl::ast::UnaryExpression, nmodl::ast::BbcorePointer, nmodl::ast::DoubleUnit, nmodl::ast::Limits, nmodl::ast::NumberRange, nmodl::ast::RandomVarList, nmodl::ast::SolutionExpression, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::Double, nmodl::ast::String, nmodl::ast::BlockComment, nmodl::ast::ElectrodeCurrent, nmodl::ast::ElseStatement, nmodl::ast::External, nmodl::ast::Model, nmodl::ast::Nonspecific, nmodl::ast::OntologyStatement, nmodl::ast::ProtectStatement, nmodl::ast::Range, nmodl::ast::UpdateDt, nmodl::ast::Verbatim, nmodl::ast::BbcorePointerVar, nmodl::ast::ElectrodeCurVar, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReadIonVar, nmodl::ast::Unit, nmodl::ast::WriteIonVar, nmodl::ast::Float, nmodl::ast::Boolean, nmodl::ast::ConstantStatement, nmodl::ast::DerivimplicitCallback, nmodl::ast::DiffEqExpression, nmodl::ast::ExpressionStatement, nmodl::ast::LineComment, nmodl::ast::ParenExpression, nmodl::ast::WrappedExpression, nmodl::ast::BABlockType, nmodl::ast::BinaryOperator, nmodl::ast::ReactionOperator, nmodl::ast::UnaryOperator, nmodl::ast::UnitState, nmodl::ast::MutexLock, nmodl::ast::MutexUnlock, nmodl::ast::ThreadSafe, nmodl::ast::Block, nmodl::ast::Number, nmodl::ast::Expression, nmodl::ast::Identifier, nmodl::ast::Node, and nmodl::ast::Statement.
|
pure virtual |
Accept (or visit) the AST node using current visitor.
Instead of visiting children of AST node, like Ast::visit_children, accept allows to visit the current node itself using the concrete visitor provided.
v | Concrete visitor that will be used to recursively visit children |
accept
method implementation which shows how visitor method corresponding to ast::IndexedName node is called allowing to visit the node itself in the visitor.Implemented in nmodl::ast::EigenNewtonSolverBlock, nmodl::ast::EigenLinearSolverBlock, nmodl::ast::AssignedDefinition, nmodl::ast::FunctionBlock, nmodl::ast::ProcedureBlock, nmodl::ast::CvodeBlock, nmodl::ast::Useion, nmodl::ast::FromStatement, nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::AssignedBlock, nmodl::ast::ReactionStatement, nmodl::ast::TableStatement, nmodl::ast::FactorDef, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::StatementBlock, nmodl::ast::DerivativeBlock, nmodl::ast::SolveBlock, nmodl::ast::Program, nmodl::ast::IfStatement, nmodl::ast::ParamAssign, nmodl::ast::DiscreteBlock, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::Global, nmodl::ast::LocalListStatement, nmodl::ast::Pointer, nmodl::ast::WatchStatement, nmodl::ast::VarName, nmodl::ast::Compartment, nmodl::ast::LonDiffuse, nmodl::ast::BinaryExpression, nmodl::ast::BreakpointBlock, nmodl::ast::DestructorBlock, nmodl::ast::NeuronBlock, nmodl::ast::ConstantVar, nmodl::ast::ParamBlock, nmodl::ast::AfterBlock, nmodl::ast::ConstructorBlock, nmodl::ast::StateBlock, nmodl::ast::ConstantBlock, nmodl::ast::InitialBlock, nmodl::ast::BABlock, nmodl::ast::IndependentBlock, nmodl::ast::Define, nmodl::ast::LagStatement, nmodl::ast::PrimeName, nmodl::ast::Argument, nmodl::ast::ConductanceHint, nmodl::ast::IndexedName, nmodl::ast::BeforeBlock, nmodl::ast::NrnStateBlock, nmodl::ast::UnitBlock, nmodl::ast::Include, nmodl::ast::Conserve, nmodl::ast::ElseIfStatement, nmodl::ast::Integer, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::WhileStatement, nmodl::ast::FunctionCall, nmodl::ast::ReactVarName, nmodl::ast::Suffix, nmodl::ast::UnitDef, nmodl::ast::Name, nmodl::ast::UnaryExpression, nmodl::ast::BbcorePointer, nmodl::ast::DoubleUnit, nmodl::ast::Limits, nmodl::ast::NumberRange, nmodl::ast::RandomVarList, nmodl::ast::SolutionExpression, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::Double, nmodl::ast::String, nmodl::ast::BlockComment, nmodl::ast::ElectrodeCurrent, nmodl::ast::ElseStatement, nmodl::ast::External, nmodl::ast::Model, nmodl::ast::Nonspecific, nmodl::ast::OntologyStatement, nmodl::ast::ProtectStatement, nmodl::ast::Range, nmodl::ast::UpdateDt, nmodl::ast::Verbatim, nmodl::ast::BbcorePointerVar, nmodl::ast::ElectrodeCurVar, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReadIonVar, nmodl::ast::Unit, nmodl::ast::WriteIonVar, nmodl::ast::Float, nmodl::ast::Boolean, nmodl::ast::ConstantStatement, nmodl::ast::DerivimplicitCallback, nmodl::ast::DiffEqExpression, nmodl::ast::ExpressionStatement, nmodl::ast::LineComment, nmodl::ast::ParenExpression, nmodl::ast::WrappedExpression, nmodl::ast::BABlockType, nmodl::ast::BinaryOperator, nmodl::ast::ReactionOperator, nmodl::ast::UnaryOperator, nmodl::ast::UnitState, nmodl::ast::MutexLock, nmodl::ast::MutexUnlock, nmodl::ast::ThreadSafe, nmodl::ast::Block, nmodl::ast::Number, nmodl::ast::Expression, nmodl::ast::Identifier, nmodl::ast::Node, and nmodl::ast::Statement.
|
default |
|
virtual |
Create a copy of the current node.
Ast member function definition.
Recursively make a new copy/clone of the current node including all members and return a pointer to the node. This is used for passes like nmodl::visitor::InlineVisitor where nodes are cloned in the ast.
Reimplemented in nmodl::ast::LinearBlock, nmodl::ast::BinaryExpression, nmodl::ast::NonLinearBlock, nmodl::ast::AssignedBlock, nmodl::ast::BreakpointBlock, nmodl::ast::DestructorBlock, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::StatementBlock, nmodl::ast::AfterBlock, nmodl::ast::ConstructorBlock, nmodl::ast::DerivativeBlock, nmodl::ast::Double, nmodl::ast::StateBlock, nmodl::ast::EigenNewtonSolverBlock, nmodl::ast::Integer, nmodl::ast::String, nmodl::ast::ConstantBlock, nmodl::ast::InitialBlock, nmodl::ast::PrimeName, nmodl::ast::Argument, nmodl::ast::AssignedDefinition, nmodl::ast::EigenLinearSolverBlock, nmodl::ast::IndexedName, nmodl::ast::LagStatement, nmodl::ast::ConductanceHint, nmodl::ast::Useion, nmodl::ast::FactorDef, nmodl::ast::FunctionBlock, nmodl::ast::IndependentBlock, nmodl::ast::ProcedureBlock, nmodl::ast::ReactionStatement, nmodl::ast::TableStatement, nmodl::ast::VarName, nmodl::ast::BbcorePointer, nmodl::ast::CvodeBlock, nmodl::ast::FromStatement, nmodl::ast::RandomVarList, nmodl::ast::FunctionTableBlock, nmodl::ast::IfStatement, nmodl::ast::KineticBlock, nmodl::ast::Name, nmodl::ast::BABlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::ParamAssign, nmodl::ast::SolveBlock, nmodl::ast::Compartment, nmodl::ast::Float, nmodl::ast::ForNetcon, nmodl::ast::LonDiffuse, nmodl::ast::NetReceiveBlock, nmodl::ast::Program, nmodl::ast::ConstantVar, nmodl::ast::DiscreteBlock, nmodl::ast::BABlockType, nmodl::ast::Boolean, nmodl::ast::Include, nmodl::ast::UnaryExpression, nmodl::ast::BeforeBlock, nmodl::ast::Conserve, nmodl::ast::ConstantStatement, nmodl::ast::Define, nmodl::ast::DoubleUnit, nmodl::ast::ElseIfStatement, nmodl::ast::FunctionCall, nmodl::ast::Limits, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::NrnStateBlock, nmodl::ast::NumberRange, nmodl::ast::ReactVarName, nmodl::ast::SolutionExpression, nmodl::ast::Suffix, nmodl::ast::UnitBlock, nmodl::ast::UnitDef, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::WhileStatement, nmodl::ast::BbcorePointerVar, nmodl::ast::BinaryOperator, nmodl::ast::Block, nmodl::ast::BlockComment, nmodl::ast::DerivimplicitCallback, nmodl::ast::DiffEqExpression, nmodl::ast::ElectrodeCurVar, nmodl::ast::ElectrodeCurrent, nmodl::ast::ElseStatement, nmodl::ast::ExpressionStatement, nmodl::ast::ExternVar, nmodl::ast::External, nmodl::ast::Global, nmodl::ast::GlobalVar, nmodl::ast::LineComment, nmodl::ast::LocalListStatement, nmodl::ast::LocalVar, nmodl::ast::Model, nmodl::ast::Nonspecific, nmodl::ast::NonspecificCurVar, nmodl::ast::OntologyStatement, nmodl::ast::ParenExpression, nmodl::ast::Pointer, nmodl::ast::PointerVar, nmodl::ast::ProtectStatement, nmodl::ast::RandomVar, nmodl::ast::Range, nmodl::ast::RangeVar, nmodl::ast::ReactionOperator, nmodl::ast::ReadIonVar, nmodl::ast::UnaryOperator, nmodl::ast::Unit, nmodl::ast::UpdateDt, nmodl::ast::Verbatim, nmodl::ast::WatchStatement, nmodl::ast::WrappedExpression, nmodl::ast::WriteIonVar, nmodl::ast::UnitState, nmodl::ast::Number, nmodl::ast::Expression, nmodl::ast::Identifier, nmodl::ast::MutexLock, nmodl::ast::MutexUnlock, nmodl::ast::ThreadSafe, nmodl::ast::Node, and nmodl::ast::Statement.
|
inlinevirtual |
Return NMODL statement of ast node as std::string.
Every node is related to a special statement in the NMODL. This statement can be returned as a std::string for printing to text/json form.
Reimplemented in nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::AssignedBlock, nmodl::ast::BreakpointBlock, nmodl::ast::DestructorBlock, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::AfterBlock, nmodl::ast::ConstructorBlock, nmodl::ast::DerivativeBlock, nmodl::ast::StateBlock, nmodl::ast::EigenNewtonSolverBlock, nmodl::ast::ConstantBlock, nmodl::ast::InitialBlock, nmodl::ast::EigenLinearSolverBlock, nmodl::ast::LagStatement, nmodl::ast::ConductanceHint, nmodl::ast::Useion, nmodl::ast::FunctionBlock, nmodl::ast::IndependentBlock, nmodl::ast::ProcedureBlock, nmodl::ast::ReactionStatement, nmodl::ast::TableStatement, nmodl::ast::BbcorePointer, nmodl::ast::CvodeBlock, nmodl::ast::FromStatement, nmodl::ast::RandomVarList, nmodl::ast::FunctionTableBlock, nmodl::ast::IfStatement, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::SolveBlock, nmodl::ast::Compartment, nmodl::ast::ForNetcon, nmodl::ast::LonDiffuse, nmodl::ast::NetReceiveBlock, nmodl::ast::DiscreteBlock, nmodl::ast::Include, nmodl::ast::BeforeBlock, nmodl::ast::Conserve, nmodl::ast::Define, nmodl::ast::ElseIfStatement, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::NrnStateBlock, nmodl::ast::UnitBlock, nmodl::ast::WhileStatement, nmodl::ast::BlockComment, nmodl::ast::ElectrodeCurrent, nmodl::ast::ElseStatement, nmodl::ast::External, nmodl::ast::Global, nmodl::ast::LocalListStatement, nmodl::ast::Model, nmodl::ast::Nonspecific, nmodl::ast::OntologyStatement, nmodl::ast::Pointer, nmodl::ast::ProtectStatement, nmodl::ast::Range, nmodl::ast::UpdateDt, nmodl::ast::Verbatim, nmodl::ast::WatchStatement, nmodl::ast::MutexLock, nmodl::ast::MutexUnlock, and nmodl::ast::ThreadSafe.
|
virtual |
Return name of of the node.
Some ast nodes have a member marked designated as node name. For example, in case of ast::FunctionCall, name of the function is returned as a node name. Note that this is different from ast node type name and not every ast node has name.
Reimplemented in nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::DerivativeBlock, nmodl::ast::FunctionBlock, nmodl::ast::ProcedureBlock, nmodl::ast::CvodeBlock, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::DiscreteBlock, nmodl::ast::Useion, nmodl::ast::FromStatement, nmodl::ast::Define, nmodl::ast::PrimeName, nmodl::ast::Argument, nmodl::ast::AssignedDefinition, nmodl::ast::IndexedName, nmodl::ast::ReactVarName, nmodl::ast::Suffix, nmodl::ast::FactorDef, nmodl::ast::VarName, nmodl::ast::Name, nmodl::ast::ParamAssign, nmodl::ast::ConstantVar, nmodl::ast::FunctionCall, nmodl::ast::UnitDef, nmodl::ast::BbcorePointerVar, nmodl::ast::ElectrodeCurVar, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReadIonVar, nmodl::ast::Unit, and nmodl::ast::WriteIonVar.
|
pure virtual |
Return type (ast::AstNodeType) of AST node.
Every node in the ast has a type defined in ast::AstNodeType. This type is can be used to check/compare node types.
Implemented in nmodl::ast::LinearBlock, nmodl::ast::BinaryExpression, nmodl::ast::NonLinearBlock, nmodl::ast::AssignedBlock, nmodl::ast::BreakpointBlock, nmodl::ast::DestructorBlock, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::StatementBlock, nmodl::ast::AfterBlock, nmodl::ast::ConstructorBlock, nmodl::ast::DerivativeBlock, nmodl::ast::Double, nmodl::ast::StateBlock, nmodl::ast::EigenNewtonSolverBlock, nmodl::ast::Integer, nmodl::ast::String, nmodl::ast::ConstantBlock, nmodl::ast::InitialBlock, nmodl::ast::PrimeName, nmodl::ast::Argument, nmodl::ast::AssignedDefinition, nmodl::ast::EigenLinearSolverBlock, nmodl::ast::IndexedName, nmodl::ast::LagStatement, nmodl::ast::ConductanceHint, nmodl::ast::Useion, nmodl::ast::FactorDef, nmodl::ast::FunctionBlock, nmodl::ast::IndependentBlock, nmodl::ast::ProcedureBlock, nmodl::ast::ReactionStatement, nmodl::ast::TableStatement, nmodl::ast::VarName, nmodl::ast::BbcorePointer, nmodl::ast::CvodeBlock, nmodl::ast::FromStatement, nmodl::ast::RandomVarList, nmodl::ast::FunctionTableBlock, nmodl::ast::IfStatement, nmodl::ast::KineticBlock, nmodl::ast::Name, nmodl::ast::BABlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::ParamAssign, nmodl::ast::SolveBlock, nmodl::ast::Compartment, nmodl::ast::Float, nmodl::ast::ForNetcon, nmodl::ast::LonDiffuse, nmodl::ast::NetReceiveBlock, nmodl::ast::Program, nmodl::ast::ConstantVar, nmodl::ast::DiscreteBlock, nmodl::ast::BABlockType, nmodl::ast::Boolean, nmodl::ast::Include, nmodl::ast::UnaryExpression, nmodl::ast::BeforeBlock, nmodl::ast::Conserve, nmodl::ast::ConstantStatement, nmodl::ast::Define, nmodl::ast::DoubleUnit, nmodl::ast::ElseIfStatement, nmodl::ast::FunctionCall, nmodl::ast::Limits, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::NrnStateBlock, nmodl::ast::NumberRange, nmodl::ast::ReactVarName, nmodl::ast::SolutionExpression, nmodl::ast::Suffix, nmodl::ast::UnitBlock, nmodl::ast::UnitDef, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::WhileStatement, nmodl::ast::BbcorePointerVar, nmodl::ast::BinaryOperator, nmodl::ast::Block, nmodl::ast::BlockComment, nmodl::ast::DerivimplicitCallback, nmodl::ast::DiffEqExpression, nmodl::ast::ElectrodeCurVar, nmodl::ast::ElectrodeCurrent, nmodl::ast::ElseStatement, nmodl::ast::ExpressionStatement, nmodl::ast::ExternVar, nmodl::ast::External, nmodl::ast::Global, nmodl::ast::GlobalVar, nmodl::ast::LineComment, nmodl::ast::LocalListStatement, nmodl::ast::LocalVar, nmodl::ast::Model, nmodl::ast::Nonspecific, nmodl::ast::NonspecificCurVar, nmodl::ast::OntologyStatement, nmodl::ast::ParenExpression, nmodl::ast::Pointer, nmodl::ast::PointerVar, nmodl::ast::ProtectStatement, nmodl::ast::RandomVar, nmodl::ast::Range, nmodl::ast::RangeVar, nmodl::ast::ReactionOperator, nmodl::ast::ReadIonVar, nmodl::ast::UnaryOperator, nmodl::ast::Unit, nmodl::ast::UpdateDt, nmodl::ast::Verbatim, nmodl::ast::WatchStatement, nmodl::ast::WrappedExpression, nmodl::ast::WriteIonVar, nmodl::ast::UnitState, nmodl::ast::Number, nmodl::ast::Expression, nmodl::ast::Identifier, nmodl::ast::MutexLock, nmodl::ast::MutexUnlock, nmodl::ast::ThreadSafe, nmodl::ast::Node, and nmodl::ast::Statement.
|
pure virtual |
Return type (ast::AstNodeType) of ast node as std::string.
Every node in the ast has a type defined in ast::AstNodeType. This type name can be returned as a std::string for printing ast to text/json form.
Implemented in nmodl::ast::LinearBlock, nmodl::ast::BinaryExpression, nmodl::ast::NonLinearBlock, nmodl::ast::AssignedBlock, nmodl::ast::BreakpointBlock, nmodl::ast::DestructorBlock, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::StatementBlock, nmodl::ast::AfterBlock, nmodl::ast::ConstructorBlock, nmodl::ast::DerivativeBlock, nmodl::ast::Double, nmodl::ast::StateBlock, nmodl::ast::EigenNewtonSolverBlock, nmodl::ast::Integer, nmodl::ast::String, nmodl::ast::ConstantBlock, nmodl::ast::InitialBlock, nmodl::ast::PrimeName, nmodl::ast::Argument, nmodl::ast::AssignedDefinition, nmodl::ast::EigenLinearSolverBlock, nmodl::ast::IndexedName, nmodl::ast::LagStatement, nmodl::ast::ConductanceHint, nmodl::ast::Useion, nmodl::ast::FactorDef, nmodl::ast::FunctionBlock, nmodl::ast::IndependentBlock, nmodl::ast::ProcedureBlock, nmodl::ast::ReactionStatement, nmodl::ast::TableStatement, nmodl::ast::VarName, nmodl::ast::BbcorePointer, nmodl::ast::CvodeBlock, nmodl::ast::FromStatement, nmodl::ast::RandomVarList, nmodl::ast::FunctionTableBlock, nmodl::ast::IfStatement, nmodl::ast::KineticBlock, nmodl::ast::Name, nmodl::ast::BABlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::ParamAssign, nmodl::ast::SolveBlock, nmodl::ast::Compartment, nmodl::ast::Float, nmodl::ast::ForNetcon, nmodl::ast::LonDiffuse, nmodl::ast::NetReceiveBlock, nmodl::ast::Program, nmodl::ast::ConstantVar, nmodl::ast::DiscreteBlock, nmodl::ast::BABlockType, nmodl::ast::Boolean, nmodl::ast::Include, nmodl::ast::UnaryExpression, nmodl::ast::BeforeBlock, nmodl::ast::Conserve, nmodl::ast::ConstantStatement, nmodl::ast::Define, nmodl::ast::DoubleUnit, nmodl::ast::ElseIfStatement, nmodl::ast::FunctionCall, nmodl::ast::Limits, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::NrnStateBlock, nmodl::ast::NumberRange, nmodl::ast::ReactVarName, nmodl::ast::SolutionExpression, nmodl::ast::Suffix, nmodl::ast::UnitBlock, nmodl::ast::UnitDef, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::WhileStatement, nmodl::ast::BbcorePointerVar, nmodl::ast::BinaryOperator, nmodl::ast::Block, nmodl::ast::BlockComment, nmodl::ast::DerivimplicitCallback, nmodl::ast::DiffEqExpression, nmodl::ast::ElectrodeCurVar, nmodl::ast::ElectrodeCurrent, nmodl::ast::ElseStatement, nmodl::ast::ExpressionStatement, nmodl::ast::ExternVar, nmodl::ast::External, nmodl::ast::Global, nmodl::ast::GlobalVar, nmodl::ast::LineComment, nmodl::ast::LocalListStatement, nmodl::ast::LocalVar, nmodl::ast::Model, nmodl::ast::Nonspecific, nmodl::ast::NonspecificCurVar, nmodl::ast::OntologyStatement, nmodl::ast::ParenExpression, nmodl::ast::Pointer, nmodl::ast::PointerVar, nmodl::ast::ProtectStatement, nmodl::ast::RandomVar, nmodl::ast::Range, nmodl::ast::RangeVar, nmodl::ast::ReactionOperator, nmodl::ast::ReadIonVar, nmodl::ast::UnaryOperator, nmodl::ast::Unit, nmodl::ast::UpdateDt, nmodl::ast::Verbatim, nmodl::ast::WatchStatement, nmodl::ast::WrappedExpression, nmodl::ast::WriteIonVar, nmodl::ast::UnitState, nmodl::ast::Number, nmodl::ast::Expression, nmodl::ast::Identifier, nmodl::ast::MutexLock, nmodl::ast::MutexUnlock, nmodl::ast::ThreadSafe, nmodl::ast::Node, and nmodl::ast::Statement.
|
virtual |
Parent getter.
returning a raw pointer may create less problems that the shared_from_this from the parent.
Check Ast::parent for more information
|
virtual |
get std::shared_ptr from this
pointer of the AST node
Reimplemented in nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::AssignedBlock, nmodl::ast::BreakpointBlock, nmodl::ast::DestructorBlock, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::AfterBlock, nmodl::ast::ConstructorBlock, nmodl::ast::DerivativeBlock, nmodl::ast::StateBlock, nmodl::ast::EigenNewtonSolverBlock, nmodl::ast::ConstantBlock, nmodl::ast::InitialBlock, nmodl::ast::EigenLinearSolverBlock, nmodl::ast::LagStatement, nmodl::ast::ConductanceHint, nmodl::ast::Useion, nmodl::ast::FunctionBlock, nmodl::ast::IndependentBlock, nmodl::ast::ProcedureBlock, nmodl::ast::ReactionStatement, nmodl::ast::TableStatement, nmodl::ast::BbcorePointer, nmodl::ast::CvodeBlock, nmodl::ast::FromStatement, nmodl::ast::RandomVarList, nmodl::ast::FunctionTableBlock, nmodl::ast::IfStatement, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::SolveBlock, nmodl::ast::Compartment, nmodl::ast::ForNetcon, nmodl::ast::LonDiffuse, nmodl::ast::NetReceiveBlock, nmodl::ast::BinaryExpression, nmodl::ast::DiscreteBlock, nmodl::ast::Include, nmodl::ast::BeforeBlock, nmodl::ast::Conserve, nmodl::ast::Define, nmodl::ast::ElseIfStatement, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::NrnStateBlock, nmodl::ast::StatementBlock, nmodl::ast::UnitBlock, nmodl::ast::WhileStatement, nmodl::ast::Double, nmodl::ast::BlockComment, nmodl::ast::ElectrodeCurrent, nmodl::ast::ElseStatement, nmodl::ast::External, nmodl::ast::Global, nmodl::ast::Integer, nmodl::ast::LocalListStatement, nmodl::ast::Model, nmodl::ast::Nonspecific, nmodl::ast::OntologyStatement, nmodl::ast::Pointer, nmodl::ast::ProtectStatement, nmodl::ast::Range, nmodl::ast::String, nmodl::ast::UpdateDt, nmodl::ast::Verbatim, nmodl::ast::WatchStatement, nmodl::ast::PrimeName, nmodl::ast::Argument, nmodl::ast::AssignedDefinition, nmodl::ast::IndexedName, nmodl::ast::FactorDef, nmodl::ast::MutexLock, nmodl::ast::MutexUnlock, nmodl::ast::ThreadSafe, nmodl::ast::VarName, nmodl::ast::Name, nmodl::ast::BABlock, nmodl::ast::ParamAssign, nmodl::ast::Float, nmodl::ast::Program, nmodl::ast::ConstantVar, nmodl::ast::BABlockType, nmodl::ast::Boolean, nmodl::ast::UnaryExpression, nmodl::ast::ConstantStatement, nmodl::ast::DoubleUnit, nmodl::ast::FunctionCall, nmodl::ast::Limits, nmodl::ast::NumberRange, nmodl::ast::ReactVarName, nmodl::ast::SolutionExpression, nmodl::ast::Suffix, nmodl::ast::UnitDef, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::BbcorePointerVar, nmodl::ast::BinaryOperator, nmodl::ast::Block, nmodl::ast::DerivimplicitCallback, nmodl::ast::DiffEqExpression, nmodl::ast::ElectrodeCurVar, nmodl::ast::ExpressionStatement, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LineComment, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::ParenExpression, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReactionOperator, nmodl::ast::ReadIonVar, nmodl::ast::UnaryOperator, nmodl::ast::Unit, nmodl::ast::WrappedExpression, nmodl::ast::WriteIonVar, nmodl::ast::UnitState, nmodl::ast::Number, nmodl::ast::Expression, nmodl::ast::Identifier, nmodl::ast::Node, and nmodl::ast::Statement.
|
virtual |
get std::shared_ptr from this
pointer of the AST node
Reimplemented in nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::AssignedBlock, nmodl::ast::BreakpointBlock, nmodl::ast::DestructorBlock, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::AfterBlock, nmodl::ast::ConstructorBlock, nmodl::ast::DerivativeBlock, nmodl::ast::StateBlock, nmodl::ast::EigenNewtonSolverBlock, nmodl::ast::ConstantBlock, nmodl::ast::InitialBlock, nmodl::ast::EigenLinearSolverBlock, nmodl::ast::LagStatement, nmodl::ast::ConductanceHint, nmodl::ast::Useion, nmodl::ast::FunctionBlock, nmodl::ast::IndependentBlock, nmodl::ast::ProcedureBlock, nmodl::ast::ReactionStatement, nmodl::ast::TableStatement, nmodl::ast::BbcorePointer, nmodl::ast::CvodeBlock, nmodl::ast::FromStatement, nmodl::ast::RandomVarList, nmodl::ast::FunctionTableBlock, nmodl::ast::IfStatement, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::SolveBlock, nmodl::ast::Compartment, nmodl::ast::ForNetcon, nmodl::ast::LonDiffuse, nmodl::ast::NetReceiveBlock, nmodl::ast::BinaryExpression, nmodl::ast::DiscreteBlock, nmodl::ast::Include, nmodl::ast::BeforeBlock, nmodl::ast::Conserve, nmodl::ast::Define, nmodl::ast::ElseIfStatement, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::NrnStateBlock, nmodl::ast::StatementBlock, nmodl::ast::UnitBlock, nmodl::ast::WhileStatement, nmodl::ast::Double, nmodl::ast::BlockComment, nmodl::ast::ElectrodeCurrent, nmodl::ast::ElseStatement, nmodl::ast::External, nmodl::ast::Global, nmodl::ast::Integer, nmodl::ast::LocalListStatement, nmodl::ast::Model, nmodl::ast::Nonspecific, nmodl::ast::OntologyStatement, nmodl::ast::Pointer, nmodl::ast::ProtectStatement, nmodl::ast::Range, nmodl::ast::String, nmodl::ast::UpdateDt, nmodl::ast::Verbatim, nmodl::ast::WatchStatement, nmodl::ast::PrimeName, nmodl::ast::Argument, nmodl::ast::AssignedDefinition, nmodl::ast::IndexedName, nmodl::ast::FactorDef, nmodl::ast::MutexLock, nmodl::ast::MutexUnlock, nmodl::ast::ThreadSafe, nmodl::ast::VarName, nmodl::ast::Name, nmodl::ast::BABlock, nmodl::ast::ParamAssign, nmodl::ast::Float, nmodl::ast::Program, nmodl::ast::ConstantVar, nmodl::ast::BABlockType, nmodl::ast::Boolean, nmodl::ast::UnaryExpression, nmodl::ast::ConstantStatement, nmodl::ast::DoubleUnit, nmodl::ast::FunctionCall, nmodl::ast::Limits, nmodl::ast::NumberRange, nmodl::ast::ReactVarName, nmodl::ast::SolutionExpression, nmodl::ast::Suffix, nmodl::ast::UnitDef, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::BbcorePointerVar, nmodl::ast::BinaryOperator, nmodl::ast::Block, nmodl::ast::DerivimplicitCallback, nmodl::ast::DiffEqExpression, nmodl::ast::ElectrodeCurVar, nmodl::ast::ExpressionStatement, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LineComment, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::ParenExpression, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReactionOperator, nmodl::ast::ReadIonVar, nmodl::ast::UnaryOperator, nmodl::ast::Unit, nmodl::ast::WrappedExpression, nmodl::ast::WriteIonVar, nmodl::ast::UnitState, nmodl::ast::Number, nmodl::ast::Expression, nmodl::ast::Identifier, nmodl::ast::Node, and nmodl::ast::Statement.
|
virtual |
Return associated statement block for the AST node.
Top level block nodes encloses all statements in the ast::StatementBlock. For example, ast::BreakpointBlock has all statements in curly brace ({ }
) stored in ast::StatementBlock :
This method return enclosing statement block.
Reimplemented in nmodl::ast::LinearBlock, nmodl::ast::FunctionBlock, nmodl::ast::NonLinearBlock, nmodl::ast::ProcedureBlock, nmodl::ast::FromStatement, nmodl::ast::KineticBlock, nmodl::ast::DerivativeBlock, nmodl::ast::DiscreteBlock, nmodl::ast::BreakpointBlock, nmodl::ast::DestructorBlock, nmodl::ast::NeuronBlock, nmodl::ast::ConstructorBlock, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::InitialBlock, nmodl::ast::IfStatement, nmodl::ast::BABlock, nmodl::ast::ElseIfStatement, nmodl::ast::WhileStatement, and nmodl::ast::ElseStatement.
|
virtual |
Return associated symbol table for the AST node.
Certain ast nodes (e.g. inherited from ast::Block) have associated symbol table. These nodes have nmodl::symtab::SymbolTable as member and it can be accessed using this method.
Reimplemented in nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::AssignedBlock, nmodl::ast::BreakpointBlock, nmodl::ast::DestructorBlock, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::AfterBlock, nmodl::ast::ConstructorBlock, nmodl::ast::DerivativeBlock, nmodl::ast::StateBlock, nmodl::ast::EigenNewtonSolverBlock, nmodl::ast::ConstantBlock, nmodl::ast::InitialBlock, nmodl::ast::EigenLinearSolverBlock, nmodl::ast::FunctionBlock, nmodl::ast::IndependentBlock, nmodl::ast::ProcedureBlock, nmodl::ast::CvodeBlock, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::SolveBlock, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::DiscreteBlock, nmodl::ast::BeforeBlock, nmodl::ast::NrnStateBlock, nmodl::ast::StatementBlock, nmodl::ast::UnitBlock, nmodl::ast::BABlock, and nmodl::ast::Program.
|
virtual |
Return associated token for the AST node.
Not all ast nodes have token information. For example, nmodl::visitor::NeuronSolveVisitor can insert new nodes in the ast as a solution of ODEs. In this case, we return nullptr to store in the nmodl::symtab::SymbolTable.
Reimplemented in nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::AssignedBlock, nmodl::ast::BreakpointBlock, nmodl::ast::DestructorBlock, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::AfterBlock, nmodl::ast::ConstructorBlock, nmodl::ast::DerivativeBlock, nmodl::ast::StateBlock, nmodl::ast::EigenNewtonSolverBlock, nmodl::ast::ConstantBlock, nmodl::ast::InitialBlock, nmodl::ast::EigenLinearSolverBlock, nmodl::ast::LagStatement, nmodl::ast::ConductanceHint, nmodl::ast::Useion, nmodl::ast::FunctionBlock, nmodl::ast::IndependentBlock, nmodl::ast::ProcedureBlock, nmodl::ast::ReactionStatement, nmodl::ast::TableStatement, nmodl::ast::BbcorePointer, nmodl::ast::CvodeBlock, nmodl::ast::FromStatement, nmodl::ast::RandomVarList, nmodl::ast::FunctionTableBlock, nmodl::ast::IfStatement, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::SolveBlock, nmodl::ast::Compartment, nmodl::ast::ForNetcon, nmodl::ast::LonDiffuse, nmodl::ast::NetReceiveBlock, nmodl::ast::BinaryExpression, nmodl::ast::DiscreteBlock, nmodl::ast::Include, nmodl::ast::BeforeBlock, nmodl::ast::Conserve, nmodl::ast::Define, nmodl::ast::ElseIfStatement, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::NrnStateBlock, nmodl::ast::StatementBlock, nmodl::ast::UnitBlock, nmodl::ast::WhileStatement, nmodl::ast::Double, nmodl::ast::BlockComment, nmodl::ast::ElectrodeCurrent, nmodl::ast::ElseStatement, nmodl::ast::External, nmodl::ast::Global, nmodl::ast::Integer, nmodl::ast::LocalListStatement, nmodl::ast::Model, nmodl::ast::Nonspecific, nmodl::ast::OntologyStatement, nmodl::ast::Pointer, nmodl::ast::ProtectStatement, nmodl::ast::Range, nmodl::ast::String, nmodl::ast::UpdateDt, nmodl::ast::Verbatim, nmodl::ast::WatchStatement, nmodl::ast::PrimeName, nmodl::ast::Argument, nmodl::ast::AssignedDefinition, nmodl::ast::IndexedName, nmodl::ast::FactorDef, nmodl::ast::MutexLock, nmodl::ast::MutexUnlock, nmodl::ast::ThreadSafe, nmodl::ast::VarName, nmodl::ast::Name, nmodl::ast::BABlock, nmodl::ast::ParamAssign, nmodl::ast::Float, nmodl::ast::Program, nmodl::ast::ConstantVar, nmodl::ast::BABlockType, nmodl::ast::Boolean, nmodl::ast::UnaryExpression, nmodl::ast::ConstantStatement, nmodl::ast::DoubleUnit, nmodl::ast::FunctionCall, nmodl::ast::Limits, nmodl::ast::NumberRange, nmodl::ast::ReactVarName, nmodl::ast::SolutionExpression, nmodl::ast::Suffix, nmodl::ast::UnitDef, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::BbcorePointerVar, nmodl::ast::BinaryOperator, nmodl::ast::DerivimplicitCallback, nmodl::ast::DiffEqExpression, nmodl::ast::ElectrodeCurVar, nmodl::ast::ExpressionStatement, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LineComment, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::ParenExpression, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReactionOperator, nmodl::ast::ReadIonVar, nmodl::ast::UnaryOperator, nmodl::ast::Unit, nmodl::ast::WrappedExpression, nmodl::ast::WriteIonVar, and nmodl::ast::UnitState.
|
virtualnoexcept |
Check if the ast node is an instance of ast::AfterBlock.
Reimplemented in nmodl::ast::AfterBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Argument.
Reimplemented in nmodl::ast::Argument.
|
virtualnoexcept |
Check if the ast node is an instance of ast::AssignedBlock.
Reimplemented in nmodl::ast::AssignedBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::AssignedDefinition.
Reimplemented in nmodl::ast::AssignedDefinition.
|
virtualnoexcept |
|
virtualnoexcept |
Check if the ast node is an instance of ast::BABlock.
Reimplemented in nmodl::ast::BABlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::BABlockType.
Reimplemented in nmodl::ast::BABlockType.
|
virtualnoexcept |
Check if the ast node is an instance of ast::BbcorePointer.
Reimplemented in nmodl::ast::BbcorePointer.
|
virtualnoexcept |
Check if the ast node is an instance of ast::BbcorePointerVar.
Reimplemented in nmodl::ast::BbcorePointerVar.
|
virtualnoexcept |
Check if the ast node is an instance of ast::BeforeBlock.
Reimplemented in nmodl::ast::BeforeBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::BinaryExpression.
Reimplemented in nmodl::ast::BinaryExpression.
|
virtualnoexcept |
Check if the ast node is an instance of ast::BinaryOperator.
Reimplemented in nmodl::ast::BinaryOperator.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Block.
Reimplemented in nmodl::ast::Block.
|
virtualnoexcept |
Check if the ast node is an instance of ast::BlockComment.
Reimplemented in nmodl::ast::BlockComment.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Boolean.
Reimplemented in nmodl::ast::Boolean.
|
virtualnoexcept |
Check if the ast node is an instance of ast::BreakpointBlock.
Reimplemented in nmodl::ast::BreakpointBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Compartment.
Reimplemented in nmodl::ast::Compartment.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ConductanceHint.
Reimplemented in nmodl::ast::ConductanceHint.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Conserve.
Reimplemented in nmodl::ast::Conserve.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ConstantBlock.
Reimplemented in nmodl::ast::ConstantBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ConstantStatement.
Reimplemented in nmodl::ast::ConstantStatement.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ConstantVar.
Reimplemented in nmodl::ast::ConstantVar.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ConstructorBlock.
Reimplemented in nmodl::ast::ConstructorBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::CvodeBlock.
Reimplemented in nmodl::ast::CvodeBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Define.
Reimplemented in nmodl::ast::Define.
|
virtualnoexcept |
Check if the ast node is an instance of ast::DerivativeBlock.
Reimplemented in nmodl::ast::DerivativeBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::DerivimplicitCallback.
Reimplemented in nmodl::ast::DerivimplicitCallback.
|
virtualnoexcept |
Check if the ast node is an instance of ast::DestructorBlock.
Reimplemented in nmodl::ast::DestructorBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::DiffEqExpression.
Reimplemented in nmodl::ast::DiffEqExpression.
|
virtualnoexcept |
Check if the ast node is an instance of ast::DiscreteBlock.
Reimplemented in nmodl::ast::DiscreteBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Double.
Reimplemented in nmodl::ast::Double.
|
virtualnoexcept |
Check if the ast node is an instance of ast::DoubleUnit.
Reimplemented in nmodl::ast::DoubleUnit.
|
virtualnoexcept |
Check if the ast node is an instance of ast::EigenLinearSolverBlock.
Reimplemented in nmodl::ast::EigenLinearSolverBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::EigenNewtonSolverBlock.
Reimplemented in nmodl::ast::EigenNewtonSolverBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ElectrodeCurVar.
Reimplemented in nmodl::ast::ElectrodeCurVar.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ElectrodeCurrent.
Reimplemented in nmodl::ast::ElectrodeCurrent.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ElseIfStatement.
Reimplemented in nmodl::ast::ElseIfStatement.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ElseStatement.
Reimplemented in nmodl::ast::ElseStatement.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Expression.
Reimplemented in nmodl::ast::Expression.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ExpressionStatement.
Reimplemented in nmodl::ast::ExpressionStatement.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ExternVar.
Reimplemented in nmodl::ast::ExternVar.
|
virtualnoexcept |
Check if the ast node is an instance of ast::External.
Reimplemented in nmodl::ast::External.
|
virtualnoexcept |
Check if the ast node is an instance of ast::FactorDef.
Reimplemented in nmodl::ast::FactorDef.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Float.
Reimplemented in nmodl::ast::Float.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ForNetcon.
Reimplemented in nmodl::ast::ForNetcon.
|
virtualnoexcept |
Check if the ast node is an instance of ast::FromStatement.
Reimplemented in nmodl::ast::FromStatement.
|
virtualnoexcept |
Check if the ast node is an instance of ast::FunctionBlock.
Reimplemented in nmodl::ast::FunctionBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::FunctionCall.
Reimplemented in nmodl::ast::FunctionCall.
|
virtualnoexcept |
Check if the ast node is an instance of ast::FunctionTableBlock.
Reimplemented in nmodl::ast::FunctionTableBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Global.
Reimplemented in nmodl::ast::Global.
|
virtualnoexcept |
Check if the ast node is an instance of ast::GlobalVar.
Reimplemented in nmodl::ast::GlobalVar.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Identifier.
Reimplemented in nmodl::ast::Identifier.
|
virtualnoexcept |
Check if the ast node is an instance of ast::IfStatement.
Reimplemented in nmodl::ast::IfStatement.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Include.
Reimplemented in nmodl::ast::Include.
|
virtualnoexcept |
Check if the ast node is an instance of ast::IndependentBlock.
Reimplemented in nmodl::ast::IndependentBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::IndexedName.
Reimplemented in nmodl::ast::IndexedName.
|
virtualnoexcept |
Check if the ast node is an instance of ast::InitialBlock.
Reimplemented in nmodl::ast::InitialBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Integer.
Reimplemented in nmodl::ast::Integer.
|
virtualnoexcept |
Check if the ast node is an instance of ast::KineticBlock.
Reimplemented in nmodl::ast::KineticBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::LagStatement.
Reimplemented in nmodl::ast::LagStatement.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Limits.
Reimplemented in nmodl::ast::Limits.
|
virtualnoexcept |
Check if the ast node is an instance of ast::LinEquation.
Reimplemented in nmodl::ast::LinEquation.
|
virtualnoexcept |
Check if the ast node is an instance of ast::LineComment.
Reimplemented in nmodl::ast::LineComment.
|
virtualnoexcept |
Check if the ast node is an instance of ast::LinearBlock.
Reimplemented in nmodl::ast::LinearBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::LocalListStatement.
Reimplemented in nmodl::ast::LocalListStatement.
|
virtualnoexcept |
Check if the ast node is an instance of ast::LocalVar.
Reimplemented in nmodl::ast::LocalVar.
|
virtualnoexcept |
Check if the ast node is an instance of ast::LonDiffuse.
Reimplemented in nmodl::ast::LonDiffuse.
|
virtualnoexcept |
Check if the ast node is an instance of ast::LongitudinalDiffusionBlock.
Reimplemented in nmodl::ast::LongitudinalDiffusionBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Model.
Reimplemented in nmodl::ast::Model.
|
virtualnoexcept |
Check if the ast node is an instance of ast::MutexLock.
Reimplemented in nmodl::ast::MutexLock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::MutexUnlock.
Reimplemented in nmodl::ast::MutexUnlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Name.
Reimplemented in nmodl::ast::Name.
|
virtualnoexcept |
Check if the ast node is an instance of ast::NetReceiveBlock.
Reimplemented in nmodl::ast::NetReceiveBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::NeuronBlock.
Reimplemented in nmodl::ast::NeuronBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Node.
Reimplemented in nmodl::ast::Node.
|
virtualnoexcept |
Check if the ast node is an instance of ast::NonLinEquation.
Reimplemented in nmodl::ast::NonLinEquation.
|
virtualnoexcept |
Check if the ast node is an instance of ast::NonLinearBlock.
Reimplemented in nmodl::ast::NonLinearBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Nonspecific.
Reimplemented in nmodl::ast::Nonspecific.
|
virtualnoexcept |
Check if the ast node is an instance of ast::NonspecificCurVar.
Reimplemented in nmodl::ast::NonspecificCurVar.
|
virtualnoexcept |
Check if the ast node is an instance of ast::NrnStateBlock.
Reimplemented in nmodl::ast::NrnStateBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Number.
Reimplemented in nmodl::ast::Number.
|
virtualnoexcept |
Check if the ast node is an instance of ast::NumberRange.
Reimplemented in nmodl::ast::NumberRange.
|
virtualnoexcept |
Check if the ast node is an instance of ast::OntologyStatement.
Reimplemented in nmodl::ast::OntologyStatement.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ParamAssign.
Reimplemented in nmodl::ast::ParamAssign.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ParamBlock.
Reimplemented in nmodl::ast::ParamBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ParenExpression.
Reimplemented in nmodl::ast::ParenExpression.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Pointer.
Reimplemented in nmodl::ast::Pointer.
|
virtualnoexcept |
Check if the ast node is an instance of ast::PointerVar.
Reimplemented in nmodl::ast::PointerVar.
|
virtualnoexcept |
Check if the ast node is an instance of ast::PrimeName.
Reimplemented in nmodl::ast::PrimeName.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ProcedureBlock.
Reimplemented in nmodl::ast::ProcedureBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Program.
Reimplemented in nmodl::ast::Program.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ProtectStatement.
Reimplemented in nmodl::ast::ProtectStatement.
|
virtualnoexcept |
Check if the ast node is an instance of ast::RandomVar.
Reimplemented in nmodl::ast::RandomVar.
|
virtualnoexcept |
Check if the ast node is an instance of ast::RandomVarList.
Reimplemented in nmodl::ast::RandomVarList.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Range.
Reimplemented in nmodl::ast::Range.
|
virtualnoexcept |
Check if the ast node is an instance of ast::RangeVar.
Reimplemented in nmodl::ast::RangeVar.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ReactVarName.
Reimplemented in nmodl::ast::ReactVarName.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ReactionOperator.
Reimplemented in nmodl::ast::ReactionOperator.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ReactionStatement.
Reimplemented in nmodl::ast::ReactionStatement.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ReadIonVar.
Reimplemented in nmodl::ast::ReadIonVar.
|
virtualnoexcept |
Check if the ast node is an instance of ast::SolutionExpression.
Reimplemented in nmodl::ast::SolutionExpression.
|
virtualnoexcept |
Check if the ast node is an instance of ast::SolveBlock.
Reimplemented in nmodl::ast::SolveBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::StateBlock.
Reimplemented in nmodl::ast::StateBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Statement.
Reimplemented in nmodl::ast::Statement.
|
virtualnoexcept |
Check if the ast node is an instance of ast::StatementBlock.
Reimplemented in nmodl::ast::StatementBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::String.
Reimplemented in nmodl::ast::String.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Suffix.
Reimplemented in nmodl::ast::Suffix.
|
virtualnoexcept |
Check if the ast node is an instance of ast::TableStatement.
Reimplemented in nmodl::ast::TableStatement.
|
virtualnoexcept |
Check if the ast node is an instance of ast::ThreadSafe.
Reimplemented in nmodl::ast::ThreadSafe.
|
virtualnoexcept |
Check if the ast node is an instance of ast::UnaryExpression.
Reimplemented in nmodl::ast::UnaryExpression.
|
virtualnoexcept |
Check if the ast node is an instance of ast::UnaryOperator.
Reimplemented in nmodl::ast::UnaryOperator.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Unit.
Reimplemented in nmodl::ast::Unit.
|
virtualnoexcept |
Check if the ast node is an instance of ast::UnitBlock.
Reimplemented in nmodl::ast::UnitBlock.
|
virtualnoexcept |
Check if the ast node is an instance of ast::UnitDef.
Reimplemented in nmodl::ast::UnitDef.
|
virtualnoexcept |
Check if the ast node is an instance of ast::UnitState.
Reimplemented in nmodl::ast::UnitState.
|
virtualnoexcept |
Check if the ast node is an instance of ast::UpdateDt.
Reimplemented in nmodl::ast::UpdateDt.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Useion.
Reimplemented in nmodl::ast::Useion.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Valence.
Reimplemented in nmodl::ast::Valence.
|
virtualnoexcept |
Check if the ast node is an instance of ast::VarName.
Reimplemented in nmodl::ast::VarName.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Verbatim.
Reimplemented in nmodl::ast::Verbatim.
|
virtualnoexcept |
Check if the ast node is an instance of ast::Watch.
Reimplemented in nmodl::ast::Watch.
|
virtualnoexcept |
Check if the ast node is an instance of ast::WatchStatement.
Reimplemented in nmodl::ast::WatchStatement.
|
virtualnoexcept |
Check if the ast node is an instance of ast::WhileStatement.
Reimplemented in nmodl::ast::WhileStatement.
|
virtualnoexcept |
Check if the ast node is an instance of ast::WrappedExpression.
Reimplemented in nmodl::ast::WrappedExpression.
|
virtualnoexcept |
Check if the ast node is an instance of ast::WriteIonVar.
Reimplemented in nmodl::ast::WriteIonVar.
|
virtual |
Negate the value of AST node.
Parser parse -x
in two parts : x
and then -
. Once second token -
is encountered, the corresponding value of ast node needs to be multiplied by -1
for ast::Number node types or apply !
operator for the nodes of type ast::Boolean.
Reimplemented in nmodl::ast::Integer, nmodl::ast::Double, nmodl::ast::Float, and nmodl::ast::Boolean.
|
virtual |
Set name for the AST node.
Some ast nodes have a member marked designated as node name (e.g. nodes derived from ast::Identifier). This method is used to set new name for those nodes. This useful for passes like nmodl::visitor::RenameVisitor.
Reimplemented in nmodl::ast::Name.
|
virtual |
Parent setter.
Usually, the parent pointer cannot be set in the constructor because children are generally build BEFORE the parent. Conversely, we set children parents directly in the parent constructor using set_parent_in_children()
Check Ast::parent for more information
|
virtual |
Set symbol table for the AST node.
Top level, block scoped nodes store symbol table in the ast node. nmodl::visitor::SymtabVisitor then used this method to setup symbol table for every node in the ast.
Reimplemented in nmodl::ast::EigenNewtonSolverBlock, nmodl::ast::AssignedBlock, nmodl::ast::EigenLinearSolverBlock, nmodl::ast::LinearBlock, nmodl::ast::StatementBlock, nmodl::ast::FunctionBlock, nmodl::ast::NonLinearBlock, nmodl::ast::ProcedureBlock, nmodl::ast::CvodeBlock, nmodl::ast::Program, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::DerivativeBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::DiscreteBlock, nmodl::ast::SolveBlock, nmodl::ast::BreakpointBlock, nmodl::ast::DestructorBlock, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::AfterBlock, nmodl::ast::ConstructorBlock, nmodl::ast::StateBlock, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::ConstantBlock, nmodl::ast::InitialBlock, nmodl::ast::IndependentBlock, nmodl::ast::BeforeBlock, nmodl::ast::NrnStateBlock, nmodl::ast::UnitBlock, and nmodl::ast::BABlock.
|
pure virtual |
Visit children i.e.
member of AST node using provided visitor
Different nodes in the AST have different members (i.e. children). This method recursively visits children using provided concrete visitor.
v | Concrete visitor that will be used to recursively visit node |
visit_children
method implementation which shows ast::IndexedName node children are visited instead of node itself.Implemented in nmodl::ast::EigenNewtonSolverBlock, nmodl::ast::EigenLinearSolverBlock, nmodl::ast::AssignedDefinition, nmodl::ast::FunctionBlock, nmodl::ast::ProcedureBlock, nmodl::ast::CvodeBlock, nmodl::ast::Useion, nmodl::ast::FromStatement, nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::AssignedBlock, nmodl::ast::ReactionStatement, nmodl::ast::TableStatement, nmodl::ast::FactorDef, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::StatementBlock, nmodl::ast::DerivativeBlock, nmodl::ast::SolveBlock, nmodl::ast::Program, nmodl::ast::IfStatement, nmodl::ast::ParamAssign, nmodl::ast::DiscreteBlock, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::Global, nmodl::ast::LocalListStatement, nmodl::ast::Pointer, nmodl::ast::WatchStatement, nmodl::ast::VarName, nmodl::ast::Compartment, nmodl::ast::LonDiffuse, nmodl::ast::BinaryExpression, nmodl::ast::BreakpointBlock, nmodl::ast::DestructorBlock, nmodl::ast::NeuronBlock, nmodl::ast::ConstantVar, nmodl::ast::ParamBlock, nmodl::ast::AfterBlock, nmodl::ast::ConstructorBlock, nmodl::ast::StateBlock, nmodl::ast::ConstantBlock, nmodl::ast::InitialBlock, nmodl::ast::BABlock, nmodl::ast::IndependentBlock, nmodl::ast::Define, nmodl::ast::LagStatement, nmodl::ast::PrimeName, nmodl::ast::Argument, nmodl::ast::ConductanceHint, nmodl::ast::IndexedName, nmodl::ast::BeforeBlock, nmodl::ast::NrnStateBlock, nmodl::ast::UnitBlock, nmodl::ast::Include, nmodl::ast::Conserve, nmodl::ast::ElseIfStatement, nmodl::ast::Integer, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::WhileStatement, nmodl::ast::FunctionCall, nmodl::ast::ReactVarName, nmodl::ast::Suffix, nmodl::ast::UnitDef, nmodl::ast::Name, nmodl::ast::UnaryExpression, nmodl::ast::BbcorePointer, nmodl::ast::DoubleUnit, nmodl::ast::Limits, nmodl::ast::NumberRange, nmodl::ast::RandomVarList, nmodl::ast::SolutionExpression, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::Double, nmodl::ast::String, nmodl::ast::BlockComment, nmodl::ast::ElectrodeCurrent, nmodl::ast::ElseStatement, nmodl::ast::External, nmodl::ast::Model, nmodl::ast::Nonspecific, nmodl::ast::OntologyStatement, nmodl::ast::ProtectStatement, nmodl::ast::Range, nmodl::ast::UpdateDt, nmodl::ast::Verbatim, nmodl::ast::BbcorePointerVar, nmodl::ast::ElectrodeCurVar, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReadIonVar, nmodl::ast::Unit, nmodl::ast::WriteIonVar, nmodl::ast::Float, nmodl::ast::Boolean, nmodl::ast::ConstantStatement, nmodl::ast::DerivimplicitCallback, nmodl::ast::DiffEqExpression, nmodl::ast::ExpressionStatement, nmodl::ast::LineComment, nmodl::ast::ParenExpression, nmodl::ast::WrappedExpression, nmodl::ast::BABlockType, nmodl::ast::BinaryOperator, nmodl::ast::ReactionOperator, nmodl::ast::UnaryOperator, nmodl::ast::UnitState, nmodl::ast::MutexLock, nmodl::ast::MutexUnlock, nmodl::ast::ThreadSafe, nmodl::ast::Block, nmodl::ast::Number, nmodl::ast::Expression, nmodl::ast::Identifier, nmodl::ast::Node, and nmodl::ast::Statement.
|
pure virtual |
Visit children i.e.
member of AST node using provided visitor
Different nodes in the AST have different members (i.e. children). This method recursively visits children using provided concrete visitor.
v | Concrete visitor that will be used to recursively visit node |
visit_children
method implementation which shows ast::IndexedName node children are visited instead of node itself.Implemented in nmodl::ast::EigenNewtonSolverBlock, nmodl::ast::EigenLinearSolverBlock, nmodl::ast::AssignedDefinition, nmodl::ast::FunctionBlock, nmodl::ast::ProcedureBlock, nmodl::ast::CvodeBlock, nmodl::ast::Useion, nmodl::ast::FromStatement, nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::AssignedBlock, nmodl::ast::ReactionStatement, nmodl::ast::TableStatement, nmodl::ast::FactorDef, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::StatementBlock, nmodl::ast::DerivativeBlock, nmodl::ast::SolveBlock, nmodl::ast::Program, nmodl::ast::IfStatement, nmodl::ast::ParamAssign, nmodl::ast::DiscreteBlock, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::Global, nmodl::ast::LocalListStatement, nmodl::ast::Pointer, nmodl::ast::WatchStatement, nmodl::ast::VarName, nmodl::ast::Compartment, nmodl::ast::LonDiffuse, nmodl::ast::BinaryExpression, nmodl::ast::BreakpointBlock, nmodl::ast::DestructorBlock, nmodl::ast::NeuronBlock, nmodl::ast::ConstantVar, nmodl::ast::ParamBlock, nmodl::ast::AfterBlock, nmodl::ast::ConstructorBlock, nmodl::ast::StateBlock, nmodl::ast::ConstantBlock, nmodl::ast::InitialBlock, nmodl::ast::BABlock, nmodl::ast::IndependentBlock, nmodl::ast::Define, nmodl::ast::LagStatement, nmodl::ast::PrimeName, nmodl::ast::Argument, nmodl::ast::ConductanceHint, nmodl::ast::IndexedName, nmodl::ast::BeforeBlock, nmodl::ast::NrnStateBlock, nmodl::ast::UnitBlock, nmodl::ast::Include, nmodl::ast::Conserve, nmodl::ast::ElseIfStatement, nmodl::ast::Integer, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::WhileStatement, nmodl::ast::FunctionCall, nmodl::ast::ReactVarName, nmodl::ast::Suffix, nmodl::ast::UnitDef, nmodl::ast::Name, nmodl::ast::UnaryExpression, nmodl::ast::BbcorePointer, nmodl::ast::DoubleUnit, nmodl::ast::Limits, nmodl::ast::NumberRange, nmodl::ast::RandomVarList, nmodl::ast::SolutionExpression, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::Double, nmodl::ast::String, nmodl::ast::BlockComment, nmodl::ast::ElectrodeCurrent, nmodl::ast::ElseStatement, nmodl::ast::External, nmodl::ast::Model, nmodl::ast::Nonspecific, nmodl::ast::OntologyStatement, nmodl::ast::ProtectStatement, nmodl::ast::Range, nmodl::ast::UpdateDt, nmodl::ast::Verbatim, nmodl::ast::BbcorePointerVar, nmodl::ast::ElectrodeCurVar, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReadIonVar, nmodl::ast::Unit, nmodl::ast::WriteIonVar, nmodl::ast::Float, nmodl::ast::Boolean, nmodl::ast::ConstantStatement, nmodl::ast::DerivimplicitCallback, nmodl::ast::DiffEqExpression, nmodl::ast::ExpressionStatement, nmodl::ast::LineComment, nmodl::ast::ParenExpression, nmodl::ast::WrappedExpression, nmodl::ast::BABlockType, nmodl::ast::BinaryOperator, nmodl::ast::ReactionOperator, nmodl::ast::UnaryOperator, nmodl::ast::UnitState, nmodl::ast::MutexLock, nmodl::ast::MutexUnlock, nmodl::ast::ThreadSafe, nmodl::ast::Block, nmodl::ast::Number, nmodl::ast::Expression, nmodl::ast::Identifier, nmodl::ast::Node, and nmodl::ast::Statement.
|
virtualdefault |
|
private |
Generic pointer to the parent.
Children types can be known at compile time. Conversely, many parents can have the same children type. Thus, this is just a pointer to the base class. The pointer to the parent cannot have ownership (circular ownership problem). weak_ptr you say? Yes, however weak_ptr can be instantiated from shared_ptr (not this). Whys is this a problem? In bison things must be passed around as raw pointers (because it uses unions etc.) and there are cases where the shared_ptr to the parent was not yet created while the child is added (throwing a bad_weak_ptr exception).
i.e. in bison the lines:
ast::WatchStatement* a = new ast::WatchStatement(); yylhs.value.as< ast::WatchStatement* > ()->add_watch(a);
would throw a bad_weak_ptr exception because when you call add_watch the shared_ptr_from_this to "a" is not yet created.