![Logo](logo.png) |
User Guide
|
Go to the documentation of this file.
24 printer->add_node(
"Node");
29 printer->add_node(
"Statement");
34 printer->add_node(
"Expression");
39 printer->add_node(
"Block");
44 printer->add_node(
"Identifier");
49 printer->add_node(
"Number");
55 printer->add_block_property(
"nmodl",
to_nmodl(node));
60 printer->add_node(ss.str());
67 printer->add_block_property(
"nmodl",
to_nmodl(node));
73 printer->add_node(ss.str());
81 printer->add_block_property(
"nmodl",
to_nmodl(node));
86 printer->add_node(ss.str());
93 printer->add_block_property(
"nmodl",
to_nmodl(node));
98 printer->add_node(ss.str());
105 printer->add_block_property(
"nmodl",
to_nmodl(node));
108 std::stringstream ss;
110 printer->add_node(ss.str());
111 printer->pop_block();
117 printer->add_block_property(
"nmodl",
to_nmodl(node));
120 printer->pop_block();
126 printer->add_block_property(
"nmodl",
to_nmodl(node));
129 printer->pop_block();
135 printer->add_block_property(
"nmodl",
to_nmodl(node));
138 printer->pop_block();
144 printer->add_block_property(
"nmodl",
to_nmodl(node));
147 printer->pop_block();
153 printer->add_block_property(
"nmodl",
to_nmodl(node));
156 printer->pop_block();
162 printer->add_block_property(
"nmodl",
to_nmodl(node));
165 printer->pop_block();
171 printer->add_block_property(
"nmodl",
to_nmodl(node));
174 printer->pop_block();
180 printer->add_block_property(
"nmodl",
to_nmodl(node));
183 printer->pop_block();
189 printer->add_block_property(
"nmodl",
to_nmodl(node));
192 printer->pop_block();
198 printer->add_block_property(
"nmodl",
to_nmodl(node));
201 printer->pop_block();
207 printer->add_block_property(
"nmodl",
to_nmodl(node));
210 printer->pop_block();
216 printer->add_block_property(
"nmodl",
to_nmodl(node));
219 printer->pop_block();
225 printer->add_block_property(
"nmodl",
to_nmodl(node));
228 printer->pop_block();
234 printer->add_block_property(
"nmodl",
to_nmodl(node));
237 printer->pop_block();
243 printer->add_block_property(
"nmodl",
to_nmodl(node));
246 printer->pop_block();
252 printer->add_block_property(
"nmodl",
to_nmodl(node));
255 printer->pop_block();
261 printer->add_block_property(
"nmodl",
to_nmodl(node));
264 printer->pop_block();
270 printer->add_block_property(
"nmodl",
to_nmodl(node));
273 printer->pop_block();
279 printer->add_block_property(
"nmodl",
to_nmodl(node));
282 printer->pop_block();
288 printer->add_block_property(
"nmodl",
to_nmodl(node));
291 printer->pop_block();
297 printer->add_block_property(
"nmodl",
to_nmodl(node));
300 printer->pop_block();
306 printer->add_block_property(
"nmodl",
to_nmodl(node));
309 printer->pop_block();
315 printer->add_block_property(
"nmodl",
to_nmodl(node));
318 printer->pop_block();
324 printer->add_block_property(
"nmodl",
to_nmodl(node));
327 printer->pop_block();
333 printer->add_block_property(
"nmodl",
to_nmodl(node));
336 printer->pop_block();
342 printer->add_block_property(
"nmodl",
to_nmodl(node));
345 printer->pop_block();
351 printer->add_block_property(
"nmodl",
to_nmodl(node));
354 printer->pop_block();
360 printer->add_block_property(
"nmodl",
to_nmodl(node));
363 printer->pop_block();
369 printer->add_block_property(
"nmodl",
to_nmodl(node));
372 printer->pop_block();
378 printer->add_block_property(
"nmodl",
to_nmodl(node));
381 printer->pop_block();
387 printer->add_block_property(
"nmodl",
to_nmodl(node));
390 printer->pop_block();
396 printer->add_block_property(
"nmodl",
to_nmodl(node));
399 printer->pop_block();
405 printer->add_block_property(
"nmodl",
to_nmodl(node));
408 printer->pop_block();
414 printer->add_block_property(
"nmodl",
to_nmodl(node));
417 printer->pop_block();
423 printer->add_block_property(
"nmodl",
to_nmodl(node));
426 printer->pop_block();
432 printer->add_block_property(
"nmodl",
to_nmodl(node));
435 printer->pop_block();
441 printer->add_block_property(
"nmodl",
to_nmodl(node));
444 printer->pop_block();
450 printer->add_block_property(
"nmodl",
to_nmodl(node));
453 printer->pop_block();
459 printer->add_block_property(
"nmodl",
to_nmodl(node));
462 printer->pop_block();
468 printer->add_block_property(
"nmodl",
to_nmodl(node));
471 printer->pop_block();
477 printer->add_block_property(
"nmodl",
to_nmodl(node));
480 printer->pop_block();
486 printer->add_block_property(
"nmodl",
to_nmodl(node));
489 printer->pop_block();
495 printer->add_block_property(
"nmodl",
to_nmodl(node));
498 printer->pop_block();
504 printer->add_block_property(
"nmodl",
to_nmodl(node));
507 printer->pop_block();
513 printer->add_block_property(
"nmodl",
to_nmodl(node));
516 printer->pop_block();
522 printer->add_block_property(
"nmodl",
to_nmodl(node));
525 printer->pop_block();
531 printer->add_block_property(
"nmodl",
to_nmodl(node));
534 printer->pop_block();
540 printer->add_block_property(
"nmodl",
to_nmodl(node));
543 printer->pop_block();
549 printer->add_block_property(
"nmodl",
to_nmodl(node));
552 std::stringstream ss;
554 printer->add_node(ss.str());
555 printer->pop_block();
561 printer->add_block_property(
"nmodl",
to_nmodl(node));
564 std::stringstream ss;
566 printer->add_node(ss.str());
567 printer->pop_block();
573 printer->add_block_property(
"nmodl",
to_nmodl(node));
576 std::stringstream ss;
578 printer->add_node(ss.str());
579 printer->pop_block();
585 printer->add_block_property(
"nmodl",
to_nmodl(node));
588 printer->pop_block();
594 printer->add_block_property(
"nmodl",
to_nmodl(node));
597 printer->pop_block();
603 printer->add_block_property(
"nmodl",
to_nmodl(node));
606 printer->pop_block();
612 printer->add_block_property(
"nmodl",
to_nmodl(node));
615 printer->pop_block();
621 printer->add_block_property(
"nmodl",
to_nmodl(node));
624 printer->pop_block();
630 printer->add_block_property(
"nmodl",
to_nmodl(node));
633 printer->pop_block();
639 printer->add_block_property(
"nmodl",
to_nmodl(node));
642 printer->pop_block();
648 printer->add_block_property(
"nmodl",
to_nmodl(node));
651 printer->pop_block();
657 printer->add_block_property(
"nmodl",
to_nmodl(node));
660 std::stringstream ss;
662 printer->add_node(ss.str());
663 printer->pop_block();
669 printer->add_block_property(
"nmodl",
to_nmodl(node));
672 printer->pop_block();
678 printer->add_block_property(
"nmodl",
to_nmodl(node));
681 printer->pop_block();
687 printer->add_block_property(
"nmodl",
to_nmodl(node));
690 printer->pop_block();
696 printer->add_block_property(
"nmodl",
to_nmodl(node));
699 std::stringstream ss;
701 printer->add_node(ss.str());
702 printer->pop_block();
708 printer->add_block_property(
"nmodl",
to_nmodl(node));
711 printer->pop_block();
717 printer->add_block_property(
"nmodl",
to_nmodl(node));
720 printer->pop_block();
726 printer->add_block_property(
"nmodl",
to_nmodl(node));
729 printer->pop_block();
735 printer->add_block_property(
"nmodl",
to_nmodl(node));
738 printer->pop_block();
744 printer->add_block_property(
"nmodl",
to_nmodl(node));
747 printer->pop_block();
753 printer->add_block_property(
"nmodl",
to_nmodl(node));
756 printer->pop_block();
762 printer->add_block_property(
"nmodl",
to_nmodl(node));
765 printer->pop_block();
771 printer->add_block_property(
"nmodl",
to_nmodl(node));
774 printer->pop_block();
780 printer->add_block_property(
"nmodl",
to_nmodl(node));
783 printer->pop_block();
789 printer->add_block_property(
"nmodl",
to_nmodl(node));
792 printer->pop_block();
798 printer->add_block_property(
"nmodl",
to_nmodl(node));
801 printer->pop_block();
807 printer->add_block_property(
"nmodl",
to_nmodl(node));
810 printer->pop_block();
816 printer->add_block_property(
"nmodl",
to_nmodl(node));
819 printer->pop_block();
825 printer->add_block_property(
"nmodl",
to_nmodl(node));
828 printer->pop_block();
834 printer->add_block_property(
"nmodl",
to_nmodl(node));
837 printer->pop_block();
842 printer->add_node(
"MutexLock");
847 printer->add_node(
"MutexUnlock");
853 printer->add_block_property(
"nmodl",
to_nmodl(node));
856 printer->pop_block();
862 printer->add_block_property(
"nmodl",
to_nmodl(node));
865 printer->pop_block();
871 printer->add_block_property(
"nmodl",
to_nmodl(node));
874 printer->pop_block();
880 printer->add_block_property(
"nmodl",
to_nmodl(node));
883 printer->pop_block();
889 printer->add_block_property(
"nmodl",
to_nmodl(node));
892 printer->pop_block();
898 printer->add_block_property(
"nmodl",
to_nmodl(node));
901 printer->pop_block();
907 printer->add_block_property(
"nmodl",
to_nmodl(node));
910 printer->pop_block();
916 printer->add_block_property(
"nmodl",
to_nmodl(node));
919 printer->pop_block();
925 printer->add_block_property(
"nmodl",
to_nmodl(node));
928 printer->pop_block();
934 printer->add_block_property(
"nmodl",
to_nmodl(node));
937 printer->pop_block();
943 printer->add_block_property(
"nmodl",
to_nmodl(node));
946 printer->pop_block();
952 printer->add_block_property(
"nmodl",
to_nmodl(node));
955 printer->pop_block();
961 printer->add_block_property(
"nmodl",
to_nmodl(node));
964 printer->pop_block();
970 printer->add_block_property(
"nmodl",
to_nmodl(node));
973 printer->pop_block();
979 printer->add_block_property(
"nmodl",
to_nmodl(node));
982 printer->pop_block();
988 printer->add_block_property(
"nmodl",
to_nmodl(node));
991 printer->pop_block();
997 printer->add_block_property(
"nmodl",
to_nmodl(node));
1000 printer->pop_block();
1005 printer->add_node(
"ThreadSafe");
1011 printer->add_block_property(
"nmodl",
to_nmodl(node));
1014 printer->pop_block();
1020 printer->add_block_property(
"nmodl",
to_nmodl(node));
1023 printer->pop_block();
1029 printer->add_block_property(
"nmodl",
to_nmodl(node));
1032 printer->pop_block();
1038 printer->add_block_property(
"nmodl",
to_nmodl(node));
1041 printer->pop_block();
1047 printer->add_block_property(
"nmodl",
to_nmodl(node));
1050 printer->pop_block();
1059 printer->add_block_property(
"nmodl",
to_nmodl(node));
1062 printer->pop_block();
1068 printer->add_block_property(
"nmodl",
to_nmodl(node));
1071 printer->pop_block();
1077 printer->add_block_property(
"nmodl",
to_nmodl(node));
1080 printer->pop_block();
1086 printer->add_block_property(
"nmodl",
to_nmodl(node));
1089 printer->pop_block();
1095 printer->add_block_property(
"nmodl",
to_nmodl(node));
1098 printer->pop_block();
1104 printer->add_block_property(
"nmodl",
to_nmodl(node));
1107 printer->pop_block();
1113 printer->add_block_property(
"nmodl",
to_nmodl(node));
1116 printer->pop_block();
1122 printer->add_block_property(
"nmodl",
to_nmodl(node));
1125 printer->pop_block();
1131 printer->add_block_property(
"nmodl",
to_nmodl(node));
1134 printer->pop_block();
void visit_paren_expression(const ast::ParenExpression &node) override
visit node of type ast::ParenExpression
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_statement_block(const ast::StatementBlock &node) override
visit node of type ast::StatementBlock
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represents a BEFORE block in NMODL.
Represents a variable in the ast::ConstantBlock.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_global(const ast::Global &node) override
visit node of type ast::Global
Represents an INCLUDE statement in NMODL.
void visit_write_ion_var(const ast::WriteIonVar &node) override
visit node of type ast::WriteIonVar
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_watch_statement(const ast::WatchStatement &node) override
visit node of type ast::WatchStatement
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_unary_expression(const ast::UnaryExpression &node) override
visit node of type ast::UnaryExpression
std::string eval() const
Return value of the ast node.
Base class for all AST node.
Represents a block to be executed before or after another block.
Represents a C code block.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_nrn_state_block(const ast::NrnStateBlock &node) override
visit node of type ast::NrnStateBlock
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string to_nmodl(const ast::Ast &node, const std::set< ast::AstNodeType > &exclude_types)
Given AST node, return the NMODL string representation.
void visit_range(const ast::Range &node) override
visit node of type ast::Range
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_lag_statement(const ast::LagStatement &node) override
visit node of type ast::LagStatement
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Base class for all identifiers.
void visit_protect_statement(const ast::ProtectStatement &node) override
visit node of type ast::ProtectStatement
std::string eval() const
Return enum value in string form.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_solve_block(const ast::SolveBlock &node) override
visit node of type ast::SolveBlock
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Represents differential equation in DERIVATIVE block.
Represents a statement in ASSIGNED or STATE block.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_unit_block(const ast::UnitBlock &node) override
visit node of type ast::UnitBlock
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_lon_diffuse(const ast::LonDiffuse &node) override
visit node of type ast::LonDiffuse
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Represents a double variable.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Represents RANGE variables statement in NMODL.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
One equation in a system of equations that collectively make a NONLINEAR block.
Represents RANDOM statement in NMODL.
Represent a single variable of type BBCOREPOINTER.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_unit_state(const ast::UnitState &node) override
visit node of type ast::UnitState
void visit_conserve(const ast::Conserve &node) override
visit node of type ast::Conserve
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_mutex_lock(const ast::MutexLock &node) override
visit node of type ast::MutexLock
void visit_param_assign(const ast::ParamAssign &node) override
visit node of type ast::ParamAssign
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represent CONSERVE statement in NMODL.
void visit_define(const ast::Define &node) override
visit node of type ast::Define
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_thread_safe(const ast::ThreadSafe &node) override
visit node of type ast::ThreadSafe
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_update_dt(const ast::UpdateDt &node) override
visit node of type ast::UpdateDt
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Represents CONDUCTANCE statement in NMODL.
void visit_unit(const ast::Unit &node) override
visit node of type ast::Unit
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_range_var(const ast::RangeVar &node) override
visit node of type ast::RangeVar
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_while_statement(const ast::WhileStatement &node) override
visit node of type ast::WhileStatement
void visit_valence(const ast::Valence &node) override
visit node of type ast::Valence
void visit_children(visitor::Visitor &v) override
visit children i.e.
encapsulates code generation backend implementations
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_mutex_unlock(const ast::MutexUnlock &node) override
visit node of type ast::MutexUnlock
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_electrode_cur_var(const ast::ElectrodeCurVar &node) override
visit node of type ast::ElectrodeCurVar
Represents a DEFINE statement in NMODL.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_ba_block_type(const ast::BABlockType &node) override
visit node of type ast::BABlockType
void visit_prime_name(const ast::PrimeName &node) override
visit node of type ast::PrimeName
Represents a block used for variable timestep integration (CVODE) of DERIVATIVE blocks.
void visit_identifier(const ast::Identifier &node) override
visit node of type ast::Identifier
std::shared_ptr< Name > get_macro() const noexcept
Getter for member variable Integer::macro.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_include(const ast::Include &node) override
visit node of type ast::Include
Represent MUTEXLOCK statement in NMODL.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_kinetic_block(const ast::KineticBlock &node) override
visit node of type ast::KineticBlock
void visit_boolean(const ast::Boolean &node) override
visit node of type ast::Boolean
void visit_non_lin_equation(const ast::NonLinEquation &node) override
visit node of type ast::NonLinEquation
void visit_else_statement(const ast::ElseStatement &node) override
visit node of type ast::ElseStatement
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_eigen_newton_solver_block(const ast::EigenNewtonSolverBlock &node) override
visit node of type ast::EigenNewtonSolverBlock
Represents TABLE statement in NMODL.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_bbcore_pointer(const ast::BbcorePointer &node) override
visit node of type ast::BbcorePointer
Represents an integer variable.
Represents SUFFIX statement in NMODL.
std::string eval() const
Return enum value in string form.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_derivative_block(const ast::DerivativeBlock &node) override
visit node of type ast::DerivativeBlock
Single variable of type RANDOM.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_after_block(const ast::AfterBlock &node) override
visit node of type ast::AfterBlock
void visit_pointer_var(const ast::PointerVar &node) override
visit node of type ast::PointerVar
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_longitudinal_diffusion_block(const ast::LongitudinalDiffusionBlock &node) override
visit node of type ast::LongitudinalDiffusionBlock
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_table_statement(const ast::TableStatement &node) override
visit node of type ast::TableStatement
std::string eval() const
Return value of the ast node.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represents a ASSIGNED block in the NMODL.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_number(const ast::Number &node) override
visit node of type ast::Number
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_independent_block(const ast::IndependentBlock &node) override
visit node of type ast::IndependentBlock
Represent newton solver solution block based on Eigen.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_derivimplicit_callback(const ast::DerivimplicitCallback &node) override
visit node of type ast::DerivimplicitCallback
bool eval() const
Return value of the ast node.
void visit_line_comment(const ast::LineComment &node) override
visit node of type ast::LineComment
void visit_random_var(const ast::RandomVar &node) override
visit node of type ast::RandomVar
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_if_statement(const ast::IfStatement &node) override
visit node of type ast::IfStatement
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_random_var_list(const ast::RandomVarList &node) override
visit node of type ast::RandomVarList
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_initial_block(const ast::InitialBlock &node) override
visit node of type ast::InitialBlock
void visit_else_if_statement(const ast::ElseIfStatement &node) override
visit node of type ast::ElseIfStatement
void visit_binary_operator(const ast::BinaryOperator &node) override
visit node of type ast::BinaryOperator
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_from_statement(const ast::FromStatement &node) override
visit node of type ast::FromStatement
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Base class for all block scoped nodes.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represents a INITIAL block in the NMODL.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_ontology_statement(const ast::OntologyStatement &node) override
visit node of type ast::OntologyStatement
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Utility functions for visitors implementation.
Represent WATCH statement in NMODL.
Represents a float variable.
Represents a BREAKPOINT block in NMODL.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_block(const ast::Block &node) override
visit node of type ast::Block
Represents specific element of an array variable.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_expression_statement(const ast::ExpressionStatement &node) override
visit node of type ast::ExpressionStatement
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string eval() const
Return value of the ast node.
Represents a DESTRUCTOR block in the NMODL.
void visit_procedure_block(const ast::ProcedureBlock &node) override
visit node of type ast::ProcedureBlock
void visit_nonspecific(const ast::Nonspecific &node) override
visit node of type ast::Nonspecific
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represents a CONSTRUCTOR block in the NMODL.
void visit_local_list_statement(const ast::LocalListStatement &node) override
visit node of type ast::LocalListStatement
void visit_children(visitor::Visitor &v) override
visit children i.e.
Extracts information required for LONGITUDINAL_DIFFUSION for each KINETIC block.
Represent MUTEXUNLOCK statement in NMODL.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_model(const ast::Model &node) override
visit node of type ast::Model
Represents USEION statement in NMODL.
void visit_name(const ast::Name &node) override
visit node of type ast::Name
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_function_block(const ast::FunctionBlock &node) override
visit node of type ast::FunctionBlock
void visit_before_block(const ast::BeforeBlock &node) override
visit node of type ast::BeforeBlock
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_for_netcon(const ast::ForNetcon &node) override
visit node of type ast::ForNetcon
void visit_net_receive_block(const ast::NetReceiveBlock &node) override
visit node of type ast::NetReceiveBlock
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_argument(const ast::Argument &node) override
visit node of type ast::Argument
void visit_local_var(const ast::LocalVar &node) override
visit node of type ast::LocalVar
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represents GLOBAL statement in NMODL.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represent CONSTANT block in the mod file.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represents a prime variable (for ODE)
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_verbatim(const ast::Verbatim &node) override
visit node of type ast::Verbatim
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represents DERIVATIVE block in the NMODL.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_useion(const ast::Useion &node) override
visit node of type ast::Useion
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_param_block(const ast::ParamBlock &node) override
visit node of type ast::ParamBlock
std::string eval() const
Return enum value in string form.
Represents a boolean variable.
void visit_double(const ast::Double &node) override
visit node of type ast::Double
std::string eval() const
Return enum value in string form.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_statement(const ast::Statement &node) override
visit node of type ast::Statement
void visit_non_linear_block(const ast::NonLinearBlock &node) override
visit node of type ast::NonLinearBlock
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_function_table_block(const ast::FunctionTableBlock &node) override
visit node of type ast::FunctionTableBlock
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represent linear solver solution block based on Eigen.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_number_range(const ast::NumberRange &node) override
visit node of type ast::NumberRange
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Represents a LAG statement in the mod file.
Represent COMPARTMENT statement in NMODL.
void visit_program(const ast::Program &node) override
visit node of type ast::Program
void visit_children(visitor::Visitor &v) override
visit children i.e.
Statement to indicate a change in timestep in a given block.
int eval() const
Return value of the ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_lin_equation(const ast::LinEquation &node) override
visit node of type ast::LinEquation
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_wrapped_expression(const ast::WrappedExpression &node) override
visit node of type ast::WrappedExpression
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_ba_block(const ast::BABlock &node) override
visit node of type ast::BABlock
void visit_constant_var(const ast::ConstantVar &node) override
visit node of type ast::ConstantVar
Represent LONGITUDINAL_DIFFUSION statement in NMODL.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Represents a STATE block in the NMODL.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_cvode_block(const ast::CvodeBlock &node) override
visit node of type ast::CvodeBlock
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_expression(const ast::Expression &node) override
visit node of type ast::Expression
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represents the coreneuron nrn_state callback function.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Represents block encapsulating list of statements.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_bbcore_pointer_var(const ast::BbcorePointerVar &node) override
visit node of type ast::BbcorePointerVar
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Represents CURIE information in NMODL.
This construct is deprecated and no longer supported in the NMODL.
void visit_electrode_current(const ast::ElectrodeCurrent &node) override
visit node of type ast::ElectrodeCurrent
Represents an argument to functions and procedures.
void visit_read_ion_var(const ast::ReadIonVar &node) override
visit node of type ast::ReadIonVar
void visit_destructor_block(const ast::DestructorBlock &node) override
visit node of type ast::DestructorBlock
void visit_breakpoint_block(const ast::BreakpointBlock &node) override
visit node of type ast::BreakpointBlock
void visit_watch(const ast::Watch &node) override
visit node of type ast::Watch
void visit_block_comment(const ast::BlockComment &node) override
visit node of type ast::BlockComment
void visit_integer(const ast::Integer &node) override
visit node of type ast::Integer
void visit_react_var_name(const ast::ReactVarName &node) override
visit node of type ast::ReactVarName
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_assigned_definition(const ast::AssignedDefinition &node) override
visit node of type ast::AssignedDefinition
Represents LINEAR block in the NMODL.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_compartment(const ast::Compartment &node) override
visit node of type ast::Compartment
Represent a callback to NEURON's derivimplicit solver.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_constant_statement(const ast::ConstantStatement &node) override
visit node of type ast::ConstantStatement
void visit_assigned_block(const ast::AssignedBlock &node) override
visit node of type ast::AssignedBlock
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_reaction_operator(const ast::ReactionOperator &node) override
visit node of type ast::ReactionOperator
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represent statement in CONSTANT block of NMODL.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Operator used in ast::BinaryExpression.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Type to represent different block types for before/after block.
Represents NONLINEAR block in the NMODL.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_eigen_linear_solver_block(const ast::EigenLinearSolverBlock &node) override
visit node of type ast::EigenLinearSolverBlock
void visit_indexed_name(const ast::IndexedName &node) override
visit node of type ast::IndexedName
void visit_reaction_statement(const ast::ReactionStatement &node) override
visit node of type ast::ReactionStatement
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represent solution of a block in the AST.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_global_var(const ast::GlobalVar &node) override
visit node of type ast::GlobalVar
std::string eval() const
Return enum value in string form.
void visit_string(const ast::String &node) override
visit node of type ast::String
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
One equation in a system of equations tha collectively form a LINEAR block.
void visit_function_call(const ast::FunctionCall &node) override
visit node of type ast::FunctionCall
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_extern_var(const ast::ExternVar &node) override
visit node of type ast::ExternVar
Represents a INDEPENDENT block in the NMODL.
void visit_unary_operator(const ast::UnaryOperator &node) override
visit node of type ast::UnaryOperator
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_constant_block(const ast::ConstantBlock &node) override
visit node of type ast::ConstantBlock
Represents BBCOREPOINTER statement in NMODL.
void visit_external(const ast::External &node) override
visit node of type ast::External
void visit_neuron_block(const ast::NeuronBlock &node) override
visit node of type ast::NeuronBlock
Represents NONSPECIFIC_CURRENT variables statement in NMODL.
void visit_double_unit(const ast::DoubleUnit &node) override
visit node of type ast::DoubleUnit
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_var_name(const ast::VarName &node) override
visit node of type ast::VarName
void visit_solution_expression(const ast::SolutionExpression &node) override
visit node of type ast::SolutionExpression
void visit_discrete_block(const ast::DiscreteBlock &node) override
visit node of type ast::DiscreteBlock
Represents top level AST node for whole NMODL input.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Represents a AFTER block in NMODL.
Base class for all numbers.
Represents THREADSAFE statement in NMODL.
Base class for all expressions in the NMODL.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Represents POINTER statement in NMODL.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_suffix(const ast::Suffix &node) override
visit node of type ast::Suffix
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_node(const ast::Node &node) override
visit node of type ast::Node
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Represents ELECTRODE_CURRENT variables statement in NMODL.
Represent NEURON block in the mod file.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_state_block(const ast::StateBlock &node) override
visit node of type ast::StateBlock
void visit_nonspecific_cur_var(const ast::NonspecificCurVar &node) override
visit node of type ast::NonspecificCurVar
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represents binary expression in the NMODL.
Represents a PARAMETER block in the NMODL.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_limits(const ast::Limits &node) override
visit node of type ast::Limits
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_float(const ast::Float &node) override
visit node of type ast::Float
THIS FILE IS GENERATED AT BUILD TIME AND SHALL NOT BE EDITED.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_linear_block(const ast::LinearBlock &node) override
visit node of type ast::LinearBlock
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_factor_def(const ast::FactorDef &node) override
visit node of type ast::FactorDef
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_pointer(const ast::Pointer &node) override
visit node of type ast::Pointer
void visit_constructor_block(const ast::ConstructorBlock &node) override
visit node of type ast::ConstructorBlock
virtual Ast * get_parent() const
Parent getter.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_binary_expression(const ast::BinaryExpression &node) override
visit node of type ast::BinaryExpression
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_conductance_hint(const ast::ConductanceHint &node) override
visit node of type ast::ConductanceHint
void visit_unit_def(const ast::UnitDef &node) override
visit node of type ast::UnitDef
void visit_children(visitor::Visitor &v) override
visit children i.e.
Auto generated AST classes declaration.
Wrap any other expression type.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_diff_eq_expression(const ast::DiffEqExpression &node) override
visit node of type ast::DiffEqExpression
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void visit_children(visitor::Visitor &v) override
visit children i.e.