User Guide
ast_decl.hpp File Reference

THIS FILE IS GENERATED AT BUILD TIME AND SHALL NOT BE EDITED. More...

Detailed Description

THIS FILE IS GENERATED AT BUILD TIME AND SHALL NOT BE EDITED.

Auto generated AST node types and aliases declaration

Definition in file ast_decl.hpp.

#include <memory>
#include <vector>

Go to the source code of this file.

Namespaces

 nmodl
 encapsulates code generation backend implementations
 
 nmodl::ast
 Abstract Syntax Tree (AST) related implementations.
 

Typedefs

using nmodl::ast::NodeVector = std::vector< std::shared_ptr< Node > >
 
using nmodl::ast::StatementVector = std::vector< std::shared_ptr< Statement > >
 
using nmodl::ast::ExpressionVector = std::vector< std::shared_ptr< Expression > >
 
using nmodl::ast::BlockVector = std::vector< std::shared_ptr< Block > >
 
using nmodl::ast::IdentifierVector = std::vector< std::shared_ptr< Identifier > >
 
using nmodl::ast::NumberVector = std::vector< std::shared_ptr< Number > >
 
using nmodl::ast::StringVector = std::vector< std::shared_ptr< String > >
 
using nmodl::ast::IntegerVector = std::vector< std::shared_ptr< Integer > >
 
using nmodl::ast::FloatVector = std::vector< std::shared_ptr< Float > >
 
using nmodl::ast::DoubleVector = std::vector< std::shared_ptr< Double > >
 
using nmodl::ast::BooleanVector = std::vector< std::shared_ptr< Boolean > >
 
using nmodl::ast::NameVector = std::vector< std::shared_ptr< Name > >
 
using nmodl::ast::PrimeNameVector = std::vector< std::shared_ptr< PrimeName > >
 
using nmodl::ast::IndexedNameVector = std::vector< std::shared_ptr< IndexedName > >
 
using nmodl::ast::VarNameVector = std::vector< std::shared_ptr< VarName > >
 
using nmodl::ast::ArgumentVector = std::vector< std::shared_ptr< Argument > >
 
using nmodl::ast::ReactVarNameVector = std::vector< std::shared_ptr< ReactVarName > >
 
using nmodl::ast::ReadIonVarVector = std::vector< std::shared_ptr< ReadIonVar > >
 
using nmodl::ast::WriteIonVarVector = std::vector< std::shared_ptr< WriteIonVar > >
 
using nmodl::ast::NonspecificCurVarVector = std::vector< std::shared_ptr< NonspecificCurVar > >
 
using nmodl::ast::ElectrodeCurVarVector = std::vector< std::shared_ptr< ElectrodeCurVar > >
 
using nmodl::ast::RangeVarVector = std::vector< std::shared_ptr< RangeVar > >
 
using nmodl::ast::GlobalVarVector = std::vector< std::shared_ptr< GlobalVar > >
 
using nmodl::ast::PointerVarVector = std::vector< std::shared_ptr< PointerVar > >
 
using nmodl::ast::RandomVarVector = std::vector< std::shared_ptr< RandomVar > >
 
using nmodl::ast::BbcorePointerVarVector = std::vector< std::shared_ptr< BbcorePointerVar > >
 
using nmodl::ast::ExternVarVector = std::vector< std::shared_ptr< ExternVar > >
 
using nmodl::ast::ParamBlockVector = std::vector< std::shared_ptr< ParamBlock > >
 
using nmodl::ast::IndependentBlockVector = std::vector< std::shared_ptr< IndependentBlock > >
 
using nmodl::ast::AssignedBlockVector = std::vector< std::shared_ptr< AssignedBlock > >
 
using nmodl::ast::StateBlockVector = std::vector< std::shared_ptr< StateBlock > >
 
using nmodl::ast::InitialBlockVector = std::vector< std::shared_ptr< InitialBlock > >
 
using nmodl::ast::ConstructorBlockVector = std::vector< std::shared_ptr< ConstructorBlock > >
 
using nmodl::ast::DestructorBlockVector = std::vector< std::shared_ptr< DestructorBlock > >
 
using nmodl::ast::StatementBlockVector = std::vector< std::shared_ptr< StatementBlock > >
 
using nmodl::ast::DerivativeBlockVector = std::vector< std::shared_ptr< DerivativeBlock > >
 
using nmodl::ast::LinearBlockVector = std::vector< std::shared_ptr< LinearBlock > >
 
using nmodl::ast::NonLinearBlockVector = std::vector< std::shared_ptr< NonLinearBlock > >
 
using nmodl::ast::DiscreteBlockVector = std::vector< std::shared_ptr< DiscreteBlock > >
 
using nmodl::ast::FunctionTableBlockVector = std::vector< std::shared_ptr< FunctionTableBlock > >
 
using nmodl::ast::FunctionBlockVector = std::vector< std::shared_ptr< FunctionBlock > >
 
using nmodl::ast::ProcedureBlockVector = std::vector< std::shared_ptr< ProcedureBlock > >
 
using nmodl::ast::NetReceiveBlockVector = std::vector< std::shared_ptr< NetReceiveBlock > >
 
using nmodl::ast::SolveBlockVector = std::vector< std::shared_ptr< SolveBlock > >
 
using nmodl::ast::BreakpointBlockVector = std::vector< std::shared_ptr< BreakpointBlock > >
 
using nmodl::ast::BeforeBlockVector = std::vector< std::shared_ptr< BeforeBlock > >
 
using nmodl::ast::AfterBlockVector = std::vector< std::shared_ptr< AfterBlock > >
 
using nmodl::ast::BABlockVector = std::vector< std::shared_ptr< BABlock > >
 
using nmodl::ast::ForNetconVector = std::vector< std::shared_ptr< ForNetcon > >
 
using nmodl::ast::KineticBlockVector = std::vector< std::shared_ptr< KineticBlock > >
 
using nmodl::ast::UnitBlockVector = std::vector< std::shared_ptr< UnitBlock > >
 
using nmodl::ast::ConstantBlockVector = std::vector< std::shared_ptr< ConstantBlock > >
 
using nmodl::ast::NeuronBlockVector = std::vector< std::shared_ptr< NeuronBlock > >
 
using nmodl::ast::UnitVector = std::vector< std::shared_ptr< Unit > >
 
using nmodl::ast::DoubleUnitVector = std::vector< std::shared_ptr< DoubleUnit > >
 
using nmodl::ast::LocalVarVector = std::vector< std::shared_ptr< LocalVar > >
 
using nmodl::ast::LimitsVector = std::vector< std::shared_ptr< Limits > >
 
using nmodl::ast::NumberRangeVector = std::vector< std::shared_ptr< NumberRange > >
 
using nmodl::ast::ConstantVarVector = std::vector< std::shared_ptr< ConstantVar > >
 
using nmodl::ast::BinaryOperatorVector = std::vector< std::shared_ptr< BinaryOperator > >
 
using nmodl::ast::UnaryOperatorVector = std::vector< std::shared_ptr< UnaryOperator > >
 
using nmodl::ast::ReactionOperatorVector = std::vector< std::shared_ptr< ReactionOperator > >
 
using nmodl::ast::ParenExpressionVector = std::vector< std::shared_ptr< ParenExpression > >
 
using nmodl::ast::BinaryExpressionVector = std::vector< std::shared_ptr< BinaryExpression > >
 
using nmodl::ast::DiffEqExpressionVector = std::vector< std::shared_ptr< DiffEqExpression > >
 
using nmodl::ast::UnaryExpressionVector = std::vector< std::shared_ptr< UnaryExpression > >
 
using nmodl::ast::NonLinEquationVector = std::vector< std::shared_ptr< NonLinEquation > >
 
using nmodl::ast::LinEquationVector = std::vector< std::shared_ptr< LinEquation > >
 
using nmodl::ast::FunctionCallVector = std::vector< std::shared_ptr< FunctionCall > >
 
using nmodl::ast::WatchVector = std::vector< std::shared_ptr< Watch > >
 
using nmodl::ast::BABlockTypeVector = std::vector< std::shared_ptr< BABlockType > >
 
using nmodl::ast::UnitDefVector = std::vector< std::shared_ptr< UnitDef > >
 
using nmodl::ast::FactorDefVector = std::vector< std::shared_ptr< FactorDef > >
 
using nmodl::ast::ValenceVector = std::vector< std::shared_ptr< Valence > >
 
using nmodl::ast::UnitStateVector = std::vector< std::shared_ptr< UnitState > >
 
using nmodl::ast::LocalListStatementVector = std::vector< std::shared_ptr< LocalListStatement > >
 
using nmodl::ast::ModelVector = std::vector< std::shared_ptr< Model > >
 
using nmodl::ast::DefineVector = std::vector< std::shared_ptr< Define > >
 
using nmodl::ast::IncludeVector = std::vector< std::shared_ptr< Include > >
 
using nmodl::ast::ParamAssignVector = std::vector< std::shared_ptr< ParamAssign > >
 
using nmodl::ast::AssignedDefinitionVector = std::vector< std::shared_ptr< AssignedDefinition > >
 
using nmodl::ast::ConductanceHintVector = std::vector< std::shared_ptr< ConductanceHint > >
 
using nmodl::ast::ExpressionStatementVector = std::vector< std::shared_ptr< ExpressionStatement > >
 
using nmodl::ast::ProtectStatementVector = std::vector< std::shared_ptr< ProtectStatement > >
 
using nmodl::ast::FromStatementVector = std::vector< std::shared_ptr< FromStatement > >
 
using nmodl::ast::WhileStatementVector = std::vector< std::shared_ptr< WhileStatement > >
 
using nmodl::ast::IfStatementVector = std::vector< std::shared_ptr< IfStatement > >
 
using nmodl::ast::ElseIfStatementVector = std::vector< std::shared_ptr< ElseIfStatement > >
 
using nmodl::ast::ElseStatementVector = std::vector< std::shared_ptr< ElseStatement > >
 
using nmodl::ast::WatchStatementVector = std::vector< std::shared_ptr< WatchStatement > >
 
using nmodl::ast::MutexLockVector = std::vector< std::shared_ptr< MutexLock > >
 
using nmodl::ast::MutexUnlockVector = std::vector< std::shared_ptr< MutexUnlock > >
 
using nmodl::ast::ConserveVector = std::vector< std::shared_ptr< Conserve > >
 
using nmodl::ast::CompartmentVector = std::vector< std::shared_ptr< Compartment > >
 
using nmodl::ast::LonDiffuseVector = std::vector< std::shared_ptr< LonDiffuse > >
 
using nmodl::ast::ReactionStatementVector = std::vector< std::shared_ptr< ReactionStatement > >
 
using nmodl::ast::LagStatementVector = std::vector< std::shared_ptr< LagStatement > >
 
using nmodl::ast::ConstantStatementVector = std::vector< std::shared_ptr< ConstantStatement > >
 
using nmodl::ast::TableStatementVector = std::vector< std::shared_ptr< TableStatement > >
 
using nmodl::ast::SuffixVector = std::vector< std::shared_ptr< Suffix > >
 
using nmodl::ast::UseionVector = std::vector< std::shared_ptr< Useion > >
 
using nmodl::ast::NonspecificVector = std::vector< std::shared_ptr< Nonspecific > >
 
using nmodl::ast::ElectrodeCurrentVector = std::vector< std::shared_ptr< ElectrodeCurrent > >
 
using nmodl::ast::RangeVector = std::vector< std::shared_ptr< Range > >
 
using nmodl::ast::GlobalVector = std::vector< std::shared_ptr< Global > >
 
using nmodl::ast::RandomVarListVector = std::vector< std::shared_ptr< RandomVarList > >
 
using nmodl::ast::PointerVector = std::vector< std::shared_ptr< Pointer > >
 
using nmodl::ast::BbcorePointerVector = std::vector< std::shared_ptr< BbcorePointer > >
 
using nmodl::ast::ExternalVector = std::vector< std::shared_ptr< External > >
 
using nmodl::ast::ThreadSafeVector = std::vector< std::shared_ptr< ThreadSafe > >
 
using nmodl::ast::VerbatimVector = std::vector< std::shared_ptr< Verbatim > >
 
using nmodl::ast::LineCommentVector = std::vector< std::shared_ptr< LineComment > >
 
using nmodl::ast::BlockCommentVector = std::vector< std::shared_ptr< BlockComment > >
 
using nmodl::ast::OntologyStatementVector = std::vector< std::shared_ptr< OntologyStatement > >
 
using nmodl::ast::ProgramVector = std::vector< std::shared_ptr< Program > >
 
using nmodl::ast::NrnStateBlockVector = std::vector< std::shared_ptr< NrnStateBlock > >
 
using nmodl::ast::EigenNewtonSolverBlockVector = std::vector< std::shared_ptr< EigenNewtonSolverBlock > >
 
using nmodl::ast::EigenLinearSolverBlockVector = std::vector< std::shared_ptr< EigenLinearSolverBlock > >
 
using nmodl::ast::CvodeBlockVector = std::vector< std::shared_ptr< CvodeBlock > >
 
using nmodl::ast::LongitudinalDiffusionBlockVector = std::vector< std::shared_ptr< LongitudinalDiffusionBlock > >
 
using nmodl::ast::WrappedExpressionVector = std::vector< std::shared_ptr< WrappedExpression > >
 
using nmodl::ast::DerivimplicitCallbackVector = std::vector< std::shared_ptr< DerivimplicitCallback > >
 
using nmodl::ast::SolutionExpressionVector = std::vector< std::shared_ptr< SolutionExpression > >
 
using nmodl::ast::UpdateDtVector = std::vector< std::shared_ptr< UpdateDt > >
 

Enumerations

enum  nmodl::ast::AstNodeType {
  nmodl::ast::AstNodeType::NODE, nmodl::ast::AstNodeType::STATEMENT, nmodl::ast::AstNodeType::EXPRESSION, nmodl::ast::AstNodeType::BLOCK,
  nmodl::ast::AstNodeType::IDENTIFIER, nmodl::ast::AstNodeType::NUMBER, nmodl::ast::AstNodeType::STRING, nmodl::ast::AstNodeType::INTEGER,
  nmodl::ast::AstNodeType::FLOAT, nmodl::ast::AstNodeType::DOUBLE, nmodl::ast::AstNodeType::BOOLEAN, nmodl::ast::AstNodeType::NAME,
  nmodl::ast::AstNodeType::PRIME_NAME, nmodl::ast::AstNodeType::INDEXED_NAME, nmodl::ast::AstNodeType::VAR_NAME, nmodl::ast::AstNodeType::ARGUMENT,
  nmodl::ast::AstNodeType::REACT_VAR_NAME, nmodl::ast::AstNodeType::READ_ION_VAR, nmodl::ast::AstNodeType::WRITE_ION_VAR, nmodl::ast::AstNodeType::NONSPECIFIC_CUR_VAR,
  nmodl::ast::AstNodeType::ELECTRODE_CUR_VAR, nmodl::ast::AstNodeType::RANGE_VAR, nmodl::ast::AstNodeType::GLOBAL_VAR, nmodl::ast::AstNodeType::POINTER_VAR,
  nmodl::ast::AstNodeType::RANDOM_VAR, nmodl::ast::AstNodeType::BBCORE_POINTER_VAR, nmodl::ast::AstNodeType::EXTERN_VAR, nmodl::ast::AstNodeType::PARAM_BLOCK,
  nmodl::ast::AstNodeType::INDEPENDENT_BLOCK, nmodl::ast::AstNodeType::ASSIGNED_BLOCK, nmodl::ast::AstNodeType::STATE_BLOCK, nmodl::ast::AstNodeType::INITIAL_BLOCK,
  nmodl::ast::AstNodeType::CONSTRUCTOR_BLOCK, nmodl::ast::AstNodeType::DESTRUCTOR_BLOCK, nmodl::ast::AstNodeType::STATEMENT_BLOCK, nmodl::ast::AstNodeType::DERIVATIVE_BLOCK,
  nmodl::ast::AstNodeType::LINEAR_BLOCK, nmodl::ast::AstNodeType::NON_LINEAR_BLOCK, nmodl::ast::AstNodeType::DISCRETE_BLOCK, nmodl::ast::AstNodeType::FUNCTION_TABLE_BLOCK,
  nmodl::ast::AstNodeType::FUNCTION_BLOCK, nmodl::ast::AstNodeType::PROCEDURE_BLOCK, nmodl::ast::AstNodeType::NET_RECEIVE_BLOCK, nmodl::ast::AstNodeType::SOLVE_BLOCK,
  nmodl::ast::AstNodeType::BREAKPOINT_BLOCK, nmodl::ast::AstNodeType::BEFORE_BLOCK, nmodl::ast::AstNodeType::AFTER_BLOCK, nmodl::ast::AstNodeType::BA_BLOCK,
  nmodl::ast::AstNodeType::FOR_NETCON, nmodl::ast::AstNodeType::KINETIC_BLOCK, nmodl::ast::AstNodeType::UNIT_BLOCK, nmodl::ast::AstNodeType::CONSTANT_BLOCK,
  nmodl::ast::AstNodeType::NEURON_BLOCK, nmodl::ast::AstNodeType::UNIT, nmodl::ast::AstNodeType::DOUBLE_UNIT, nmodl::ast::AstNodeType::LOCAL_VAR,
  nmodl::ast::AstNodeType::LIMITS, nmodl::ast::AstNodeType::NUMBER_RANGE, nmodl::ast::AstNodeType::CONSTANT_VAR, nmodl::ast::AstNodeType::BINARY_OPERATOR,
  nmodl::ast::AstNodeType::UNARY_OPERATOR, nmodl::ast::AstNodeType::REACTION_OPERATOR, nmodl::ast::AstNodeType::PAREN_EXPRESSION, nmodl::ast::AstNodeType::BINARY_EXPRESSION,
  nmodl::ast::AstNodeType::DIFF_EQ_EXPRESSION, nmodl::ast::AstNodeType::UNARY_EXPRESSION, nmodl::ast::AstNodeType::NON_LIN_EQUATION, nmodl::ast::AstNodeType::LIN_EQUATION,
  nmodl::ast::AstNodeType::FUNCTION_CALL, nmodl::ast::AstNodeType::WATCH, nmodl::ast::AstNodeType::BA_BLOCK_TYPE, nmodl::ast::AstNodeType::UNIT_DEF,
  nmodl::ast::AstNodeType::FACTOR_DEF, nmodl::ast::AstNodeType::VALENCE, nmodl::ast::AstNodeType::UNIT_STATE, nmodl::ast::AstNodeType::LOCAL_LIST_STATEMENT,
  nmodl::ast::AstNodeType::MODEL, nmodl::ast::AstNodeType::DEFINE, nmodl::ast::AstNodeType::INCLUDE, nmodl::ast::AstNodeType::PARAM_ASSIGN,
  nmodl::ast::AstNodeType::ASSIGNED_DEFINITION, nmodl::ast::AstNodeType::CONDUCTANCE_HINT, nmodl::ast::AstNodeType::EXPRESSION_STATEMENT, nmodl::ast::AstNodeType::PROTECT_STATEMENT,
  nmodl::ast::AstNodeType::FROM_STATEMENT, nmodl::ast::AstNodeType::WHILE_STATEMENT, nmodl::ast::AstNodeType::IF_STATEMENT, nmodl::ast::AstNodeType::ELSE_IF_STATEMENT,
  nmodl::ast::AstNodeType::ELSE_STATEMENT, nmodl::ast::AstNodeType::WATCH_STATEMENT, nmodl::ast::AstNodeType::MUTEX_LOCK, nmodl::ast::AstNodeType::MUTEX_UNLOCK,
  nmodl::ast::AstNodeType::CONSERVE, nmodl::ast::AstNodeType::COMPARTMENT, nmodl::ast::AstNodeType::LON_DIFFUSE, nmodl::ast::AstNodeType::REACTION_STATEMENT,
  nmodl::ast::AstNodeType::LAG_STATEMENT, nmodl::ast::AstNodeType::CONSTANT_STATEMENT, nmodl::ast::AstNodeType::TABLE_STATEMENT, nmodl::ast::AstNodeType::SUFFIX,
  nmodl::ast::AstNodeType::USEION, nmodl::ast::AstNodeType::NONSPECIFIC, nmodl::ast::AstNodeType::ELECTRODE_CURRENT, nmodl::ast::AstNodeType::RANGE,
  nmodl::ast::AstNodeType::GLOBAL, nmodl::ast::AstNodeType::RANDOM_VAR_LIST, nmodl::ast::AstNodeType::POINTER, nmodl::ast::AstNodeType::BBCORE_POINTER,
  nmodl::ast::AstNodeType::EXTERNAL, nmodl::ast::AstNodeType::THREAD_SAFE, nmodl::ast::AstNodeType::VERBATIM, nmodl::ast::AstNodeType::LINE_COMMENT,
  nmodl::ast::AstNodeType::BLOCK_COMMENT, nmodl::ast::AstNodeType::ONTOLOGY_STATEMENT, nmodl::ast::AstNodeType::PROGRAM, nmodl::ast::AstNodeType::NRN_STATE_BLOCK,
  nmodl::ast::AstNodeType::EIGEN_NEWTON_SOLVER_BLOCK, nmodl::ast::AstNodeType::EIGEN_LINEAR_SOLVER_BLOCK, nmodl::ast::AstNodeType::CVODE_BLOCK, nmodl::ast::AstNodeType::LONGITUDINAL_DIFFUSION_BLOCK,
  nmodl::ast::AstNodeType::WRAPPED_EXPRESSION, nmodl::ast::AstNodeType::DERIVIMPLICIT_CALLBACK, nmodl::ast::AstNodeType::SOLUTION_EXPRESSION, nmodl::ast::AstNodeType::UPDATE_DT
}
 Enum type for every AST node type. More...