  | 
  
    User Guide
    
   | 
 
 
 
 
Go to the documentation of this file.
   46     std::unique_ptr<printer::NMODLPrinter> 
printer;
 
  197     template <
typename T>
 
  199                        const std::string& separator,
 
  
 
Abstract base class for all constant visitors implementation.
 
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
 
Represents an INCLUDE statement in NMODL.
 
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
 
Base class for all 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
 
void visit_breakpoint_block(const ast::BreakpointBlock &node) override
visit node of type ast::BreakpointBlock
 
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
 
void visit_unary_expression(const ast::UnaryExpression &node) override
visit node of type ast::UnaryExpression
 
void visit_global(const ast::Global &node) override
visit node of type ast::Global
 
Base class for all identifiers.
 
void visit_for_netcon(const ast::ForNetcon &node) override
visit node of type ast::ForNetcon
 
void visit_bbcore_pointer_var(const ast::BbcorePointerVar &node) override
visit node of type ast::BbcorePointerVar
 
NmodlPrintVisitor(std::ostream &stream, const std::set< ast::AstNodeType > &types)
 
Represents differential equation in DERIVATIVE block.
 
Represents a statement in ASSIGNED or STATE block.
 
void visit_else_if_statement(const ast::ElseIfStatement &node) override
visit node of type ast::ElseIfStatement
 
Represents a double variable.
 
void visit_diff_eq_expression(const ast::DiffEqExpression &node) override
visit node of type ast::DiffEqExpression
 
Represents RANGE variables statement in NMODL.
 
void visit_thread_safe(const ast::ThreadSafe &node) override
visit node of type ast::ThreadSafe
 
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_from_statement(const ast::FromStatement &node) override
visit node of type ast::FromStatement
 
void visit_unit_block(const ast::UnitBlock &node) override
visit node of type ast::UnitBlock
 
void visit_factor_def(const ast::FactorDef &node) override
visit node of type ast::FactorDef
 
Represent CONSERVE statement in NMODL.
 
void visit_unit_state(const ast::UnitState &node) override
visit node of type ast::UnitState
 
void visit_independent_block(const ast::IndependentBlock &node) override
visit node of type ast::IndependentBlock
 
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
 
void visit_lon_diffuse(const ast::LonDiffuse &node) override
visit node of type ast::LonDiffuse
 
Represents CONDUCTANCE statement in NMODL.
 
void visit_mutex_lock(const ast::MutexLock &node) override
visit node of type ast::MutexLock
 
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
 
void visit_argument(const ast::Argument &node) override
visit node of type ast::Argument
 
void visit_state_block(const ast::StateBlock &node) override
visit node of type ast::StateBlock
 
Represents a DEFINE statement in NMODL.
 
void visit_verbatim(const ast::Verbatim &node) override
visit node of type ast::Verbatim
 
Represents a block used for variable timestep integration (CVODE) of DERIVATIVE blocks.
 
Represent MUTEXLOCK statement in NMODL.
 
void visit_function_block(const ast::FunctionBlock &node) override
visit node of type ast::FunctionBlock
 
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
 
void visit_range_var(const ast::RangeVar &node) override
visit node of type ast::RangeVar
 
Represents an integer variable.
 
Represents SUFFIX statement in NMODL.
 
Single variable of type RANDOM.
 
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
 
Represents a ASSIGNED block in the NMODL.
 
void visit_line_comment(const ast::LineComment &node) override
visit node of type ast::LineComment
 
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
 
void visit_derivative_block(const ast::DerivativeBlock &node) override
visit node of type ast::DerivativeBlock
 
AstNodeType
Enum type for every AST node type.
 
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
 
void visit_write_ion_var(const ast::WriteIonVar &node) override
visit node of type ast::WriteIonVar
 
void visit_protect_statement(const ast::ProtectStatement &node) override
visit node of type ast::ProtectStatement
 
Base class for all block scoped nodes.
 
void visit_constructor_block(const ast::ConstructorBlock &node) override
visit node of type ast::ConstructorBlock
 
void visit_net_receive_block(const ast::NetReceiveBlock &node) override
visit node of type ast::NetReceiveBlock
 
Represents a INITIAL block in the NMODL.
 
void visit_program(const ast::Program &node) override
visit node of type ast::Program
 
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
 
NmodlPrintVisitor(std::ostream &stream)
 
void visit_linear_block(const ast::LinearBlock &node) override
visit node of type ast::LinearBlock
 
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
 
Represent WATCH statement in NMODL.
 
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.
 
NmodlPrintVisitor(std::string filename)
 
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
 
void visit_float(const ast::Float &node) override
visit node of type ast::Float
 
Represents a DESTRUCTOR block in the NMODL.
 
void visit_read_ion_var(const ast::ReadIonVar &node) override
visit node of type ast::ReadIonVar
 
void visit_update_dt(const ast::UpdateDt &node) override
visit node of type ast::UpdateDt
 
Represents a CONSTRUCTOR block in the NMODL.
 
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.
 
void visit_procedure_block(const ast::ProcedureBlock &node) override
visit node of type ast::ProcedureBlock
 
Represent MUTEXUNLOCK statement in NMODL.
 
Visitor for printing AST back to NMODL
 
void visit_constant_var(const ast::ConstantVar &node) override
visit node of type ast::ConstantVar
 
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
 
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
 
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
 
void visit_unit(const ast::Unit &node) override
visit node of type ast::Unit
 
void visit_electrode_current(const ast::ElectrodeCurrent &node) override
visit node of type ast::ElectrodeCurrent
 
void visit_element(const std::vector< T > &elements, const std::string &separator, bool program, bool statement)
Helper function to visit vector elements.
 
Represents GLOBAL statement in NMODL.
 
Represent CONSTANT block in the mod file.
 
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
 
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
 
std::set< ast::AstNodeType > exclude_types
node types to exclude while printing
 
void visit_expression_statement(const ast::ExpressionStatement &node) override
visit node of type ast::ExpressionStatement
 
Represents a boolean variable.
 
void visit_compartment(const ast::Compartment &node) override
visit node of type ast::Compartment
 
Represent linear solver solution block based on Eigen.
 
void visit_include(const ast::Include &node) override
visit node of type ast::Include
 
Represents a LAG statement in the mod file.
 
Represent COMPARTMENT statement in NMODL.
 
Statement to indicate a change in timestep in a given block.
 
void visit_useion(const ast::Useion &node) override
visit node of type ast::Useion
 
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
 
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
 
Represents a STATE block in the NMODL.
 
void visit_expression(const ast::Expression &node) override
visit node of type ast::Expression
 
Helper class for printing AST back to NMDOL test.
 
std::unique_ptr< printer::NMODLPrinter > printer
 
Represents the coreneuron nrn_state callback function.
 
Represents block encapsulating list of statements.
 
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
 
Represents an argument to functions and procedures.
 
void visit_while_statement(const ast::WhileStatement &node) override
visit node of type ast::WhileStatement
 
bool is_exclude_type(ast::AstNodeType type) const
check if node is to be excluded while printing
 
Represents LINEAR block in the NMODL.
 
void visit_ba_block_type(const ast::BABlockType &node) override
visit node of type ast::BABlockType
 
Represent a callback to NEURON's derivimplicit solver.
 
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
 
Represent statement in CONSTANT block of NMODL.
 
Operator used in ast::BinaryExpression.
 
Type to represent different block types for before/after block.
 
Represents NONLINEAR block in the NMODL.
 
void visit_conductance_hint(const ast::ConductanceHint &node) override
visit node of type ast::ConductanceHint
 
void visit_local_var(const ast::LocalVar &node) override
visit node of type ast::LocalVar
 
Represent solution of a block in the AST.
 
void visit_if_statement(const ast::IfStatement &node) override
visit node of type ast::IfStatement
 
void visit_valence(const ast::Valence &node) override
visit node of type ast::Valence
 
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.
 
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
 
Represents a INDEPENDENT block in the NMODL.
 
void visit_eigen_linear_solver_block(const ast::EigenLinearSolverBlock &node) override
visit node of type ast::EigenLinearSolverBlock
 
Represents BBCOREPOINTER statement in NMODL.
 
Represents NONSPECIFIC_CURRENT variables statement in NMODL.
 
void visit_conserve(const ast::Conserve &node) override
visit node of type ast::Conserve
 
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
 
Represents top level AST node for whole NMODL input.
 
Represents a AFTER block in NMODL.
 
Base class for all numbers.
 
Represents THREADSAFE statement in NMODL.
 
Base class for all expressions in the NMODL.
 
Represents POINTER statement in NMODL.
 
Represents ELECTRODE_CURRENT variables statement in NMODL.
 
Represent NEURON block in the mod file.
 
void visit_function_table_block(const ast::FunctionTableBlock &node) override
visit node of type ast::FunctionTableBlock
 
void visit_non_linear_block(const ast::NonLinearBlock &node) override
visit node of type ast::NonLinearBlock
 
void visit_solve_block(const ast::SolveBlock &node) override
visit node of type ast::SolveBlock
 
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
 
void visit_assigned_block(const ast::AssignedBlock &node) override
visit node of type ast::AssignedBlock
 
void visit_number(const ast::Number &node) override
visit node of type ast::Number
 
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
 
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
 
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
 
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
 
Wrap any other expression type.
 
void visit_constant_statement(const ast::ConstantStatement &node) override
visit node of type ast::ConstantStatement