![Logo](logo.png) |
User Guide
|
Go to the documentation of this file.
78 printer->add_element(ss.str());
107 std::stringstream ss;
108 ss << std::setprecision(16);
110 printer->add_element(ss.str());
121 std::stringstream ss;
122 ss << std::setprecision(16);
124 printer->add_element(ss.str());
135 std::stringstream ss;
137 printer->add_element(ss.str());
164 const std::string symbol(order,
'\'');
165 printer->add_element(symbol);
179 printer->add_element(
"[");
181 printer->add_element(
"]");
196 printer->add_element(
"@");
197 node.
get_at()->accept(*
this);
202 printer->add_element(
"[");
204 printer->add_element(
"]");
233 printer->add_element(
" ");
357 printer->add_element(
"PARAMETER ");
359 printer->push_level();
364 printer->pop_level();
368 printer->add_element(
": INDEPENDENT block is deprecated and has no effect in the NEURON model. Skipped!");
372 printer->add_element(
"INDEPENDENT ");
374 printer->push_level();
379 printer->pop_level();
386 printer->add_element(
"ASSIGNED ");
388 printer->push_level();
393 printer->pop_level();
400 printer->add_element(
"STATE ");
402 printer->push_level();
407 printer->pop_level();
414 printer->add_element(
"INITIAL ");
428 printer->add_element(
"CONSTRUCTOR ");
442 printer->add_element(
"DESTRUCTOR ");
457 printer->push_level();
462 printer->pop_level();
469 printer->add_element(
"DERIVATIVE ");
473 printer->add_element(
" ");
487 printer->add_element(
"LINEAR ");
491 printer->add_element(
" ");
495 printer->add_element(
" SOLVEFOR ");
511 printer->add_element(
"NONLINEAR ");
518 printer->add_element(
" SOLVEFOR ");
521 printer->add_element(
" ");
534 printer->add_element(
"DISCRETE ");
538 printer->add_element(
" ");
552 printer->add_element(
"FUNCTION_TABLE ");
557 printer->add_element(
"(");
559 printer->add_element(
")");
562 printer->add_element(
" ");
573 printer->add_element(
"FUNCTION ");
578 printer->add_element(
"(");
580 printer->add_element(
")");
583 printer->add_element(
" ");
586 printer->add_element(
" ");
599 printer->add_element(
"PROCEDURE ");
604 printer->add_element(
"(");
606 printer->add_element(
") ");
624 printer->add_element(
"NET_RECEIVE ");
626 printer->add_element(
"(");
628 printer->add_element(
") ");
641 printer->add_element(
"SOLVE");
644 printer->add_element(
" ");
649 printer->add_element(
" METHOD ");
655 printer->add_element(
" STEADYSTATE ");
666 printer->add_element(
"BREAKPOINT ");
680 printer->add_element(
"BEFORE ");
692 printer->add_element(
"AFTER ");
707 printer->add_element(
" ");
721 printer->add_element(
"FOR_NETCONS ");
723 printer->add_element(
"(");
725 printer->add_element(
") ");
738 printer->add_element(
"KINETIC ");
742 printer->add_element(
" ");
759 printer->add_element(
"UNITS ");
761 printer->push_level();
766 printer->pop_level();
773 printer->add_element(
"CONSTANT ");
775 printer->push_level();
780 printer->pop_level();
787 printer->add_element(
"NEURON ");
803 printer->add_element(
"(");
805 printer->add_element(
")");
843 printer->add_element(
"<");
845 printer->add_element(
",");
849 printer->add_element(
">");
860 printer->add_element(
"<");
862 printer->add_element(
",");
866 printer->add_element(
">");
880 printer->add_element(
" = ");
885 printer->add_element(
" ");
897 std::stringstream ss;
899 printer->add_element(ss.str());
910 std::stringstream ss;
912 printer->add_element(ss.str());
923 std::stringstream ss;
925 printer->add_element(ss.str());
937 printer->add_element(
"(");
939 printer->add_element(
")");
954 if(op ==
"=" || op ==
"&&" || op ==
"||" || op ==
"==")
956 printer->add_element(op);
993 printer->add_element(
"~ ");
997 printer->add_element(
" = ");
1000 node.
get_rhs()->accept(*
this);
1009 printer->add_element(
"~ ");
1012 node.
get_lhs()->accept(*
this);
1013 printer->add_element(
" = ");
1016 node.
get_rhs()->accept(*
this);
1029 printer->add_element(
"(");
1031 printer->add_element(
")");
1041 printer->add_element(
"(");
1043 printer->add_element(
")");
1046 printer->add_element(
" ");
1057 std::stringstream ss;
1059 printer->add_element(ss.str());
1074 printer->add_element(
" = ");
1087 printer->add_element(
" =");
1091 printer->add_element(
" ");
1096 printer->add_element(
" ");
1101 if(node.
get_gt()->eval()) {
1102 printer->add_element(
" ->");
1108 printer->add_element(
" ");
1121 printer->add_element(
" ");
1123 printer->add_element(
" ");
1136 std::stringstream ss;
1138 printer->add_element(ss.str());
1148 printer->add_element(
"LOCAL ");
1160 printer->add_element(
"TITLE");
1172 printer->add_element(
"DEFINE ");
1178 printer->add_element(
" ");
1188 printer->add_element(
"INCLUDE ");
1209 printer->add_element(
" = ");
1215 printer->add_element(
" ");
1221 printer->add_element(
" ");
1238 printer->add_element(
"[");
1240 printer->add_element(
"]");
1245 printer->add_element(
" FROM ");
1251 printer->add_element(
" TO ");
1252 node.
get_to()->accept(*
this);
1257 printer->add_element(
" START ");
1263 printer->add_element(
" ");
1269 printer->add_element(
" <");
1271 printer->add_element(
">");
1281 printer->add_element(
"CONDUCTANCE ");
1288 printer->add_element(
" USEION ");
1289 node.
get_ion()->accept(*
this);
1310 printer->add_element(
"PROTECT ");
1322 printer->add_element(
"FROM ");
1328 printer->add_element(
" = ");
1332 printer->add_element(
" TO ");
1333 node.
get_to()->accept(*
this);
1337 printer->add_element(
" BY ");
1340 printer->add_element(
" ");
1353 printer->add_element(
"WHILE ");
1356 printer->add_element(
"(");
1358 printer->add_element(
") ");
1372 printer->add_element(
"IF ");
1375 printer->add_element(
"(");
1377 printer->add_element(
") ");
1399 printer->add_element(
" ELSE IF ");
1402 printer->add_element(
"(");
1404 printer->add_element(
") ");
1418 printer->add_element(
" ELSE ");
1432 printer->add_element(
"WATCH ");
1444 printer->add_element(
"MUTEXLOCK");
1453 printer->add_element(
"MUTEXUNLOCK");
1462 printer->add_element(
"CONSERVE");
1465 printer->add_element(
" ");
1469 printer->add_element(
" = ");
1479 printer->add_element(
"COMPARTMENT");
1483 printer->add_element(
" ");
1485 printer->add_element(
",");
1489 printer->add_element(
" ");
1494 printer->add_element(
" {");
1495 visit_element(node.
get_species(),
" ",
false,
false);
1496 printer->add_element(
"}");
1506 printer->add_element(
"LONGITUDINAL_DIFFUSION");
1510 printer->add_element(
" ");
1512 printer->add_element(
",");
1516 printer->add_element(
" ");
1521 printer->add_element(
" {");
1522 visit_element(node.
get_species(),
" ",
false,
false);
1523 printer->add_element(
"}");
1533 printer->add_element(
"~ ");
1539 printer->add_element(
" ");
1544 printer->add_element(
" ");
1549 printer->add_element(
" (");
1554 printer->add_element(
", ");
1557 printer->add_element(
")");
1565 printer->add_element(
"LAG ");
1571 printer->add_element(
" BY ");
1592 printer->add_element(
"TABLE ");
1599 printer->add_element(
" DEPEND ");
1604 printer->add_element(
" FROM ");
1608 printer->add_element(
" TO ");
1609 node.
get_to()->accept(*
this);
1612 printer->add_element(
" WITH ");
1625 printer->add_element(
" ");
1637 printer->add_element(
"USEION ");
1644 printer->add_element(
" READ ");
1650 printer->add_element(
" WRITE ");
1661 printer->add_element(
" REPRESENTS ");
1672 printer->add_element(
"NONSPECIFIC_CURRENT ");
1684 printer->add_element(
"ELECTRODE_CURRENT ");
1696 printer->add_element(
"RANGE ");
1708 printer->add_element(
"GLOBAL ");
1720 printer->add_element(
"RANDOM ");
1732 printer->add_element(
"POINTER ");
1744 printer->add_element(
"BBCOREPOINTER ");
1756 printer->add_element(
"EXTERNAL ");
1768 printer->add_element(
"THREADSAFE");
1777 printer->add_element(
"VERBATIM");
1781 printer->add_element(
"ENDVERBATIM");
1801 printer->add_element(
"COMMENT");
1805 printer->add_element(
"ENDCOMMENT");
1814 printer->add_element(
"REPRESENTS ");
1828 visit_element(node.
get_blocks(),
"",
true,
false);
1837 printer->add_element(
"NRN_STATE ");
1849 printer->add_element(
"EIGEN_NEWTON_SOLVE");
1852 printer->add_element(
"[");
1854 printer->add_element(
"]");
1893 printer->add_element(
"EIGEN_LINEAR_SOLVE");
1896 printer->add_element(
"[");
1898 printer->add_element(
"]");
1932 printer->add_element(
"CVODE_BLOCK ");
1936 printer->add_element(
" ");
1939 printer->add_element(
"[");
1941 printer->add_element(
"]");
1960 printer->add_element(
"LONGITUDINAL_DIFFUSION_BLOCK");
1963 printer->add_element(
" ");
1965 printer->add_element(
" ");
2020 printer->add_element(
"dt");
2023 printer->add_element(
" = ");
std::shared_ptr< Number > get_to() const noexcept
Getter for member variable AssignedDefinition::to.
std::shared_ptr< Expression > get_length() const noexcept
Getter for member variable IndexedName::length.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Expression > get_expression() const noexcept
Getter for member variable ExpressionStatement::expression.
std::shared_ptr< StatementBlock > get_non_stiff_block() const noexcept
Getter for member variable CvodeBlock::non_stiff_block.
const NameVector & get_depend_vars() const noexcept
Getter for member variable TableStatement::depend_vars.
Represents a BEFORE block in NMODL.
Represents a variable in the ast::ConstantBlock.
void visit_wrapped_expression(const ast::WrappedExpression &node) override
visit node of type ast::WrappedExpression
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const LocalVarVector & get_variables() const noexcept
Getter for member variable LocalListStatement::variables.
std::shared_ptr< Block > get_node_to_solve() const noexcept
Getter for member variable DerivimplicitCallback::node_to_solve.
Represents an INCLUDE statement in NMODL.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Identifier > get_name() const noexcept
Getter for member variable LocalVar::name.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_boolean(const ast::Boolean &node) override
visit node of type ast::Boolean
void visit_double_unit(const ast::DoubleUnit &node) override
visit node of type ast::DoubleUnit
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string eval() const
Return value of the ast node.
Base class for all AST node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents a block to be executed before or after another block.
Represents a C code block.
void visit_random_var(const ast::RandomVar &node) override
visit node of type ast::RandomVar
void visit_electrode_cur_var(const ast::ElectrodeCurVar &node) override
visit node of type ast::ElectrodeCurVar
void visit_after_block(const ast::AfterBlock &node) override
visit node of type ast::AfterBlock
const ArgumentVector & get_parameters() const noexcept override
Getter for member variable ProcedureBlock::parameters.
void visit_breakpoint_block(const ast::BreakpointBlock &node) override
visit node of type ast::BreakpointBlock
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable LongitudinalDiffusionBlock::name.
std::shared_ptr< Expression > get_expression() const noexcept
Getter for member variable WrappedExpression::expression.
std::shared_ptr< Expression > get_expression1() const noexcept
Getter for member variable ReactionStatement::expression1.
void visit_reaction_statement(const ast::ReactionStatement &node) override
visit node of type ast::ReactionStatement
void visit_paren_expression(const ast::ParenExpression &node) override
visit node of type ast::ParenExpression
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_unary_expression(const ast::UnaryExpression &node) override
visit node of type ast::UnaryExpression
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_global(const ast::Global &node) override
visit node of type ast::Global
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Base class for all identifiers.
void visit_for_netcon(const ast::ForNetcon &node) override
visit node of type ast::ForNetcon
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable DiscreteBlock::name.
std::string eval() const
Return enum value in string form.
std::shared_ptr< Expression > get_react() const noexcept
Getter for member variable Conserve::react.
std::shared_ptr< Number > get_start() const noexcept
Getter for member variable AssignedDefinition::start.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const ElectrodeCurVarVector & get_currents() const noexcept
Getter for member variable ElectrodeCurrent::currents.
void visit_bbcore_pointer_var(const ast::BbcorePointerVar &node) override
visit node of type ast::BbcorePointerVar
Represents differential equation in DERIVATIVE block.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents a statement in ASSIGNED or STATE block.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const NonspecificCurVarVector & get_currents() const noexcept
Getter for member variable Nonspecific::currents.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > get_ion() const noexcept
Getter for member variable ConductanceHint::ion.
void visit_else_if_statement(const ast::ElseIfStatement &node) override
visit node of type ast::ElseIfStatement
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents a double variable.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_diff_eq_expression(const ast::DiffEqExpression &node) override
visit node of type ast::DiffEqExpression
Represents RANGE variables statement in NMODL.
const ConstantStatementVector & get_statements() const noexcept
Getter for member variable ConstantBlock::statements.
std::shared_ptr< String > get_value() const noexcept
Getter for member variable Name::value.
void visit_thread_safe(const ast::ThreadSafe &node) override
visit node of type ast::ThreadSafe
std::shared_ptr< Number > get_min() const noexcept
Getter for member variable NumberRange::min.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
One equation in a system of equations that collectively make a NONLINEAR block.
Represents RANDOM statement in NMODL.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represent a single variable of type BBCOREPOINTER.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable DerivativeBlock::name.
void visit_from_statement(const ast::FromStatement &node) override
visit node of type ast::FromStatement
const ArgumentVector & get_parameters() const noexcept override
Getter for member variable FunctionTableBlock::parameters.
std::shared_ptr< Expression > get_value() const noexcept
Getter for member variable Watch::value.
void visit_unit_block(const ast::UnitBlock &node) override
visit node of type ast::UnitBlock
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Expression > get_expression() const noexcept
Getter for member variable UnaryExpression::expression.
void visit_factor_def(const ast::FactorDef &node) override
visit node of type ast::FactorDef
std::shared_ptr< Integer > get_with() const noexcept
Getter for member variable TableStatement::with.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable WriteIonVar::name.
std::shared_ptr< BABlock > get_bablock() const noexcept
Getter for member variable BeforeBlock::bablock.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represent CONSERVE statement in NMODL.
void visit_unit_state(const ast::UnitState &node) override
visit node of type ast::UnitState
const ArgumentVector & get_parameters() const noexcept override
Getter for member variable NetReceiveBlock::parameters.
std::shared_ptr< Expression > get_expr() const noexcept
Getter for member variable Conserve::expr.
void visit_independent_block(const ast::IndependentBlock &node) override
visit node of type ast::IndependentBlock
std::shared_ptr< Expression > get_expression2() const noexcept
Getter for member variable ReactionStatement::expression2.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Number > get_min() const noexcept
Getter for member variable Limits::min.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable LinearBlock::name.
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable NetReceiveBlock::statement_block.
void visit_destructor_block(const ast::DestructorBlock &node) override
visit node of type ast::DestructorBlock
void visit_discrete_block(const ast::DiscreteBlock &node) override
visit node of type ast::DiscreteBlock
std::shared_ptr< StatementBlock > get_longitudinal_diffusion_statements() const noexcept
Getter for member variable LongitudinalDiffusionBlock::longitudinal_diffusion_statements.
void visit_lon_diffuse(const ast::LonDiffuse &node) override
visit node of type ast::LonDiffuse
std::shared_ptr< String > get_ontology_id() const noexcept
Getter for member variable Useion::ontology_id.
Represents CONDUCTANCE statement in NMODL.
const PointerVarVector & get_variables() const noexcept
Getter for member variable Pointer::variables.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable FunctionCall::name.
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable KineticBlock::statement_block.
void visit_mutex_lock(const ast::MutexLock &node) override
visit node of type ast::MutexLock
std::shared_ptr< StatementBlock > get_initialize_block() const noexcept
Getter for member variable EigenNewtonSolverBlock::initialize_block.
std::shared_ptr< Name > get_index_name() const noexcept
Getter for member variable Compartment::index_name.
std::shared_ptr< Identifier > get_name() const noexcept
Getter for member variable ParamAssign::name.
const BbcorePointerVarVector & get_variables() const noexcept
Getter for member variable BbcorePointer::variables.
void visit_model(const ast::Model &node) override
visit node of type ast::Model
void visit_block_comment(const ast::BlockComment &node) override
visit node of type ast::BlockComment
encapsulates code generation backend implementations
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable InitialBlock::statement_block.
std::shared_ptr< Double > get_abstol() const noexcept
Getter for member variable AssignedDefinition::abstol.
std::shared_ptr< String > get_value() const noexcept
Getter for member variable PrimeName::value.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_argument(const ast::Argument &node) override
visit node of type ast::Argument
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > get_conductance() const noexcept
Getter for member variable ConductanceHint::conductance.
std::shared_ptr< StatementBlock > get_setup_x_block() const noexcept
Getter for member variable EigenLinearSolverBlock::setup_x_block.
void visit_state_block(const ast::StateBlock &node) override
visit node of type ast::StateBlock
Represents a DEFINE statement in NMODL.
const WriteIonVarVector & get_writelist() const noexcept
Getter for member variable Useion::writelist.
std::shared_ptr< Identifier > get_name() const noexcept
Getter for member variable IndexedName::name.
void visit_verbatim(const ast::Verbatim &node) override
visit node of type ast::Verbatim
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents a block used for variable timestep integration (CVODE) of DERIVATIVE blocks.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > get_macro() const noexcept
Getter for member variable Integer::macro.
std::shared_ptr< StatementBlock > get_variable_block() const noexcept
Getter for member variable EigenLinearSolverBlock::variable_block.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable ElectrodeCurVar::name.
std::shared_ptr< Double > get_value() const noexcept
Getter for member variable Valence::value.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represent MUTEXLOCK statement in NMODL.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_function_block(const ast::FunctionBlock &node) override
visit node of type ast::FunctionBlock
std::shared_ptr< StatementBlock > get_stiff_block() const noexcept
Getter for member variable CvodeBlock::stiff_block.
const NameVector & get_species() const noexcept
Getter for member variable Compartment::species.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_string(const ast::String &node) override
visit node of type ast::String
Represents TABLE statement in NMODL.
void visit_reaction_operator(const ast::ReactionOperator &node) override
visit node of type ast::ReactionOperator
void visit_identifier(const ast::Identifier &node) override
visit node of type ast::Identifier
void visit_random_var_list(const ast::RandomVarList &node) override
visit node of type ast::RandomVarList
const NameVector & get_solvefor() const noexcept
Getter for member variable NonLinearBlock::solvefor.
std::shared_ptr< Integer > get_length() const noexcept
Getter for member variable AssignedDefinition::length.
void visit_range_var(const ast::RangeVar &node) override
visit node of type ast::RangeVar
Represents an integer variable.
std::shared_ptr< VarName > get_name() const noexcept
Getter for member variable ReactVarName::name.
Represents SUFFIX statement in NMODL.
std::string eval() const
Return enum value in string form.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Single variable of type RANDOM.
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable DiscreteBlock::statement_block.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Identifier > get_name() const noexcept
Getter for member variable LagStatement::name.
const GlobalVarVector & get_variables() const noexcept
Getter for member variable Global::variables.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Integer > get_n_state_vars() const noexcept
Getter for member variable EigenNewtonSolverBlock::n_state_vars.
std::shared_ptr< Expression > get_reaction2() const noexcept
Getter for member variable ReactionStatement::reaction2.
std::shared_ptr< Expression > get_index() const noexcept
Getter for member variable VarName::index.
std::shared_ptr< Number > get_from() const noexcept
Getter for member variable AssignedDefinition::from.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_statement_block(const ast::StatementBlock &node) override
visit node of type ast::StatementBlock
void visit_external(const ast::External &node) override
visit node of type ast::External
std::shared_ptr< String > get_statement() const noexcept
Getter for member variable Verbatim::statement.
std::string eval() const
Return value of the ast node.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable RandomVar::name.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents a ASSIGNED block in the NMODL.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable LinearBlock::statement_block.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable BABlock::statement_block.
void visit_line_comment(const ast::LineComment &node) override
visit node of type ast::LineComment
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable BreakpointBlock::statement_block.
std::shared_ptr< Expression > get_rhs() const noexcept
Getter for member variable BinaryExpression::rhs.
void visit_longitudinal_diffusion_block(const ast::LongitudinalDiffusionBlock &node) override
visit node of type ast::LongitudinalDiffusionBlock
void visit_local_list_statement(const ast::LocalListStatement &node) override
visit node of type ast::LocalListStatement
Represent newton solver solution block based on Eigen.
void visit_indexed_name(const ast::IndexedName &node) override
visit node of type ast::IndexedName
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable ProcedureBlock::statement_block.
bool eval() const
Return value of the ast node.
void visit_derivative_block(const ast::DerivativeBlock &node) override
visit node of type ast::DerivativeBlock
std::shared_ptr< Expression > get_increment() const noexcept
Getter for member variable FromStatement::increment.
void visit_derivimplicit_callback(const ast::DerivimplicitCallback &node) override
visit node of type ast::DerivimplicitCallback
void visit_name(const ast::Name &node) override
visit node of type ast::Name
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Integer > get_at() const noexcept
Getter for member variable VarName::at.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_write_ion_var(const ast::WriteIonVar &node) override
visit node of type ast::WriteIonVar
std::shared_ptr< StatementBlock > get_initialize_block() const noexcept
Getter for member variable EigenLinearSolverBlock::initialize_block.
std::shared_ptr< Integer > get_order() const noexcept
Getter for member variable PrimeName::order.
std::shared_ptr< Expression > get_reaction1() const noexcept
Getter for member variable ReactionStatement::reaction1.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable RangeVar::name.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< StatementBlock > get_update_states_block() const noexcept
Getter for member variable EigenLinearSolverBlock::update_states_block.
std::shared_ptr< Unit > get_unit() const noexcept
Getter for member variable ConstantVar::unit.
const StatementVector & get_statements() const noexcept
Getter for member variable StatementBlock::statements.
void visit_protect_statement(const ast::ProtectStatement &node) override
visit node of type ast::ProtectStatement
std::shared_ptr< Name > get_index_name() const noexcept
Getter for member variable LonDiffuse::index_name.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Base class for all block scoped nodes.
void visit_constructor_block(const ast::ConstructorBlock &node) override
visit node of type ast::ConstructorBlock
std::shared_ptr< Boolean > get_gt() const noexcept
Getter for member variable FactorDef::gt.
void visit_net_receive_block(const ast::NetReceiveBlock &node) override
visit node of type ast::NetReceiveBlock
Represents a INITIAL block in the NMODL.
std::shared_ptr< Valence > get_valence() const noexcept
Getter for member variable Useion::valence.
void visit_program(const ast::Program &node) override
visit node of type ast::Program
const ElseIfStatementVector & get_elseifs() const noexcept
Getter for member variable IfStatement::elseifs.
void visit_cvode_block(const ast::CvodeBlock &node) override
visit node of type ast::CvodeBlock
void visit_statement(const ast::Statement &node) override
visit node of type ast::Statement
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable GlobalVar::name.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< StatementBlock > get_setup_x_block() const noexcept
Getter for member variable EigenNewtonSolverBlock::setup_x_block.
std::shared_ptr< Expression > get_from() const noexcept
Getter for member variable TableStatement::from.
const AssignedDefinitionVector & get_definitions() const noexcept
Getter for member variable AssignedBlock::definitions.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Expression > get_condition() const noexcept
Getter for member variable IfStatement::condition.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Expression > get_to() const noexcept
Getter for member variable TableStatement::to.
std::shared_ptr< Unit > get_unit1() const noexcept
Getter for member variable UnitDef::unit1.
std::shared_ptr< Identifier > get_name() const noexcept
Getter for member variable Argument::name.
void visit_linear_block(const ast::LinearBlock &node) override
visit node of type ast::LinearBlock
const StatementVector & get_solve_statements() const noexcept
Getter for member variable NrnStateBlock::solve_statements.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable NonspecificCurVar::name.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable ProcedureBlock::name.
void visit_node(const ast::Node &node) override
visit node of type ast::Node
void visit_solution_expression(const ast::SolutionExpression &node) override
visit node of type ast::SolutionExpression
std::shared_ptr< Double > get_value() const noexcept
Getter for member variable FactorDef::value.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represent WATCH statement in NMODL.
const ExpressionVector & get_definitions() const noexcept
Getter for member variable UnitBlock::definitions.
std::shared_ptr< StatementBlock > get_finalize_block() const noexcept
Getter for member variable EigenLinearSolverBlock::finalize_block.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const ArgumentVector & get_parameters() const noexcept override
Getter for member variable FunctionBlock::parameters.
Represents a float variable.
Represents a BREAKPOINT block in NMODL.
void visit_ontology_statement(const ast::OntologyStatement &node) override
visit node of type ast::OntologyStatement
void visit_constant_block(const ast::ConstantBlock &node) override
visit node of type ast::ConstantBlock
void visit_double(const ast::Double &node) override
visit node of type ast::Double
Represents specific element of an array variable.
const NameVector & get_solvefor() const noexcept
Getter for member variable LinearBlock::solvefor.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Integer > get_value() const noexcept
Getter for member variable Define::value.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable BbcorePointerVar::name.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Double > get_value() const noexcept
Getter for member variable UpdateDt::value.
const NameVector & get_variables() const noexcept
Getter for member variable IndependentBlock::variables.
const ReadIonVarVector & get_readlist() const noexcept
Getter for member variable Useion::readlist.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Unit > get_unit() const noexcept
Getter for member variable ParamAssign::unit.
std::string eval() const
Return value of the ast node.
std::shared_ptr< Number > get_max() const noexcept
Getter for member variable Limits::max.
void visit_pointer(const ast::Pointer &node) override
visit node of type ast::Pointer
void visit_unary_operator(const ast::UnaryOperator &node) override
visit node of type ast::UnaryOperator
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Expression > get_from() const noexcept
Getter for member variable FromStatement::from.
std::shared_ptr< Integer > get_n_odes() const noexcept
Getter for member variable CvodeBlock::n_odes.
void visit_float(const ast::Float &node) override
visit node of type ast::Float
Represents a DESTRUCTOR block in the NMODL.
std::shared_ptr< Name > get_block_name() const noexcept
Getter for member variable SolveBlock::block_name.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_read_ion_var(const ast::ReadIonVar &node) override
visit node of type ast::ReadIonVar
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_update_dt(const ast::UpdateDt &node) override
visit node of type ast::UpdateDt
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable KineticBlock::name.
Represents a CONSTRUCTOR block in the NMODL.
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable DerivativeBlock::statement_block.
void visit_non_lin_equation(const ast::NonLinEquation &node) override
visit node of type ast::NonLinEquation
Extracts information required for LONGITUDINAL_DIFFUSION for each KINETIC block.
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable ElseStatement::statement_block.
void visit_procedure_block(const ast::ProcedureBlock &node) override
visit node of type ast::ProcedureBlock
Represent MUTEXUNLOCK statement in NMODL.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_constant_var(const ast::ConstantVar &node) override
visit node of type ast::ConstantVar
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable ForNetcon::statement_block.
void visit_watch(const ast::Watch &node) override
visit node of type ast::Watch
Represents USEION statement in NMODL.
void visit_binary_operator(const ast::BinaryOperator &node) override
visit node of type ast::BinaryOperator
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > get_steadystate() const noexcept
Getter for member variable SolveBlock::steadystate.
void visit_extern_var(const ast::ExternVar &node) override
visit node of type ast::ExternVar
void visit_integer(const ast::Integer &node) override
visit node of type ast::Integer
std::string to_string(const T &obj)
void visit_neuron_block(const ast::NeuronBlock &node) override
visit node of type ast::NeuronBlock
void visit_before_block(const ast::BeforeBlock &node) override
visit node of type ast::BeforeBlock
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable DestructorBlock::statement_block.
const ExpressionVector & get_arguments() const noexcept
Getter for member variable FunctionCall::arguments.
void visit_unit(const ast::Unit &node) override
visit node of type ast::Unit
std::shared_ptr< Expression > get_lhs() const noexcept
Getter for member variable LinEquation::lhs.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Unit > get_unit2() const noexcept
Getter for member variable FactorDef::unit2.
const AssignedDefinitionVector & get_definitions() const noexcept
Getter for member variable StateBlock::definitions.
void visit_electrode_current(const ast::ElectrodeCurrent &node) override
visit node of type ast::ElectrodeCurrent
std::shared_ptr< BinaryExpression > get_expression() const noexcept
Getter for member variable DiffEqExpression::expression.
const ExternVarVector & get_variables() const noexcept
Getter for member variable External::variables.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< BABlock > get_bablock() const noexcept
Getter for member variable AfterBlock::bablock.
Represents GLOBAL statement in NMODL.
const UnaryOperator & get_op() const noexcept
Getter for member variable UnaryExpression::op.
const ReactionOperator & get_op() const noexcept
Getter for member variable ReactionStatement::op.
std::shared_ptr< Expression > get_expression() const noexcept
Getter for member variable ParenExpression::expression.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable FunctionBlock::name.
std::shared_ptr< Expression > get_expression() const noexcept
Getter for member variable Watch::expression.
const BinaryOperator & get_op() const noexcept
Getter for member variable BinaryExpression::op.
Represent CONSTANT block in the mod file.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_global_var(const ast::GlobalVar &node) override
visit node of type ast::GlobalVar
Represents a prime variable (for ODE)
void visit_nonspecific(const ast::Nonspecific &node) override
visit node of type ast::Nonspecific
std::shared_ptr< Integer > get_n_state_vars() const noexcept
Getter for member variable EigenLinearSolverBlock::n_state_vars.
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable ElseIfStatement::statement_block.
const NameVector & get_solvefor() const noexcept
Getter for member variable KineticBlock::solvefor.
void visit_param_assign(const ast::ParamAssign &node) override
visit node of type ast::ParamAssign
Represents DERIVATIVE block in the NMODL.
void visit_unit_def(const ast::UnitDef &node) override
visit node of type ast::UnitDef
void visit_expression_statement(const ast::ExpressionStatement &node) override
visit node of type ast::ExpressionStatement
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::string eval() const
Return enum value in string form.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > get_method() const noexcept
Getter for member variable SolveBlock::method.
std::shared_ptr< Expression > get_rate() const noexcept
Getter for member variable LonDiffuse::rate.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable FunctionTableBlock::name.
Represents a boolean variable.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< SolveBlock > get_solve_block() const noexcept
Getter for member variable SolutionExpression::solve_block.
std::string eval() const
Return enum value in string form.
std::shared_ptr< ConstantVar > get_constant() const noexcept
Getter for member variable ConstantStatement::constant.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Unit > get_unit() const noexcept
Getter for member variable ProcedureBlock::unit.
void visit_compartment(const ast::Compartment &node) override
visit node of type ast::Compartment
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable WhileStatement::statement_block.
Represent linear solver solution block based on Eigen.
const WatchVector & get_statements() const noexcept
Getter for member variable WatchStatement::statements.
void visit_include(const ast::Include &node) override
visit node of type ast::Include
Represents a LAG statement in the mod file.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represent COMPARTMENT statement in NMODL.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Statement to indicate a change in timestep in a given block.
int eval() const
Return value of the ast node.
std::shared_ptr< StatementBlock > get_functor_block() const noexcept
Getter for member variable EigenNewtonSolverBlock::functor_block.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable FactorDef::name.
void visit_useion(const ast::Useion &node) override
visit node of type ast::Useion
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable FromStatement::name.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable Useion::name.
void visit_bbcore_pointer(const ast::BbcorePointer &node) override
visit node of type ast::BbcorePointer
void visit_prime_name(const ast::PrimeName &node) override
visit node of type ast::PrimeName
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable ConstructorBlock::statement_block.
std::shared_ptr< Unit > get_unit() const noexcept
Getter for member variable FunctionBlock::unit.
void visit_nrn_state_block(const ast::NrnStateBlock &node) override
visit node of type ast::NrnStateBlock
Represent LONGITUDINAL_DIFFUSION statement in NMODL.
void visit_suffix(const ast::Suffix &node) override
visit node of type ast::Suffix
std::shared_ptr< Unit > get_unit() const noexcept
Getter for member variable Argument::unit.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents a STATE block in the NMODL.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Expression > get_node_to_solve() const noexcept
Getter for member variable SolutionExpression::node_to_solve.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< String > get_ontology_id() const noexcept
Getter for member variable OntologyStatement::ontology_id.
void visit_expression(const ast::Expression &node) override
visit node of type ast::Expression
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable IfStatement::statement_block.
std::shared_ptr< Number > get_max() const noexcept
Getter for member variable NumberRange::max.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Expression > get_rhs() const noexcept
Getter for member variable NonLinEquation::rhs.
Represents the coreneuron nrn_state callback function.
std::shared_ptr< String > get_name() const noexcept
Getter for member variable Unit::name.
Represents block encapsulating list of statements.
const RangeVarVector & get_variables() const noexcept
Getter for member variable Range::variables.
const RandomVarVector & get_variables() const noexcept
Getter for member variable RandomVarList::variables.
void visit_number_range(const ast::NumberRange &node) override
visit node of type ast::NumberRange
void visit_pointer_var(const ast::PointerVar &node) override
visit node of type ast::PointerVar
void visit_assigned_definition(const ast::AssignedDefinition &node) override
visit node of type ast::AssignedDefinition
Represents CURIE information in NMODL.
This construct is deprecated and no longer supported in the NMODL.
void visit_define(const ast::Define &node) override
visit node of type ast::Define
const ParamAssignVector & get_statements() const noexcept
Getter for member variable ParamBlock::statements.
std::shared_ptr< Unit > get_unit1() const noexcept
Getter for member variable FactorDef::unit1.
Represents an argument to functions and procedures.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_while_statement(const ast::WhileStatement &node) override
visit node of type ast::WhileStatement
const ArgumentVector & get_parameters() const noexcept override
Getter for member variable ForNetcon::parameters.
const NameVector & get_table_vars() const noexcept
Getter for member variable TableStatement::table_vars.
const NodeVector & get_blocks() const noexcept
Getter for member variable Program::blocks.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable Define::name.
Represents LINEAR block in the NMODL.
void visit_ba_block_type(const ast::BABlockType &node) override
visit node of type ast::BABlockType
std::shared_ptr< StatementBlock > get_variable_block() const noexcept
Getter for member variable EigenNewtonSolverBlock::variable_block.
Represent a callback to NEURON's derivimplicit solver.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable ConstantVar::name.
void visit_ba_block(const ast::BABlock &node) override
visit node of type ast::BABlock
void visit_kinetic_block(const ast::KineticBlock &node) override
visit node of type ast::KineticBlock
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represent statement in CONSTANT block of NMODL.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable ReadIonVar::name.
Operator used in ast::BinaryExpression.
std::shared_ptr< StatementBlock > get_compartment_statements() const noexcept
Getter for member variable LongitudinalDiffusionBlock::compartment_statements.
std::shared_ptr< BABlockType > get_type() const noexcept
Getter for member variable BABlock::type.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Expression > get_condition() const noexcept
Getter for member variable ElseIfStatement::condition.
Type to represent different block types for before/after block.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents NONLINEAR block in the NMODL.
void visit_conductance_hint(const ast::ConductanceHint &node) override
visit node of type ast::ConductanceHint
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable NonLinearBlock::name.
void visit_local_var(const ast::LocalVar &node) override
visit node of type ast::LocalVar
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represent solution of a block in the AST.
void visit_if_statement(const ast::IfStatement &node) override
visit node of type ast::IfStatement
std::shared_ptr< Limits > get_limit() const noexcept
Getter for member variable ParamAssign::limit.
void visit_valence(const ast::Valence &node) override
visit node of type ast::Valence
std::string eval() const
Return enum value in string form.
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable FunctionBlock::statement_block.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_var_name(const ast::VarName &node) override
visit node of type ast::VarName
void visit_watch_statement(const ast::WatchStatement &node) override
visit node of type ast::WatchStatement
One equation in a system of equations tha collectively form a LINEAR block.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable PointerVar::name.
void visit_lag_statement(const ast::LagStatement &node) override
visit node of type ast::LagStatement
void visit_range(const ast::Range &node) override
visit node of type ast::Range
std::shared_ptr< Double > get_value() const noexcept
Getter for member variable DoubleUnit::value.
std::shared_ptr< Identifier > get_name() const noexcept
Getter for member variable VarName::name.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents a INDEPENDENT block in the NMODL.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_eigen_linear_solver_block(const ast::EigenLinearSolverBlock &node) override
visit node of type ast::EigenLinearSolverBlock
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable Suffix::name.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< ElseStatement > get_elses() const noexcept
Getter for member variable IfStatement::elses.
Represents BBCOREPOINTER statement in NMODL.
const NameVector & get_species() const noexcept
Getter for member variable LonDiffuse::species.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents NONSPECIFIC_CURRENT variables statement in NMODL.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Expression > get_lhs() const noexcept
Getter for member variable BinaryExpression::lhs.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Unit > get_unit2() const noexcept
Getter for member variable UnitDef::unit2.
std::shared_ptr< Expression > get_lhs() const noexcept
Getter for member variable NonLinEquation::lhs.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable ExternVar::name.
void visit_conserve(const ast::Conserve &node) override
visit node of type ast::Conserve
std::shared_ptr< Unit > get_unit() const noexcept
Getter for member variable FunctionTableBlock::unit.
std::shared_ptr< Name > get_type() const noexcept
Getter for member variable Suffix::type.
void visit_function_call(const ast::FunctionCall &node) override
visit node of type ast::FunctionCall
void visit_table_statement(const ast::TableStatement &node) override
visit node of type ast::TableStatement
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable FromStatement::statement_block.
Represents top level AST node for whole NMODL input.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents a AFTER block in NMODL.
Base class for all numbers.
std::shared_ptr< Expression > get_to() const noexcept
Getter for member variable FromStatement::to.
Represents THREADSAFE statement in NMODL.
std::shared_ptr< Name > get_name() const noexcept
Getter for member variable CvodeBlock::name.
Base class for all expressions in the NMODL.
std::shared_ptr< StatementBlock > get_update_states_block() const noexcept
Getter for member variable EigenNewtonSolverBlock::update_states_block.
Represents POINTER statement in NMODL.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents ELECTRODE_CURRENT variables statement in NMODL.
Represent NEURON block in the mod file.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_function_table_block(const ast::FunctionTableBlock &node) override
visit node of type ast::FunctionTableBlock
std::shared_ptr< String > get_filename() const noexcept
Getter for member variable Include::filename.
std::shared_ptr< Expression > get_rhs() const noexcept
Getter for member variable LinEquation::rhs.
std::shared_ptr< Unit > get_unit() const noexcept
Getter for member variable DoubleUnit::unit.
void visit_non_linear_block(const ast::NonLinearBlock &node) override
visit node of type ast::NonLinearBlock
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_solve_block(const ast::SolveBlock &node) override
visit node of type ast::SolveBlock
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable NeuronBlock::statement_block.
Represents binary expression in the NMODL.
Represents a PARAMETER block in the NMODL.
void visit_mutex_unlock(const ast::MutexUnlock &node) override
visit node of type ast::MutexUnlock
void visit_limits(const ast::Limits &node) override
visit node of type ast::Limits
std::shared_ptr< Unit > get_unit() const noexcept
Getter for member variable AssignedDefinition::unit.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > get_byname() const noexcept
Getter for member variable LagStatement::byname.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_assigned_block(const ast::AssignedBlock &node) override
visit node of type ast::AssignedBlock
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_number(const ast::Number &node) override
visit node of type ast::Number
std::shared_ptr< Identifier > get_name() const noexcept
Getter for member variable AssignedDefinition::name.
void visit_param_block(const ast::ParamBlock &node) override
visit node of type ast::ParamBlock
void visit_else_statement(const ast::ElseStatement &node) override
visit node of type ast::ElseStatement
std::shared_ptr< Number > get_value() const noexcept
Getter for member variable ConstantVar::value.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Integer > get_value() const noexcept
Getter for member variable ReactVarName::value.
std::shared_ptr< StatementBlock > get_finalize_block() const noexcept
Getter for member variable EigenNewtonSolverBlock::finalize_block.
void visit_initial_block(const ast::InitialBlock &node) override
visit node of type ast::InitialBlock
void visit_eigen_newton_solver_block(const ast::EigenNewtonSolverBlock &node) override
visit node of type ast::EigenNewtonSolverBlock
void visit_react_var_name(const ast::ReactVarName &node) override
visit node of type ast::ReactVarName
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void visit_block(const ast::Block &node) override
visit node of type ast::Block
void visit_lin_equation(const ast::LinEquation &node) override
visit node of type ast::LinEquation
std::shared_ptr< Expression > get_expression() const noexcept
Getter for member variable ProtectStatement::expression.
void visit_binary_expression(const ast::BinaryExpression &node) override
visit node of type ast::BinaryExpression
void visit_nonspecific_cur_var(const ast::NonspecificCurVar &node) override
visit node of type ast::NonspecificCurVar
Auto generated AST classes declaration.
Wrap any other expression type.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > get_type() const noexcept
Getter for member variable Valence::type.
THIS FILE IS GENERATED AT BUILD TIME AND SHALL NOT BE EDITED.
std::shared_ptr< String > get_title() const noexcept
Getter for member variable Model::title.
std::shared_ptr< StatementBlock > get_statement_block() const noexcept override
Getter for member variable NonLinearBlock::statement_block.
void visit_constant_statement(const ast::ConstantStatement &node) override
visit node of type ast::ConstantStatement
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< Expression > get_volume() const noexcept
Getter for member variable Compartment::volume.
std::shared_ptr< Number > get_value() const noexcept
Getter for member variable ParamAssign::value.
std::shared_ptr< Expression > get_condition() const noexcept
Getter for member variable WhileStatement::condition.