![]() |
User Guide
|
Base class for all expressions in the NMODL. More...
Base class for all expressions in the NMODL.
Base class for all expression types. This is one of the top level node in the AST representing higher level expression constructs. Expressions can be a variable itself or complex binary expressions.
Definition at line 43 of file expression.hpp.
#include <expression.hpp>
Public Member Functions | |
bool | is_expression () const noexcept override |
Check if the ast node is an instance of ast::Expression. More... | |
Expression * | clone () const override |
Return a copy of the current node. More... | |
Ctor & dtor | |
virtual | ~Expression ()=default |
Getters | |
AstNodeType | get_node_type () const noexcept override |
Return type (ast::AstNodeType) of ast node. More... | |
std::string | get_node_type_name () const noexcept override |
Return type (ast::AstNodeType) of ast node as std::string. More... | |
std::shared_ptr< Ast > | get_shared_ptr () override |
Get std::shared_ptr from this pointer of the current ast node. More... | |
std::shared_ptr< const Ast > | get_shared_ptr () const override |
Get std::shared_ptr from this pointer of the current ast node. More... | |
Visitor | |
void | visit_children (visitor::Visitor &v) override |
visit children i.e. More... | |
void | visit_children (visitor::ConstVisitor &v) const override |
visit children i.e. More... | |
void | accept (visitor::Visitor &v) override |
accept (or visit) the current AST node using provided visitor More... | |
void | accept (visitor::ConstVisitor &v) const override |
accept (or visit) the current AST node using provided visitor More... | |
![]() | |
bool | is_node () const noexcept override |
Check if the ast node is an instance of ast::Node. More... | |
Node * | clone () const override |
Return a copy of the current node. More... | |
virtual | ~Node ()=default |
AstNodeType | get_node_type () const noexcept override |
Return type (ast::AstNodeType) of ast node. More... | |
std::string | get_node_type_name () const noexcept override |
Return type (ast::AstNodeType) of ast node as std::string. More... | |
std::shared_ptr< Ast > | get_shared_ptr () override |
Get std::shared_ptr from this pointer of the current ast node. More... | |
std::shared_ptr< const Ast > | get_shared_ptr () const override |
Get std::shared_ptr from this pointer of the current ast node. More... | |
void | visit_children (visitor::Visitor &v) override |
visit children i.e. More... | |
void | visit_children (visitor::ConstVisitor &v) const override |
visit children i.e. More... | |
void | accept (visitor::Visitor &v) override |
accept (or visit) the current AST node using provided visitor More... | |
void | accept (visitor::ConstVisitor &v) const override |
accept (or visit) the current AST node using provided visitor More... | |
![]() | |
virtual bool | is_ast () const noexcept |
Check if the ast node is an instance of ast::Ast. More... | |
virtual bool | is_statement () const noexcept |
Check if the ast node is an instance of ast::Statement. More... | |
virtual bool | is_block () const noexcept |
Check if the ast node is an instance of ast::Block. More... | |
virtual bool | is_identifier () const noexcept |
Check if the ast node is an instance of ast::Identifier. More... | |
virtual bool | is_number () const noexcept |
Check if the ast node is an instance of ast::Number. More... | |
virtual bool | is_string () const noexcept |
Check if the ast node is an instance of ast::String. More... | |
virtual bool | is_integer () const noexcept |
Check if the ast node is an instance of ast::Integer. More... | |
virtual bool | is_float () const noexcept |
Check if the ast node is an instance of ast::Float. More... | |
virtual bool | is_double () const noexcept |
Check if the ast node is an instance of ast::Double. More... | |
virtual bool | is_boolean () const noexcept |
Check if the ast node is an instance of ast::Boolean. More... | |
virtual bool | is_name () const noexcept |
Check if the ast node is an instance of ast::Name. More... | |
virtual bool | is_prime_name () const noexcept |
Check if the ast node is an instance of ast::PrimeName. More... | |
virtual bool | is_indexed_name () const noexcept |
Check if the ast node is an instance of ast::IndexedName. More... | |
virtual bool | is_var_name () const noexcept |
Check if the ast node is an instance of ast::VarName. More... | |
virtual bool | is_argument () const noexcept |
Check if the ast node is an instance of ast::Argument. More... | |
virtual bool | is_react_var_name () const noexcept |
Check if the ast node is an instance of ast::ReactVarName. More... | |
virtual bool | is_read_ion_var () const noexcept |
Check if the ast node is an instance of ast::ReadIonVar. More... | |
virtual bool | is_write_ion_var () const noexcept |
Check if the ast node is an instance of ast::WriteIonVar. More... | |
virtual bool | is_nonspecific_cur_var () const noexcept |
Check if the ast node is an instance of ast::NonspecificCurVar. More... | |
virtual bool | is_electrode_cur_var () const noexcept |
Check if the ast node is an instance of ast::ElectrodeCurVar. More... | |
virtual bool | is_range_var () const noexcept |
Check if the ast node is an instance of ast::RangeVar. More... | |
virtual bool | is_global_var () const noexcept |
Check if the ast node is an instance of ast::GlobalVar. More... | |
virtual bool | is_pointer_var () const noexcept |
Check if the ast node is an instance of ast::PointerVar. More... | |
virtual bool | is_random_var () const noexcept |
Check if the ast node is an instance of ast::RandomVar. More... | |
virtual bool | is_bbcore_pointer_var () const noexcept |
Check if the ast node is an instance of ast::BbcorePointerVar. More... | |
virtual bool | is_extern_var () const noexcept |
Check if the ast node is an instance of ast::ExternVar. More... | |
virtual bool | is_param_block () const noexcept |
Check if the ast node is an instance of ast::ParamBlock. More... | |
virtual bool | is_independent_block () const noexcept |
Check if the ast node is an instance of ast::IndependentBlock. More... | |
virtual bool | is_assigned_block () const noexcept |
Check if the ast node is an instance of ast::AssignedBlock. More... | |
virtual bool | is_state_block () const noexcept |
Check if the ast node is an instance of ast::StateBlock. More... | |
virtual bool | is_initial_block () const noexcept |
Check if the ast node is an instance of ast::InitialBlock. More... | |
virtual bool | is_constructor_block () const noexcept |
Check if the ast node is an instance of ast::ConstructorBlock. More... | |
virtual bool | is_destructor_block () const noexcept |
Check if the ast node is an instance of ast::DestructorBlock. More... | |
virtual bool | is_statement_block () const noexcept |
Check if the ast node is an instance of ast::StatementBlock. More... | |
virtual bool | is_derivative_block () const noexcept |
Check if the ast node is an instance of ast::DerivativeBlock. More... | |
virtual bool | is_linear_block () const noexcept |
Check if the ast node is an instance of ast::LinearBlock. More... | |
virtual bool | is_non_linear_block () const noexcept |
Check if the ast node is an instance of ast::NonLinearBlock. More... | |
virtual bool | is_discrete_block () const noexcept |
Check if the ast node is an instance of ast::DiscreteBlock. More... | |
virtual bool | is_function_table_block () const noexcept |
Check if the ast node is an instance of ast::FunctionTableBlock. More... | |
virtual bool | is_function_block () const noexcept |
Check if the ast node is an instance of ast::FunctionBlock. More... | |
virtual bool | is_procedure_block () const noexcept |
Check if the ast node is an instance of ast::ProcedureBlock. More... | |
virtual bool | is_net_receive_block () const noexcept |
Check if the ast node is an instance of ast::NetReceiveBlock. More... | |
virtual bool | is_solve_block () const noexcept |
Check if the ast node is an instance of ast::SolveBlock. More... | |
virtual bool | is_breakpoint_block () const noexcept |
Check if the ast node is an instance of ast::BreakpointBlock. More... | |
virtual bool | is_before_block () const noexcept |
Check if the ast node is an instance of ast::BeforeBlock. More... | |
virtual bool | is_after_block () const noexcept |
Check if the ast node is an instance of ast::AfterBlock. More... | |
virtual bool | is_ba_block () const noexcept |
Check if the ast node is an instance of ast::BABlock. More... | |
virtual bool | is_for_netcon () const noexcept |
Check if the ast node is an instance of ast::ForNetcon. More... | |
virtual bool | is_kinetic_block () const noexcept |
Check if the ast node is an instance of ast::KineticBlock. More... | |
virtual bool | is_unit_block () const noexcept |
Check if the ast node is an instance of ast::UnitBlock. More... | |
virtual bool | is_constant_block () const noexcept |
Check if the ast node is an instance of ast::ConstantBlock. More... | |
virtual bool | is_neuron_block () const noexcept |
Check if the ast node is an instance of ast::NeuronBlock. More... | |
virtual bool | is_unit () const noexcept |
Check if the ast node is an instance of ast::Unit. More... | |
virtual bool | is_double_unit () const noexcept |
Check if the ast node is an instance of ast::DoubleUnit. More... | |
virtual bool | is_local_var () const noexcept |
Check if the ast node is an instance of ast::LocalVar. More... | |
virtual bool | is_limits () const noexcept |
Check if the ast node is an instance of ast::Limits. More... | |
virtual bool | is_number_range () const noexcept |
Check if the ast node is an instance of ast::NumberRange. More... | |
virtual bool | is_constant_var () const noexcept |
Check if the ast node is an instance of ast::ConstantVar. More... | |
virtual bool | is_binary_operator () const noexcept |
Check if the ast node is an instance of ast::BinaryOperator. More... | |
virtual bool | is_unary_operator () const noexcept |
Check if the ast node is an instance of ast::UnaryOperator. More... | |
virtual bool | is_reaction_operator () const noexcept |
Check if the ast node is an instance of ast::ReactionOperator. More... | |
virtual bool | is_paren_expression () const noexcept |
Check if the ast node is an instance of ast::ParenExpression. More... | |
virtual bool | is_binary_expression () const noexcept |
Check if the ast node is an instance of ast::BinaryExpression. More... | |
virtual bool | is_diff_eq_expression () const noexcept |
Check if the ast node is an instance of ast::DiffEqExpression. More... | |
virtual bool | is_unary_expression () const noexcept |
Check if the ast node is an instance of ast::UnaryExpression. More... | |
virtual bool | is_non_lin_equation () const noexcept |
Check if the ast node is an instance of ast::NonLinEquation. More... | |
virtual bool | is_lin_equation () const noexcept |
Check if the ast node is an instance of ast::LinEquation. More... | |
virtual bool | is_function_call () const noexcept |
Check if the ast node is an instance of ast::FunctionCall. More... | |
virtual bool | is_watch () const noexcept |
Check if the ast node is an instance of ast::Watch. More... | |
virtual bool | is_ba_block_type () const noexcept |
Check if the ast node is an instance of ast::BABlockType. More... | |
virtual bool | is_unit_def () const noexcept |
Check if the ast node is an instance of ast::UnitDef. More... | |
virtual bool | is_factor_def () const noexcept |
Check if the ast node is an instance of ast::FactorDef. More... | |
virtual bool | is_valence () const noexcept |
Check if the ast node is an instance of ast::Valence. More... | |
virtual bool | is_unit_state () const noexcept |
Check if the ast node is an instance of ast::UnitState. More... | |
virtual bool | is_local_list_statement () const noexcept |
Check if the ast node is an instance of ast::LocalListStatement. More... | |
virtual bool | is_model () const noexcept |
Check if the ast node is an instance of ast::Model. More... | |
virtual bool | is_define () const noexcept |
Check if the ast node is an instance of ast::Define. More... | |
virtual bool | is_include () const noexcept |
Check if the ast node is an instance of ast::Include. More... | |
virtual bool | is_param_assign () const noexcept |
Check if the ast node is an instance of ast::ParamAssign. More... | |
virtual bool | is_assigned_definition () const noexcept |
Check if the ast node is an instance of ast::AssignedDefinition. More... | |
virtual bool | is_conductance_hint () const noexcept |
Check if the ast node is an instance of ast::ConductanceHint. More... | |
virtual bool | is_expression_statement () const noexcept |
Check if the ast node is an instance of ast::ExpressionStatement. More... | |
virtual bool | is_protect_statement () const noexcept |
Check if the ast node is an instance of ast::ProtectStatement. More... | |
virtual bool | is_from_statement () const noexcept |
Check if the ast node is an instance of ast::FromStatement. More... | |
virtual bool | is_while_statement () const noexcept |
Check if the ast node is an instance of ast::WhileStatement. More... | |
virtual bool | is_if_statement () const noexcept |
Check if the ast node is an instance of ast::IfStatement. More... | |
virtual bool | is_else_if_statement () const noexcept |
Check if the ast node is an instance of ast::ElseIfStatement. More... | |
virtual bool | is_else_statement () const noexcept |
Check if the ast node is an instance of ast::ElseStatement. More... | |
virtual bool | is_watch_statement () const noexcept |
Check if the ast node is an instance of ast::WatchStatement. More... | |
virtual bool | is_mutex_lock () const noexcept |
Check if the ast node is an instance of ast::MutexLock. More... | |
virtual bool | is_mutex_unlock () const noexcept |
Check if the ast node is an instance of ast::MutexUnlock. More... | |
virtual bool | is_conserve () const noexcept |
Check if the ast node is an instance of ast::Conserve. More... | |
virtual bool | is_compartment () const noexcept |
Check if the ast node is an instance of ast::Compartment. More... | |
virtual bool | is_lon_diffuse () const noexcept |
Check if the ast node is an instance of ast::LonDiffuse. More... | |
virtual bool | is_reaction_statement () const noexcept |
Check if the ast node is an instance of ast::ReactionStatement. More... | |
virtual bool | is_lag_statement () const noexcept |
Check if the ast node is an instance of ast::LagStatement. More... | |
virtual bool | is_constant_statement () const noexcept |
Check if the ast node is an instance of ast::ConstantStatement. More... | |
virtual bool | is_table_statement () const noexcept |
Check if the ast node is an instance of ast::TableStatement. More... | |
virtual bool | is_suffix () const noexcept |
Check if the ast node is an instance of ast::Suffix. More... | |
virtual bool | is_useion () const noexcept |
Check if the ast node is an instance of ast::Useion. More... | |
virtual bool | is_nonspecific () const noexcept |
Check if the ast node is an instance of ast::Nonspecific. More... | |
virtual bool | is_electrode_current () const noexcept |
Check if the ast node is an instance of ast::ElectrodeCurrent. More... | |
virtual bool | is_range () const noexcept |
Check if the ast node is an instance of ast::Range. More... | |
virtual bool | is_global () const noexcept |
Check if the ast node is an instance of ast::Global. More... | |
virtual bool | is_random_var_list () const noexcept |
Check if the ast node is an instance of ast::RandomVarList. More... | |
virtual bool | is_pointer () const noexcept |
Check if the ast node is an instance of ast::Pointer. More... | |
virtual bool | is_bbcore_pointer () const noexcept |
Check if the ast node is an instance of ast::BbcorePointer. More... | |
virtual bool | is_external () const noexcept |
Check if the ast node is an instance of ast::External. More... | |
virtual bool | is_thread_safe () const noexcept |
Check if the ast node is an instance of ast::ThreadSafe. More... | |
virtual bool | is_verbatim () const noexcept |
Check if the ast node is an instance of ast::Verbatim. More... | |
virtual bool | is_line_comment () const noexcept |
Check if the ast node is an instance of ast::LineComment. More... | |
virtual bool | is_block_comment () const noexcept |
Check if the ast node is an instance of ast::BlockComment. More... | |
virtual bool | is_ontology_statement () const noexcept |
Check if the ast node is an instance of ast::OntologyStatement. More... | |
virtual bool | is_program () const noexcept |
Check if the ast node is an instance of ast::Program. More... | |
virtual bool | is_nrn_state_block () const noexcept |
Check if the ast node is an instance of ast::NrnStateBlock. More... | |
virtual bool | is_eigen_newton_solver_block () const noexcept |
Check if the ast node is an instance of ast::EigenNewtonSolverBlock. More... | |
virtual bool | is_eigen_linear_solver_block () const noexcept |
Check if the ast node is an instance of ast::EigenLinearSolverBlock. More... | |
virtual bool | is_cvode_block () const noexcept |
Check if the ast node is an instance of ast::CvodeBlock. More... | |
virtual bool | is_longitudinal_diffusion_block () const noexcept |
Check if the ast node is an instance of ast::LongitudinalDiffusionBlock. More... | |
virtual bool | is_wrapped_expression () const noexcept |
Check if the ast node is an instance of ast::WrappedExpression. More... | |
virtual bool | is_derivimplicit_callback () const noexcept |
Check if the ast node is an instance of ast::DerivimplicitCallback. More... | |
virtual bool | is_solution_expression () const noexcept |
Check if the ast node is an instance of ast::SolutionExpression. More... | |
virtual bool | is_update_dt () const noexcept |
Check if the ast node is an instance of ast::UpdateDt. More... | |
virtual Ast * | get_parent () const |
Parent getter. More... | |
virtual void | set_parent (Ast *p) |
Parent setter. More... | |
Ast ()=default | |
virtual | ~Ast ()=default |
virtual std::string | get_nmodl_name () const |
Return NMODL statement of ast node as std::string. More... | |
virtual std::string | get_node_name () const |
Return name of of the node. More... | |
virtual const ModToken * | get_token () const |
Return associated token for the AST node. More... | |
virtual symtab::SymbolTable * | get_symbol_table () const |
Return associated symbol table for the AST node. More... | |
virtual std::shared_ptr< StatementBlock > | get_statement_block () const |
Return associated statement block for the AST node. More... | |
virtual void | set_symbol_table (symtab::SymbolTable *symtab) |
Set symbol table for the AST node. More... | |
virtual void | set_name (const std::string &name) |
Set name for the AST node. More... | |
virtual void | negate () |
Negate the value of AST node. More... | |
|
virtualdefault |
|
overridevirtual |
accept (or visit) the current AST node using provided visitor
Instead of visiting children of AST node, like Ast::visit_children, accept allows to visit the current node itself using provided concrete visitor.
v | Concrete visitor that will be used to recursively visit node |
Implements nmodl::ast::Ast.
Reimplemented in nmodl::ast::FunctionBlock, nmodl::ast::ProcedureBlock, nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::FactorDef, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::StatementBlock, nmodl::ast::SolveBlock, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::VarName, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::StateBlock, nmodl::ast::InitialBlock, nmodl::ast::IndependentBlock, nmodl::ast::PrimeName, nmodl::ast::IndexedName, nmodl::ast::NrnStateBlock, nmodl::ast::UnitBlock, nmodl::ast::Integer, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::FunctionCall, nmodl::ast::ReactVarName, nmodl::ast::UnitDef, nmodl::ast::Name, nmodl::ast::UnaryExpression, nmodl::ast::Limits, nmodl::ast::NumberRange, nmodl::ast::SolutionExpression, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::String, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReadIonVar, nmodl::ast::Unit, nmodl::ast::WriteIonVar, nmodl::ast::Float, nmodl::ast::ParenExpression, nmodl::ast::WrappedExpression, nmodl::ast::ReactionOperator, nmodl::ast::UnaryOperator, nmodl::ast::Number, and nmodl::ast::Identifier.
|
overridevirtual |
accept (or visit) the current AST node using provided visitor
Instead of visiting children of AST node, like Ast::visit_children, accept allows to visit the current node itself using provided concrete visitor.
v | Concrete visitor that will be used to recursively visit node |
Implements nmodl::ast::Ast.
Reimplemented in nmodl::ast::FunctionBlock, nmodl::ast::ProcedureBlock, nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::FactorDef, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::StatementBlock, nmodl::ast::SolveBlock, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::VarName, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::StateBlock, nmodl::ast::InitialBlock, nmodl::ast::IndependentBlock, nmodl::ast::PrimeName, nmodl::ast::IndexedName, nmodl::ast::NrnStateBlock, nmodl::ast::UnitBlock, nmodl::ast::Integer, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::FunctionCall, nmodl::ast::ReactVarName, nmodl::ast::UnitDef, nmodl::ast::Name, nmodl::ast::UnaryExpression, nmodl::ast::Limits, nmodl::ast::NumberRange, nmodl::ast::SolutionExpression, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::String, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReadIonVar, nmodl::ast::Unit, nmodl::ast::WriteIonVar, nmodl::ast::Float, nmodl::ast::ParenExpression, nmodl::ast::WrappedExpression, nmodl::ast::ReactionOperator, nmodl::ast::UnaryOperator, nmodl::ast::Number, and nmodl::ast::Identifier.
|
inlineoverridevirtual |
Return a copy of the current node.
Recursively make a new copy/clone of the current node including all members and return a pointer to the node. This is used for passes like nmodl::visitor::InlineVisitor where nodes are cloned in the ast.
Reimplemented from nmodl::ast::Ast.
Reimplemented in nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::StatementBlock, nmodl::ast::StateBlock, nmodl::ast::Integer, nmodl::ast::String, nmodl::ast::InitialBlock, nmodl::ast::PrimeName, nmodl::ast::IndexedName, nmodl::ast::FactorDef, nmodl::ast::FunctionBlock, nmodl::ast::IndependentBlock, nmodl::ast::ProcedureBlock, nmodl::ast::VarName, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::Name, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::SolveBlock, nmodl::ast::Float, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::UnaryExpression, nmodl::ast::FunctionCall, nmodl::ast::Limits, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::NrnStateBlock, nmodl::ast::NumberRange, nmodl::ast::ReactVarName, nmodl::ast::SolutionExpression, nmodl::ast::UnitBlock, nmodl::ast::UnitDef, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::ParenExpression, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReactionOperator, nmodl::ast::ReadIonVar, nmodl::ast::UnaryOperator, nmodl::ast::Unit, nmodl::ast::WrappedExpression, nmodl::ast::WriteIonVar, nmodl::ast::Number, and nmodl::ast::Identifier.
Definition at line 70 of file expression.hpp.
|
inlineoverridevirtualnoexcept |
Return type (ast::AstNodeType) of ast node.
Every node in the ast has a type defined in ast::AstNodeType and this function is used to retrieve the same.
Implements nmodl::ast::Ast.
Reimplemented in nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::StatementBlock, nmodl::ast::StateBlock, nmodl::ast::Integer, nmodl::ast::String, nmodl::ast::InitialBlock, nmodl::ast::PrimeName, nmodl::ast::IndexedName, nmodl::ast::FactorDef, nmodl::ast::FunctionBlock, nmodl::ast::IndependentBlock, nmodl::ast::ProcedureBlock, nmodl::ast::VarName, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::Name, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::SolveBlock, nmodl::ast::Float, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::UnaryExpression, nmodl::ast::FunctionCall, nmodl::ast::Limits, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::NrnStateBlock, nmodl::ast::NumberRange, nmodl::ast::ReactVarName, nmodl::ast::SolutionExpression, nmodl::ast::UnitBlock, nmodl::ast::UnitDef, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::ParenExpression, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReactionOperator, nmodl::ast::ReadIonVar, nmodl::ast::UnaryOperator, nmodl::ast::Unit, nmodl::ast::WrappedExpression, nmodl::ast::WriteIonVar, nmodl::ast::Number, and nmodl::ast::Identifier.
Definition at line 88 of file expression.hpp.
|
inlineoverridevirtualnoexcept |
Return type (ast::AstNodeType) of ast node as std::string.
Every node in the ast has a type defined in ast::AstNodeType. This type name can be returned as a std::string for printing node to text/json form.
Implements nmodl::ast::Ast.
Reimplemented in nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::StatementBlock, nmodl::ast::StateBlock, nmodl::ast::Integer, nmodl::ast::String, nmodl::ast::InitialBlock, nmodl::ast::PrimeName, nmodl::ast::IndexedName, nmodl::ast::FactorDef, nmodl::ast::FunctionBlock, nmodl::ast::IndependentBlock, nmodl::ast::ProcedureBlock, nmodl::ast::VarName, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::Name, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::SolveBlock, nmodl::ast::Float, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::UnaryExpression, nmodl::ast::FunctionCall, nmodl::ast::Limits, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::NrnStateBlock, nmodl::ast::NumberRange, nmodl::ast::ReactVarName, nmodl::ast::SolutionExpression, nmodl::ast::UnitBlock, nmodl::ast::UnitDef, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::ParenExpression, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReactionOperator, nmodl::ast::ReadIonVar, nmodl::ast::UnaryOperator, nmodl::ast::Unit, nmodl::ast::WrappedExpression, nmodl::ast::WriteIonVar, nmodl::ast::Number, and nmodl::ast::Identifier.
Definition at line 103 of file expression.hpp.
|
inlineoverridevirtual |
Get std::shared_ptr from this
pointer of the current ast node.
Reimplemented from nmodl::ast::Ast.
Reimplemented in nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::StateBlock, nmodl::ast::InitialBlock, nmodl::ast::FunctionBlock, nmodl::ast::IndependentBlock, nmodl::ast::ProcedureBlock, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::SolveBlock, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::NrnStateBlock, nmodl::ast::StatementBlock, nmodl::ast::UnitBlock, nmodl::ast::Integer, nmodl::ast::String, nmodl::ast::PrimeName, nmodl::ast::IndexedName, nmodl::ast::FactorDef, nmodl::ast::VarName, nmodl::ast::Name, nmodl::ast::Float, nmodl::ast::UnaryExpression, nmodl::ast::FunctionCall, nmodl::ast::Limits, nmodl::ast::NumberRange, nmodl::ast::ReactVarName, nmodl::ast::SolutionExpression, nmodl::ast::UnitDef, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::ParenExpression, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReactionOperator, nmodl::ast::ReadIonVar, nmodl::ast::UnaryOperator, nmodl::ast::Unit, nmodl::ast::WrappedExpression, nmodl::ast::WriteIonVar, nmodl::ast::Number, and nmodl::ast::Identifier.
Definition at line 118 of file expression.hpp.
|
inlineoverridevirtual |
Get std::shared_ptr from this
pointer of the current ast node.
Reimplemented from nmodl::ast::Ast.
Reimplemented in nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::StateBlock, nmodl::ast::InitialBlock, nmodl::ast::FunctionBlock, nmodl::ast::IndependentBlock, nmodl::ast::ProcedureBlock, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::SolveBlock, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::NrnStateBlock, nmodl::ast::StatementBlock, nmodl::ast::UnitBlock, nmodl::ast::Integer, nmodl::ast::String, nmodl::ast::PrimeName, nmodl::ast::IndexedName, nmodl::ast::FactorDef, nmodl::ast::VarName, nmodl::ast::Name, nmodl::ast::Float, nmodl::ast::UnaryExpression, nmodl::ast::FunctionCall, nmodl::ast::Limits, nmodl::ast::NumberRange, nmodl::ast::ReactVarName, nmodl::ast::SolutionExpression, nmodl::ast::UnitDef, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::ParenExpression, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReactionOperator, nmodl::ast::ReadIonVar, nmodl::ast::UnaryOperator, nmodl::ast::Unit, nmodl::ast::WrappedExpression, nmodl::ast::WriteIonVar, nmodl::ast::Number, and nmodl::ast::Identifier.
Definition at line 111 of file expression.hpp.
|
inlineoverridevirtualnoexcept |
Check if the ast node is an instance of ast::Expression.
Reimplemented from nmodl::ast::Ast.
Definition at line 55 of file expression.hpp.
|
overridevirtual |
visit children i.e.
member variables of current node using provided visitor
Different nodes in the AST have different members (i.e. children). This method recursively visits children using provided visitor.
v | Concrete constant visitor that will be used to recursively visit children |
Implements nmodl::ast::Ast.
Reimplemented in nmodl::ast::FunctionBlock, nmodl::ast::ProcedureBlock, nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::FactorDef, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::StatementBlock, nmodl::ast::SolveBlock, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::VarName, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::StateBlock, nmodl::ast::InitialBlock, nmodl::ast::IndependentBlock, nmodl::ast::PrimeName, nmodl::ast::IndexedName, nmodl::ast::NrnStateBlock, nmodl::ast::UnitBlock, nmodl::ast::Integer, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::FunctionCall, nmodl::ast::ReactVarName, nmodl::ast::UnitDef, nmodl::ast::Name, nmodl::ast::UnaryExpression, nmodl::ast::Limits, nmodl::ast::NumberRange, nmodl::ast::SolutionExpression, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::String, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReadIonVar, nmodl::ast::Unit, nmodl::ast::WriteIonVar, nmodl::ast::Float, nmodl::ast::ParenExpression, nmodl::ast::WrappedExpression, nmodl::ast::ReactionOperator, nmodl::ast::UnaryOperator, nmodl::ast::Number, and nmodl::ast::Identifier.
|
overridevirtual |
visit children i.e.
Expression member functions definition.
member variables of current node using provided visitor
Different nodes in the AST have different members (i.e. children). This method recursively visits children using provided visitor.
v | Concrete visitor that will be used to recursively visit children |
Implements nmodl::ast::Ast.
Reimplemented in nmodl::ast::FunctionBlock, nmodl::ast::ProcedureBlock, nmodl::ast::LinearBlock, nmodl::ast::NonLinearBlock, nmodl::ast::FactorDef, nmodl::ast::FunctionTableBlock, nmodl::ast::KineticBlock, nmodl::ast::LongitudinalDiffusionBlock, nmodl::ast::StatementBlock, nmodl::ast::SolveBlock, nmodl::ast::ForNetcon, nmodl::ast::NetReceiveBlock, nmodl::ast::VarName, nmodl::ast::NeuronBlock, nmodl::ast::ParamBlock, nmodl::ast::StateBlock, nmodl::ast::InitialBlock, nmodl::ast::IndependentBlock, nmodl::ast::PrimeName, nmodl::ast::IndexedName, nmodl::ast::NrnStateBlock, nmodl::ast::UnitBlock, nmodl::ast::Integer, nmodl::ast::LinEquation, nmodl::ast::NonLinEquation, nmodl::ast::FunctionCall, nmodl::ast::ReactVarName, nmodl::ast::UnitDef, nmodl::ast::Name, nmodl::ast::UnaryExpression, nmodl::ast::Limits, nmodl::ast::NumberRange, nmodl::ast::SolutionExpression, nmodl::ast::Valence, nmodl::ast::Watch, nmodl::ast::String, nmodl::ast::ExternVar, nmodl::ast::GlobalVar, nmodl::ast::LocalVar, nmodl::ast::NonspecificCurVar, nmodl::ast::PointerVar, nmodl::ast::RandomVar, nmodl::ast::RangeVar, nmodl::ast::ReadIonVar, nmodl::ast::Unit, nmodl::ast::WriteIonVar, nmodl::ast::Float, nmodl::ast::ParenExpression, nmodl::ast::WrappedExpression, nmodl::ast::ReactionOperator, nmodl::ast::UnaryOperator, nmodl::ast::Number, and nmodl::ast::Identifier.