NEURON
json_visitor.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2023 Blue Brain Project, EPFL.
3  * See the top-level LICENSE file for details.
4  *
5  * SPDX-License-Identifier: Apache-2.0
6  */
7 
8 ///
9 /// THIS FILE IS GENERATED AT BUILD TIME AND SHALL NOT BE EDITED.
10 ///
11 
12 #pragma once
13 
14 /**
15  * \file
16  * \brief \copybrief nmodl::visitor::JSONVisitor
17  */
18 
19 #include "printer/json_printer.hpp"
20 #include "visitors/ast_visitor.hpp"
21 
22 namespace nmodl {
23 namespace visitor {
24 
25 /**
26  * @addtogroup visitor_classes
27  * @{
28  */
29 
30 /**
31  * \class JSONVisitor
32  * \brief %Visitor for printing AST in JSON format
33  *
34  * Convert AST into JSON form form using AST visitor. This is used
35  * for debugging or visualization purpose.
36  */
38  private:
39  /// json printer
40  std::unique_ptr<printer::JSONPrinter> printer;
41 
42  /// true if nmodl corresponding to ast node should be added to json
43  bool embed_nmodl = false;
44 
45  public:
47  : printer(new printer::JSONPrinter()) {}
48 
49  JSONVisitor(std::string filename)
50  : printer(new printer::JSONPrinter(filename)) {}
51 
52  JSONVisitor(std::ostream& ss)
53  : printer(new printer::JSONPrinter(ss)) {}
54 
55  JSONVisitor& write(const ast::Program& program) {
56  visit_program(program);
57  return *this;
58  }
59 
61  printer->flush();
62  return *this;
63  }
64 
65  JSONVisitor& compact_json(bool flag) {
66  printer->compact_json(flag);
67  return *this;
68  }
69 
70  JSONVisitor& add_nmodl(bool flag) {
71  embed_nmodl = flag;
72  return *this;
73  }
74 
75  JSONVisitor& expand_keys(bool flag) {
76  printer->expand_keys(flag);
77  return *this;
78  }
79 
80  protected:
81  // clang-format off
82  void visit_node(const ast::Node& node) override;
83  void visit_statement(const ast::Statement& node) override;
84  void visit_expression(const ast::Expression& node) override;
85  void visit_block(const ast::Block& node) override;
86  void visit_identifier(const ast::Identifier& node) override;
87  void visit_number(const ast::Number& node) override;
88  void visit_string(const ast::String& node) override;
89  void visit_integer(const ast::Integer& node) override;
90  void visit_float(const ast::Float& node) override;
91  void visit_double(const ast::Double& node) override;
92  void visit_boolean(const ast::Boolean& node) override;
93  void visit_name(const ast::Name& node) override;
94  void visit_prime_name(const ast::PrimeName& node) override;
95  void visit_indexed_name(const ast::IndexedName& node) override;
96  void visit_var_name(const ast::VarName& node) override;
97  void visit_argument(const ast::Argument& node) override;
98  void visit_react_var_name(const ast::ReactVarName& node) override;
99  void visit_read_ion_var(const ast::ReadIonVar& node) override;
100  void visit_write_ion_var(const ast::WriteIonVar& node) override;
102  void visit_electrode_cur_var(const ast::ElectrodeCurVar& node) override;
103  void visit_range_var(const ast::RangeVar& node) override;
104  void visit_global_var(const ast::GlobalVar& node) override;
105  void visit_pointer_var(const ast::PointerVar& node) override;
106  void visit_random_var(const ast::RandomVar& node) override;
108  void visit_extern_var(const ast::ExternVar& node) override;
109  void visit_param_block(const ast::ParamBlock& node) override;
110  void visit_independent_block(const ast::IndependentBlock& node) override;
111  void visit_assigned_block(const ast::AssignedBlock& node) override;
112  void visit_state_block(const ast::StateBlock& node) override;
113  void visit_initial_block(const ast::InitialBlock& node) override;
114  void visit_constructor_block(const ast::ConstructorBlock& node) override;
115  void visit_destructor_block(const ast::DestructorBlock& node) override;
116  void visit_statement_block(const ast::StatementBlock& node) override;
117  void visit_derivative_block(const ast::DerivativeBlock& node) override;
118  void visit_linear_block(const ast::LinearBlock& node) override;
119  void visit_non_linear_block(const ast::NonLinearBlock& node) override;
120  void visit_discrete_block(const ast::DiscreteBlock& node) override;
122  void visit_function_block(const ast::FunctionBlock& node) override;
123  void visit_procedure_block(const ast::ProcedureBlock& node) override;
124  void visit_net_receive_block(const ast::NetReceiveBlock& node) override;
125  void visit_solve_block(const ast::SolveBlock& node) override;
126  void visit_breakpoint_block(const ast::BreakpointBlock& node) override;
127  void visit_before_block(const ast::BeforeBlock& node) override;
128  void visit_after_block(const ast::AfterBlock& node) override;
129  void visit_ba_block(const ast::BABlock& node) override;
130  void visit_for_netcon(const ast::ForNetcon& node) override;
131  void visit_kinetic_block(const ast::KineticBlock& node) override;
132  void visit_unit_block(const ast::UnitBlock& node) override;
133  void visit_constant_block(const ast::ConstantBlock& node) override;
134  void visit_neuron_block(const ast::NeuronBlock& node) override;
135  void visit_unit(const ast::Unit& node) override;
136  void visit_double_unit(const ast::DoubleUnit& node) override;
137  void visit_local_var(const ast::LocalVar& node) override;
138  void visit_limits(const ast::Limits& node) override;
139  void visit_number_range(const ast::NumberRange& node) override;
140  void visit_constant_var(const ast::ConstantVar& node) override;
141  void visit_binary_operator(const ast::BinaryOperator& node) override;
142  void visit_unary_operator(const ast::UnaryOperator& node) override;
143  void visit_reaction_operator(const ast::ReactionOperator& node) override;
144  void visit_paren_expression(const ast::ParenExpression& node) override;
145  void visit_binary_expression(const ast::BinaryExpression& node) override;
147  void visit_unary_expression(const ast::UnaryExpression& node) override;
148  void visit_non_lin_equation(const ast::NonLinEquation& node) override;
149  void visit_lin_equation(const ast::LinEquation& node) override;
150  void visit_function_call(const ast::FunctionCall& node) override;
151  void visit_watch(const ast::Watch& node) override;
152  void visit_ba_block_type(const ast::BABlockType& node) override;
153  void visit_unit_def(const ast::UnitDef& node) override;
154  void visit_factor_def(const ast::FactorDef& node) override;
155  void visit_valence(const ast::Valence& node) override;
156  void visit_unit_state(const ast::UnitState& node) override;
158  void visit_model(const ast::Model& node) override;
159  void visit_define(const ast::Define& node) override;
160  void visit_include(const ast::Include& node) override;
161  void visit_param_assign(const ast::ParamAssign& node) override;
163  void visit_conductance_hint(const ast::ConductanceHint& node) override;
165  void visit_protect_statement(const ast::ProtectStatement& node) override;
166  void visit_from_statement(const ast::FromStatement& node) override;
167  void visit_while_statement(const ast::WhileStatement& node) override;
168  void visit_if_statement(const ast::IfStatement& node) override;
169  void visit_else_if_statement(const ast::ElseIfStatement& node) override;
170  void visit_else_statement(const ast::ElseStatement& node) override;
171  void visit_watch_statement(const ast::WatchStatement& node) override;
172  void visit_mutex_lock(const ast::MutexLock& node) override;
173  void visit_mutex_unlock(const ast::MutexUnlock& node) override;
174  void visit_conserve(const ast::Conserve& node) override;
175  void visit_compartment(const ast::Compartment& node) override;
176  void visit_lon_diffuse(const ast::LonDiffuse& node) override;
178  void visit_lag_statement(const ast::LagStatement& node) override;
180  void visit_table_statement(const ast::TableStatement& node) override;
181  void visit_suffix(const ast::Suffix& node) override;
182  void visit_useion(const ast::Useion& node) override;
183  void visit_nonspecific(const ast::Nonspecific& node) override;
184  void visit_electrode_current(const ast::ElectrodeCurrent& node) override;
185  void visit_range(const ast::Range& node) override;
186  void visit_global(const ast::Global& node) override;
187  void visit_random_var_list(const ast::RandomVarList& node) override;
188  void visit_pointer(const ast::Pointer& node) override;
189  void visit_bbcore_pointer(const ast::BbcorePointer& node) override;
190  void visit_external(const ast::External& node) override;
191  void visit_thread_safe(const ast::ThreadSafe& node) override;
192  void visit_verbatim(const ast::Verbatim& node) override;
193  void visit_line_comment(const ast::LineComment& node) override;
194  void visit_block_comment(const ast::BlockComment& node) override;
196  void visit_program(const ast::Program& node) override;
197  void visit_nrn_state_block(const ast::NrnStateBlock& node) override;
200  void visit_cvode_block(const ast::CvodeBlock& node) override;
205  void visit_update_dt(const ast::UpdateDt& node) override;
206  // clang-format on
207 };
208 
209 /** @} */ // end of visitor_classes
210 
211 } // namespace visitor
212 } // namespace nmodl
213 
Concrete visitor for all AST classes.
Represents a AFTER block in NMODL.
Definition: after_block.hpp:51
Represents an argument to functions and procedures.
Definition: argument.hpp:48
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.
Definition: ba_block.hpp:40
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.
Represents a multi-line comment in NMODL.
Base class for all block scoped nodes.
Definition: block.hpp:41
Represents a boolean variable.
Definition: boolean.hpp:42
Represents a BREAKPOINT block in NMODL.
Represent COMPARTMENT statement in NMODL.
Definition: compartment.hpp:39
Represents CONDUCTANCE statement in NMODL.
Represent CONSERVE statement in NMODL.
Definition: conserve.hpp:38
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.
Definition: cvode_block.hpp:38
Represents a DEFINE statement in NMODL.
Definition: define.hpp:38
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.
Definition: double.hpp:53
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.
Definition: expression.hpp:43
This construct is deprecated and no longer supported in the NMODL.
Definition: external.hpp:39
Represents a float variable.
Definition: float.hpp:44
Represents GLOBAL statement in NMODL.
Definition: global.hpp:39
Base class for all identifiers.
Definition: identifier.hpp:41
Represents an INCLUDE statement in NMODL.
Definition: include.hpp:39
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.
Definition: integer.hpp:49
Represents a LAG statement in the mod file.
One equation in a system of equations tha collectively form a LINEAR block.
Represents a one line comment in NMODL.
Represents LINEAR block in the NMODL.
Represent LONGITUDINAL_DIFFUSION statement in NMODL.
Definition: lon_diffuse.hpp:39
Extracts information required for LONGITUDINAL_DIFFUSION for each KINETIC block.
Represent MUTEXLOCK statement in NMODL.
Definition: mutex_lock.hpp:38
Represent MUTEXUNLOCK statement in NMODL.
Represents a name.
Definition: name.hpp:44
Represent NEURON block in the mod file.
Base class for all AST node.
Definition: node.hpp:40
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.
Definition: nonspecific.hpp:39
Represents the coreneuron nrn_state callback function.
Base class for all numbers.
Definition: number.hpp:39
Represents CURIE information in NMODL.
Represents a PARAMETER block in the NMODL.
Definition: param_block.hpp:53
Represents POINTER statement in NMODL.
Definition: pointer.hpp:39
Represents a prime variable (for ODE)
Definition: prime_name.hpp:48
Represents top level AST node for whole NMODL input.
Definition: program.hpp:39
Single variable of type RANDOM.
Definition: random_var.hpp:38
Represents RANDOM statement in NMODL.
Represents RANGE variables statement in NMODL.
Definition: range.hpp:39
Represent solution of a block in the AST.
Represents a STATE block in the NMODL.
Definition: state_block.hpp:52
Represents block encapsulating list of statements.
Represents a string.
Definition: string.hpp:52
Represents SUFFIX statement in NMODL.
Definition: suffix.hpp:38
Represents TABLE statement in NMODL.
Represents THREADSAFE statement in NMODL.
Definition: thread_safe.hpp:38
Statement to indicate a change in timestep in a given block.
Definition: update_dt.hpp:38
Represents USEION statement in NMODL.
Definition: useion.hpp:40
Represents a variable.
Definition: var_name.hpp:43
Represents a C code block.
Definition: verbatim.hpp:38
Represent WATCH statement in NMODL.
Wrap any other expression type.
Helper class for printing AST in JSON form.
Concrete constant visitor for all AST classes.
Visitor for printing AST in JSON format
void visit_wrapped_expression(const ast::WrappedExpression &node) override
visit node of type ast::WrappedExpression
void visit_program(const ast::Program &node) override
visit node of type ast::Program
void visit_ontology_statement(const ast::OntologyStatement &node) override
visit node of type ast::OntologyStatement
void visit_expression_statement(const ast::ExpressionStatement &node) override
visit node of type ast::ExpressionStatement
void visit_var_name(const ast::VarName &node) override
visit node of type ast::VarName
JSONVisitor & expand_keys(bool flag)
void visit_eigen_linear_solver_block(const ast::EigenLinearSolverBlock &node) override
visit node of type ast::EigenLinearSolverBlock
JSONVisitor & compact_json(bool flag)
void visit_nonspecific_cur_var(const ast::NonspecificCurVar &node) override
visit node of type ast::NonspecificCurVar
void visit_assigned_block(const ast::AssignedBlock &node) override
visit node of type ast::AssignedBlock
void visit_external(const ast::External &node) override
visit node of type ast::External
void visit_read_ion_var(const ast::ReadIonVar &node) override
visit node of type ast::ReadIonVar
void visit_define(const ast::Define &node) override
visit node of type ast::Define
void visit_protect_statement(const ast::ProtectStatement &node) override
visit node of type ast::ProtectStatement
void visit_react_var_name(const ast::ReactVarName &node) override
visit node of type ast::ReactVarName
void visit_nrn_state_block(const ast::NrnStateBlock &node) override
visit node of type ast::NrnStateBlock
void visit_linear_block(const ast::LinearBlock &node) override
visit node of type ast::LinearBlock
void visit_include(const ast::Include &node) override
visit node of type ast::Include
void visit_expression(const ast::Expression &node) override
visit node of type ast::Expression
void visit_compartment(const ast::Compartment &node) override
visit node of type ast::Compartment
void visit_global_var(const ast::GlobalVar &node) override
visit node of type ast::GlobalVar
void visit_reaction_operator(const ast::ReactionOperator &node) override
visit node of type ast::ReactionOperator
void visit_mutex_unlock(const ast::MutexUnlock &node) override
visit node of type ast::MutexUnlock
void visit_non_linear_block(const ast::NonLinearBlock &node) override
visit node of type ast::NonLinearBlock
void visit_cvode_block(const ast::CvodeBlock &node) override
visit node of type ast::CvodeBlock
void visit_model(const ast::Model &node) override
visit node of type ast::Model
void visit_block(const ast::Block &node) override
visit node of type ast::Block
void visit_unary_operator(const ast::UnaryOperator &node) override
visit node of type ast::UnaryOperator
void visit_verbatim(const ast::Verbatim &node) override
visit node of type ast::Verbatim
void visit_write_ion_var(const ast::WriteIonVar &node) override
visit node of type ast::WriteIonVar
void visit_boolean(const ast::Boolean &node) override
visit node of type ast::Boolean
void visit_reaction_statement(const ast::ReactionStatement &node) override
visit node of type ast::ReactionStatement
void visit_local_list_statement(const ast::LocalListStatement &node) override
visit node of type ast::LocalListStatement
void visit_kinetic_block(const ast::KineticBlock &node) override
visit node of type ast::KineticBlock
void visit_prime_name(const ast::PrimeName &node) override
visit node of type ast::PrimeName
void visit_ba_block(const ast::BABlock &node) override
visit node of type ast::BABlock
void visit_watch(const ast::Watch &node) override
visit node of type ast::Watch
void visit_procedure_block(const ast::ProcedureBlock &node) override
visit node of type ast::ProcedureBlock
void visit_electrode_current(const ast::ElectrodeCurrent &node) override
visit node of type ast::ElectrodeCurrent
void visit_solve_block(const ast::SolveBlock &node) override
visit node of type ast::SolveBlock
void visit_conserve(const ast::Conserve &node) override
visit node of type ast::Conserve
void visit_for_netcon(const ast::ForNetcon &node) override
visit node of type ast::ForNetcon
void visit_unit_block(const ast::UnitBlock &node) override
visit node of type ast::UnitBlock
void visit_suffix(const ast::Suffix &node) override
visit node of type ast::Suffix
void visit_statement(const ast::Statement &node) override
visit node of type ast::Statement
void visit_identifier(const ast::Identifier &node) override
visit node of type ast::Identifier
void visit_after_block(const ast::AfterBlock &node) override
visit node of type ast::AfterBlock
void visit_mutex_lock(const ast::MutexLock &node) override
visit node of type ast::MutexLock
void visit_longitudinal_diffusion_block(const ast::LongitudinalDiffusionBlock &node) override
visit node of type ast::LongitudinalDiffusionBlock
void visit_valence(const ast::Valence &node) override
visit node of type ast::Valence
void visit_bbcore_pointer_var(const ast::BbcorePointerVar &node) override
visit node of type ast::BbcorePointerVar
void visit_independent_block(const ast::IndependentBlock &node) override
visit node of type ast::IndependentBlock
void visit_table_statement(const ast::TableStatement &node) override
visit node of type ast::TableStatement
void visit_non_lin_equation(const ast::NonLinEquation &node) override
visit node of type ast::NonLinEquation
void visit_param_assign(const ast::ParamAssign &node) override
visit node of type ast::ParamAssign
void visit_ba_block_type(const ast::BABlockType &node) override
visit node of type ast::BABlockType
void visit_eigen_newton_solver_block(const ast::EigenNewtonSolverBlock &node) override
visit node of type ast::EigenNewtonSolverBlock
void visit_lag_statement(const ast::LagStatement &node) override
visit node of type ast::LagStatement
void visit_local_var(const ast::LocalVar &node) override
visit node of type ast::LocalVar
void visit_number(const ast::Number &node) override
visit node of type ast::Number
void visit_diff_eq_expression(const ast::DiffEqExpression &node) override
visit node of type ast::DiffEqExpression
void visit_number_range(const ast::NumberRange &node) override
visit node of type ast::NumberRange
void visit_destructor_block(const ast::DestructorBlock &node) override
visit node of type ast::DestructorBlock
void visit_node(const ast::Node &node) override
visit node of type ast::Node
void visit_constant_block(const ast::ConstantBlock &node) override
visit node of type ast::ConstantBlock
void visit_lon_diffuse(const ast::LonDiffuse &node) override
visit node of type ast::LonDiffuse
void visit_range(const ast::Range &node) override
visit node of type ast::Range
void visit_statement_block(const ast::StatementBlock &node) override
visit node of type ast::StatementBlock
void visit_from_statement(const ast::FromStatement &node) override
visit node of type ast::FromStatement
void visit_derivative_block(const ast::DerivativeBlock &node) override
visit node of type ast::DerivativeBlock
void visit_block_comment(const ast::BlockComment &node) override
visit node of type ast::BlockComment
void visit_line_comment(const ast::LineComment &node) override
visit node of type ast::LineComment
void visit_conductance_hint(const ast::ConductanceHint &node) override
visit node of type ast::ConductanceHint
void visit_watch_statement(const ast::WatchStatement &node) override
visit node of type ast::WatchStatement
void visit_unit_def(const ast::UnitDef &node) override
visit node of type ast::UnitDef
void visit_function_table_block(const ast::FunctionTableBlock &node) override
visit node of type ast::FunctionTableBlock
JSONVisitor(std::string filename)
void visit_unary_expression(const ast::UnaryExpression &node) override
visit node of type ast::UnaryExpression
void visit_solution_expression(const ast::SolutionExpression &node) override
visit node of type ast::SolutionExpression
void visit_limits(const ast::Limits &node) override
visit node of type ast::Limits
void visit_factor_def(const ast::FactorDef &node) override
visit node of type ast::FactorDef
void visit_constant_var(const ast::ConstantVar &node) override
visit node of type ast::ConstantVar
void visit_else_statement(const ast::ElseStatement &node) override
visit node of type ast::ElseStatement
void visit_binary_operator(const ast::BinaryOperator &node) override
visit node of type ast::BinaryOperator
void visit_double_unit(const ast::DoubleUnit &node) override
visit node of type ast::DoubleUnit
void visit_nonspecific(const ast::Nonspecific &node) override
visit node of type ast::Nonspecific
void visit_if_statement(const ast::IfStatement &node) override
visit node of type ast::IfStatement
void visit_indexed_name(const ast::IndexedName &node) override
visit node of type ast::IndexedName
void visit_name(const ast::Name &node) override
visit node of type ast::Name
void visit_float(const ast::Float &node) override
visit node of type ast::Float
void visit_useion(const ast::Useion &node) override
visit node of type ast::Useion
void visit_random_var(const ast::RandomVar &node) override
visit node of type ast::RandomVar
void visit_constructor_block(const ast::ConstructorBlock &node) override
visit node of type ast::ConstructorBlock
void visit_state_block(const ast::StateBlock &node) override
visit node of type ast::StateBlock
void visit_net_receive_block(const ast::NetReceiveBlock &node) override
visit node of type ast::NetReceiveBlock
void visit_lin_equation(const ast::LinEquation &node) override
visit node of type ast::LinEquation
void visit_integer(const ast::Integer &node) override
visit node of type ast::Integer
void visit_initial_block(const ast::InitialBlock &node) override
visit node of type ast::InitialBlock
bool embed_nmodl
true if nmodl corresponding to ast node should be added to json
void visit_function_call(const ast::FunctionCall &node) override
visit node of type ast::FunctionCall
void visit_function_block(const ast::FunctionBlock &node) override
visit node of type ast::FunctionBlock
void visit_unit_state(const ast::UnitState &node) override
visit node of type ast::UnitState
JSONVisitor & add_nmodl(bool flag)
JSONVisitor(std::ostream &ss)
void visit_unit(const ast::Unit &node) override
visit node of type ast::Unit
void visit_before_block(const ast::BeforeBlock &node) override
visit node of type ast::BeforeBlock
void visit_assigned_definition(const ast::AssignedDefinition &node) override
visit node of type ast::AssignedDefinition
std::unique_ptr< printer::JSONPrinter > printer
json printer
void visit_pointer_var(const ast::PointerVar &node) override
visit node of type ast::PointerVar
void visit_paren_expression(const ast::ParenExpression &node) override
visit node of type ast::ParenExpression
void visit_bbcore_pointer(const ast::BbcorePointer &node) override
visit node of type ast::BbcorePointer
void visit_random_var_list(const ast::RandomVarList &node) override
visit node of type ast::RandomVarList
void visit_thread_safe(const ast::ThreadSafe &node) override
visit node of type ast::ThreadSafe
void visit_argument(const ast::Argument &node) override
visit node of type ast::Argument
void visit_electrode_cur_var(const ast::ElectrodeCurVar &node) override
visit node of type ast::ElectrodeCurVar
void visit_breakpoint_block(const ast::BreakpointBlock &node) override
visit node of type ast::BreakpointBlock
void visit_double(const ast::Double &node) override
visit node of type ast::Double
void visit_neuron_block(const ast::NeuronBlock &node) override
visit node of type ast::NeuronBlock
JSONVisitor & write(const ast::Program &program)
void visit_extern_var(const ast::ExternVar &node) override
visit node of type ast::ExternVar
void visit_binary_expression(const ast::BinaryExpression &node) override
visit node of type ast::BinaryExpression
void visit_update_dt(const ast::UpdateDt &node) override
visit node of type ast::UpdateDt
void visit_else_if_statement(const ast::ElseIfStatement &node) override
visit node of type ast::ElseIfStatement
void visit_global(const ast::Global &node) override
visit node of type ast::Global
void visit_range_var(const ast::RangeVar &node) override
visit node of type ast::RangeVar
void visit_while_statement(const ast::WhileStatement &node) override
visit node of type ast::WhileStatement
void visit_string(const ast::String &node) override
visit node of type ast::String
void visit_derivimplicit_callback(const ast::DerivimplicitCallback &node) override
visit node of type ast::DerivimplicitCallback
void visit_param_block(const ast::ParamBlock &node) override
visit node of type ast::ParamBlock
void visit_constant_statement(const ast::ConstantStatement &node) override
visit node of type ast::ConstantStatement
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
Helper class for printing AST in JSON form.
encapsulates code generation backend implementations
Definition: ast_common.hpp:26
static Node * node(Object *)
Definition: netcvode.cpp:291