46 std::unique_ptr<printer::NMODLPrinter>
printer;
197 template <
typename T>
199 const std::string& separator,
Represents a AFTER block in NMODL.
Represents an argument to functions and procedures.
Represents a ASSIGNED block in the NMODL.
Represents a statement in ASSIGNED or STATE block.
Represents a block to be executed before or after another block.
Type to represent different block types for before/after block.
Represents BBCOREPOINTER statement in NMODL.
Represent a single variable of type BBCOREPOINTER.
Represents a BEFORE block in NMODL.
Represents binary expression in the NMODL.
Operator used in ast::BinaryExpression.
Base class for all block scoped nodes.
Represents a boolean variable.
Represents a BREAKPOINT block in NMODL.
Represent COMPARTMENT statement in NMODL.
Represents CONDUCTANCE statement in NMODL.
Represent CONSERVE statement in NMODL.
Represent CONSTANT block in the mod file.
Represent statement in CONSTANT block of NMODL.
Represents a variable in the ast::ConstantBlock.
Represents a CONSTRUCTOR block in the NMODL.
Represents a block used for variable timestep integration (CVODE) of DERIVATIVE blocks.
Represents a DEFINE statement in NMODL.
Represents DERIVATIVE block in the NMODL.
Represent a callback to NEURON's derivimplicit solver.
Represents a DESTRUCTOR block in the NMODL.
Represents differential equation in DERIVATIVE block.
Represents a double variable.
Represent linear solver solution block based on Eigen.
Represent newton solver solution block based on Eigen.
Represents ELECTRODE_CURRENT variables statement in NMODL.
Base class for all expressions in the NMODL.
This construct is deprecated and no longer supported in the NMODL.
Represents a float variable.
Represents GLOBAL statement in NMODL.
Base class for all identifiers.
Represents an INCLUDE statement in NMODL.
Represents a INDEPENDENT block in the NMODL.
Represents specific element of an array variable.
Represents a INITIAL block in the NMODL.
Represents an integer variable.
Represents a LAG statement in the mod file.
One equation in a system of equations tha collectively form a LINEAR block.
Represents LINEAR block in the NMODL.
Represent LONGITUDINAL_DIFFUSION statement in NMODL.
Extracts information required for LONGITUDINAL_DIFFUSION for each KINETIC block.
Represent MUTEXLOCK statement in NMODL.
Represent MUTEXUNLOCK statement in NMODL.
Represent NEURON block in the mod file.
Base class for all AST node.
One equation in a system of equations that collectively make a NONLINEAR block.
Represents NONLINEAR block in the NMODL.
Represents NONSPECIFIC_CURRENT variables statement in NMODL.
Represents the coreneuron nrn_state callback function.
Base class for all numbers.
Represents CURIE information in NMODL.
Represents a PARAMETER block in the NMODL.
Represents POINTER statement in NMODL.
Represents a prime variable (for ODE)
Represents top level AST node for whole NMODL input.
Single variable of type RANDOM.
Represents RANDOM statement in NMODL.
Represents RANGE variables statement in NMODL.
Represent solution of a block in the AST.
Represents a STATE block in the NMODL.
Represents block encapsulating list of statements.
Represents SUFFIX statement in NMODL.
Represents TABLE statement in NMODL.
Represents THREADSAFE statement in NMODL.
Statement to indicate a change in timestep in a given block.
Represents USEION statement in NMODL.
Represents a C code block.
Represent WATCH statement in NMODL.
Wrap any other expression type.
Abstract base class for all constant visitors implementation.
Visitor for printing AST back to NMODL
void visit_bbcore_pointer_var(const ast::BbcorePointerVar &node) override
visit node of type ast::BbcorePointerVar
void visit_define(const ast::Define &node) override
visit node of type ast::Define
void visit_expression(const ast::Expression &node) override
visit node of type ast::Expression
void visit_electrode_current(const ast::ElectrodeCurrent &node) override
visit node of type ast::ElectrodeCurrent
void visit_double(const ast::Double &node) override
visit node of type ast::Double
void visit_string(const ast::String &node) override
visit node of type ast::String
void visit_nonspecific(const ast::Nonspecific &node) override
visit node of type ast::Nonspecific
void visit_initial_block(const ast::InitialBlock &node) override
visit node of type ast::InitialBlock
void visit_protect_statement(const ast::ProtectStatement &node) override
visit node of type ast::ProtectStatement
void visit_random_var_list(const ast::RandomVarList &node) override
visit node of type ast::RandomVarList
void visit_read_ion_var(const ast::ReadIonVar &node) override
visit node of type ast::ReadIonVar
void visit_function_block(const ast::FunctionBlock &node) override
visit node of type ast::FunctionBlock
void visit_conserve(const ast::Conserve &node) override
visit node of type ast::Conserve
void visit_constant_statement(const ast::ConstantStatement &node) override
visit node of type ast::ConstantStatement
void visit_ba_block_type(const ast::BABlockType &node) override
visit node of type ast::BABlockType
void visit_while_statement(const ast::WhileStatement &node) override
visit node of type ast::WhileStatement
void visit_thread_safe(const ast::ThreadSafe &node) override
visit node of type ast::ThreadSafe
void visit_binary_operator(const ast::BinaryOperator &node) override
visit node of type ast::BinaryOperator
void visit_derivative_block(const ast::DerivativeBlock &node) override
visit node of type ast::DerivativeBlock
void visit_verbatim(const ast::Verbatim &node) override
visit node of type ast::Verbatim
void visit_eigen_newton_solver_block(const ast::EigenNewtonSolverBlock &node) override
visit node of type ast::EigenNewtonSolverBlock
void visit_random_var(const ast::RandomVar &node) override
visit node of type ast::RandomVar
void visit_mutex_unlock(const ast::MutexUnlock &node) override
visit node of type ast::MutexUnlock
void visit_unit_block(const ast::UnitBlock &node) override
visit node of type ast::UnitBlock
void visit_nonspecific_cur_var(const ast::NonspecificCurVar &node) override
visit node of type ast::NonspecificCurVar
void visit_conductance_hint(const ast::ConductanceHint &node) override
visit node of type ast::ConductanceHint
void visit_breakpoint_block(const ast::BreakpointBlock &node) override
visit node of type ast::BreakpointBlock
NmodlPrintVisitor(std::string filename)
void visit_integer(const ast::Integer &node) override
visit node of type ast::Integer
void visit_ontology_statement(const ast::OntologyStatement &node) override
visit node of type ast::OntologyStatement
void visit_react_var_name(const ast::ReactVarName &node) override
visit node of type ast::ReactVarName
void visit_number(const ast::Number &node) override
visit node of type ast::Number
void visit_suffix(const ast::Suffix &node) override
visit node of type ast::Suffix
void visit_compartment(const ast::Compartment &node) override
visit node of type ast::Compartment
void visit_kinetic_block(const ast::KineticBlock &node) override
visit node of type ast::KineticBlock
void visit_indexed_name(const ast::IndexedName &node) override
visit node of type ast::IndexedName
void visit_identifier(const ast::Identifier &node) override
visit node of type ast::Identifier
void visit_paren_expression(const ast::ParenExpression &node) override
visit node of type ast::ParenExpression
void visit_before_block(const ast::BeforeBlock &node) override
visit node of type ast::BeforeBlock
void visit_watch_statement(const ast::WatchStatement &node) override
visit node of type ast::WatchStatement
void visit_bbcore_pointer(const ast::BbcorePointer &node) override
visit node of type ast::BbcorePointer
void visit_unit_state(const ast::UnitState &node) override
visit node of type ast::UnitState
void visit_after_block(const ast::AfterBlock &node) override
visit node of type ast::AfterBlock
void visit_write_ion_var(const ast::WriteIonVar &node) override
visit node of type ast::WriteIonVar
void visit_update_dt(const ast::UpdateDt &node) override
visit node of type ast::UpdateDt
void visit_lin_equation(const ast::LinEquation &node) override
visit node of type ast::LinEquation
void visit_argument(const ast::Argument &node) override
visit node of type ast::Argument
NmodlPrintVisitor(std::ostream &stream, const std::set< ast::AstNodeType > &types)
void visit_statement_block(const ast::StatementBlock &node) override
visit node of type ast::StatementBlock
void visit_factor_def(const ast::FactorDef &node) override
visit node of type ast::FactorDef
void visit_include(const ast::Include &node) override
visit node of type ast::Include
void visit_float(const ast::Float &node) override
visit node of type ast::Float
void visit_function_call(const ast::FunctionCall &node) override
visit node of type ast::FunctionCall
void visit_block(const ast::Block &node) override
visit node of type ast::Block
void visit_node(const ast::Node &node) override
visit node of type ast::Node
void visit_else_statement(const ast::ElseStatement &node) override
visit node of type ast::ElseStatement
void visit_program(const ast::Program &node) override
visit node of type ast::Program
void visit_external(const ast::External &node) override
visit node of type ast::External
void visit_unary_operator(const ast::UnaryOperator &node) override
visit node of type ast::UnaryOperator
void visit_var_name(const ast::VarName &node) override
visit node of type ast::VarName
void visit_for_netcon(const ast::ForNetcon &node) override
visit node of type ast::ForNetcon
void visit_constant_var(const ast::ConstantVar &node) override
visit node of type ast::ConstantVar
void visit_nrn_state_block(const ast::NrnStateBlock &node) override
visit node of type ast::NrnStateBlock
void visit_binary_expression(const ast::BinaryExpression &node) override
visit node of type ast::BinaryExpression
void visit_global_var(const ast::GlobalVar &node) override
visit node of type ast::GlobalVar
void visit_solve_block(const ast::SolveBlock &node) override
visit node of type ast::SolveBlock
void visit_eigen_linear_solver_block(const ast::EigenLinearSolverBlock &node) override
visit node of type ast::EigenLinearSolverBlock
void visit_lon_diffuse(const ast::LonDiffuse &node) override
visit node of type ast::LonDiffuse
void visit_pointer_var(const ast::PointerVar &node) override
visit node of type ast::PointerVar
void visit_solution_expression(const ast::SolutionExpression &node) override
visit node of type ast::SolutionExpression
void visit_global(const ast::Global &node) override
visit node of type ast::Global
void visit_unit_def(const ast::UnitDef &node) override
visit node of type ast::UnitDef
void visit_local_var(const ast::LocalVar &node) override
visit node of type ast::LocalVar
void visit_unit(const ast::Unit &node) override
visit node of type ast::Unit
void visit_if_statement(const ast::IfStatement &node) override
visit node of type ast::IfStatement
void visit_derivimplicit_callback(const ast::DerivimplicitCallback &node) override
visit node of type ast::DerivimplicitCallback
void visit_assigned_definition(const ast::AssignedDefinition &node) override
visit node of type ast::AssignedDefinition
void visit_name(const ast::Name &node) override
visit node of type ast::Name
void visit_block_comment(const ast::BlockComment &node) override
visit node of type ast::BlockComment
void visit_from_statement(const ast::FromStatement &node) override
visit node of type ast::FromStatement
void visit_range(const ast::Range &node) override
visit node of type ast::Range
NmodlPrintVisitor(std::ostream &stream)
void visit_ba_block(const ast::BABlock &node) override
visit node of type ast::BABlock
void visit_reaction_statement(const ast::ReactionStatement &node) override
visit node of type ast::ReactionStatement
void visit_neuron_block(const ast::NeuronBlock &node) override
visit node of type ast::NeuronBlock
void visit_local_list_statement(const ast::LocalListStatement &node) override
visit node of type ast::LocalListStatement
void visit_extern_var(const ast::ExternVar &node) override
visit node of type ast::ExternVar
void visit_range_var(const ast::RangeVar &node) override
visit node of type ast::RangeVar
void visit_prime_name(const ast::PrimeName &node) override
visit node of type ast::PrimeName
void visit_double_unit(const ast::DoubleUnit &node) override
visit node of type ast::DoubleUnit
void visit_useion(const ast::Useion &node) override
visit node of type ast::Useion
void visit_procedure_block(const ast::ProcedureBlock &node) override
visit node of type ast::ProcedureBlock
void visit_unary_expression(const ast::UnaryExpression &node) override
visit node of type ast::UnaryExpression
void visit_line_comment(const ast::LineComment &node) override
visit node of type ast::LineComment
void visit_non_linear_block(const ast::NonLinearBlock &node) override
visit node of type ast::NonLinearBlock
void visit_constant_block(const ast::ConstantBlock &node) override
visit node of type ast::ConstantBlock
void visit_linear_block(const ast::LinearBlock &node) override
visit node of type ast::LinearBlock
void visit_non_lin_equation(const ast::NonLinEquation &node) override
visit node of type ast::NonLinEquation
void visit_destructor_block(const ast::DestructorBlock &node) override
visit node of type ast::DestructorBlock
void visit_wrapped_expression(const ast::WrappedExpression &node) override
visit node of type ast::WrappedExpression
void visit_valence(const ast::Valence &node) override
visit node of type ast::Valence
void visit_watch(const ast::Watch &node) override
visit node of type ast::Watch
void visit_longitudinal_diffusion_block(const ast::LongitudinalDiffusionBlock &node) override
visit node of type ast::LongitudinalDiffusionBlock
void visit_param_block(const ast::ParamBlock &node) override
visit node of type ast::ParamBlock
void visit_cvode_block(const ast::CvodeBlock &node) override
visit node of type ast::CvodeBlock
void visit_number_range(const ast::NumberRange &node) override
visit node of type ast::NumberRange
void visit_function_table_block(const ast::FunctionTableBlock &node) override
visit node of type ast::FunctionTableBlock
void visit_net_receive_block(const ast::NetReceiveBlock &node) override
visit node of type ast::NetReceiveBlock
std::set< ast::AstNodeType > exclude_types
node types to exclude while printing
void visit_electrode_cur_var(const ast::ElectrodeCurVar &node) override
visit node of type ast::ElectrodeCurVar
void visit_diff_eq_expression(const ast::DiffEqExpression &node) override
visit node of type ast::DiffEqExpression
void visit_limits(const ast::Limits &node) override
visit node of type ast::Limits
void visit_else_if_statement(const ast::ElseIfStatement &node) override
visit node of type ast::ElseIfStatement
void visit_reaction_operator(const ast::ReactionOperator &node) override
visit node of type ast::ReactionOperator
void visit_statement(const ast::Statement &node) override
visit node of type ast::Statement
void visit_mutex_lock(const ast::MutexLock &node) override
visit node of type ast::MutexLock
void visit_assigned_block(const ast::AssignedBlock &node) override
visit node of type ast::AssignedBlock
bool is_exclude_type(ast::AstNodeType type) const
check if node is to be excluded while printing
void visit_model(const ast::Model &node) override
visit node of type ast::Model
void visit_independent_block(const ast::IndependentBlock &node) override
visit node of type ast::IndependentBlock
void visit_state_block(const ast::StateBlock &node) override
visit node of type ast::StateBlock
void visit_lag_statement(const ast::LagStatement &node) override
visit node of type ast::LagStatement
void visit_element(const std::vector< T > &elements, const std::string &separator, bool program, bool statement)
Helper function to visit vector elements.
void visit_expression_statement(const ast::ExpressionStatement &node) override
visit node of type ast::ExpressionStatement
void visit_constructor_block(const ast::ConstructorBlock &node) override
visit node of type ast::ConstructorBlock
void visit_boolean(const ast::Boolean &node) override
visit node of type ast::Boolean
void visit_table_statement(const ast::TableStatement &node) override
visit node of type ast::TableStatement
void visit_pointer(const ast::Pointer &node) override
visit node of type ast::Pointer
void visit_discrete_block(const ast::DiscreteBlock &node) override
visit node of type ast::DiscreteBlock
std::unique_ptr< printer::NMODLPrinter > printer
void visit_param_assign(const ast::ParamAssign &node) override
visit node of type ast::ParamAssign
AstNodeType
Enum type for every AST node type.
encapsulates code generation backend implementations
Helper class for printing AST back to NMDOL test.
static Node * node(Object *)