User Guide
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 #include "ast/ast_decl.hpp"
15 
16 namespace nmodl {
17 /// Implementation of different AST visitors
18 namespace visitor {
19 
20 /**
21  * \defgroup visitor Visitor Implementation
22  * \brief All visitors related implementation details
23  *
24  * \defgroup visitor_classes Visitors
25  * \ingroup visitor
26  * \brief Different visitors implemented in NMODL
27  * \{
28  */
29 
30 /**
31  * \brief Abstract base class for all visitors implementation
32  *
33  * This class defines interface for all concrete visitors implementation.
34  * Note that this class only provides interface that could be implemented
35  * by concrete visitors like ast::AstVisitor.
36  *
37  * \sa ast::AstVisitor
38  */
39 class Visitor {
40  public:
41  virtual ~Visitor() = default;
42 
43  /// visit node of type ast::Node
44  virtual void visit_node(ast::Node& node) = 0;
45  /// visit node of type ast::Statement
46  virtual void visit_statement(ast::Statement& node) = 0;
47  /// visit node of type ast::Expression
48  virtual void visit_expression(ast::Expression& node) = 0;
49  /// visit node of type ast::Block
50  virtual void visit_block(ast::Block& node) = 0;
51  /// visit node of type ast::Identifier
52  virtual void visit_identifier(ast::Identifier& node) = 0;
53  /// visit node of type ast::Number
54  virtual void visit_number(ast::Number& node) = 0;
55  /// visit node of type ast::String
56  virtual void visit_string(ast::String& node) = 0;
57  /// visit node of type ast::Integer
58  virtual void visit_integer(ast::Integer& node) = 0;
59  /// visit node of type ast::Float
60  virtual void visit_float(ast::Float& node) = 0;
61  /// visit node of type ast::Double
62  virtual void visit_double(ast::Double& node) = 0;
63  /// visit node of type ast::Boolean
64  virtual void visit_boolean(ast::Boolean& node) = 0;
65  /// visit node of type ast::Name
66  virtual void visit_name(ast::Name& node) = 0;
67  /// visit node of type ast::PrimeName
68  virtual void visit_prime_name(ast::PrimeName& node) = 0;
69  /// visit node of type ast::IndexedName
70  virtual void visit_indexed_name(ast::IndexedName& node) = 0;
71  /// visit node of type ast::VarName
72  virtual void visit_var_name(ast::VarName& node) = 0;
73  /// visit node of type ast::Argument
74  virtual void visit_argument(ast::Argument& node) = 0;
75  /// visit node of type ast::ReactVarName
76  virtual void visit_react_var_name(ast::ReactVarName& node) = 0;
77  /// visit node of type ast::ReadIonVar
78  virtual void visit_read_ion_var(ast::ReadIonVar& node) = 0;
79  /// visit node of type ast::WriteIonVar
80  virtual void visit_write_ion_var(ast::WriteIonVar& node) = 0;
81  /// visit node of type ast::NonspecificCurVar
82  virtual void visit_nonspecific_cur_var(ast::NonspecificCurVar& node) = 0;
83  /// visit node of type ast::ElectrodeCurVar
84  virtual void visit_electrode_cur_var(ast::ElectrodeCurVar& node) = 0;
85  /// visit node of type ast::RangeVar
86  virtual void visit_range_var(ast::RangeVar& node) = 0;
87  /// visit node of type ast::GlobalVar
88  virtual void visit_global_var(ast::GlobalVar& node) = 0;
89  /// visit node of type ast::PointerVar
90  virtual void visit_pointer_var(ast::PointerVar& node) = 0;
91  /// visit node of type ast::RandomVar
92  virtual void visit_random_var(ast::RandomVar& node) = 0;
93  /// visit node of type ast::BbcorePointerVar
94  virtual void visit_bbcore_pointer_var(ast::BbcorePointerVar& node) = 0;
95  /// visit node of type ast::ExternVar
96  virtual void visit_extern_var(ast::ExternVar& node) = 0;
97  /// visit node of type ast::ParamBlock
98  virtual void visit_param_block(ast::ParamBlock& node) = 0;
99  /// visit node of type ast::IndependentBlock
100  virtual void visit_independent_block(ast::IndependentBlock& node) = 0;
101  /// visit node of type ast::AssignedBlock
102  virtual void visit_assigned_block(ast::AssignedBlock& node) = 0;
103  /// visit node of type ast::StateBlock
104  virtual void visit_state_block(ast::StateBlock& node) = 0;
105  /// visit node of type ast::InitialBlock
106  virtual void visit_initial_block(ast::InitialBlock& node) = 0;
107  /// visit node of type ast::ConstructorBlock
108  virtual void visit_constructor_block(ast::ConstructorBlock& node) = 0;
109  /// visit node of type ast::DestructorBlock
110  virtual void visit_destructor_block(ast::DestructorBlock& node) = 0;
111  /// visit node of type ast::StatementBlock
112  virtual void visit_statement_block(ast::StatementBlock& node) = 0;
113  /// visit node of type ast::DerivativeBlock
114  virtual void visit_derivative_block(ast::DerivativeBlock& node) = 0;
115  /// visit node of type ast::LinearBlock
116  virtual void visit_linear_block(ast::LinearBlock& node) = 0;
117  /// visit node of type ast::NonLinearBlock
118  virtual void visit_non_linear_block(ast::NonLinearBlock& node) = 0;
119  /// visit node of type ast::DiscreteBlock
120  virtual void visit_discrete_block(ast::DiscreteBlock& node) = 0;
121  /// visit node of type ast::FunctionTableBlock
122  virtual void visit_function_table_block(ast::FunctionTableBlock& node) = 0;
123  /// visit node of type ast::FunctionBlock
124  virtual void visit_function_block(ast::FunctionBlock& node) = 0;
125  /// visit node of type ast::ProcedureBlock
126  virtual void visit_procedure_block(ast::ProcedureBlock& node) = 0;
127  /// visit node of type ast::NetReceiveBlock
128  virtual void visit_net_receive_block(ast::NetReceiveBlock& node) = 0;
129  /// visit node of type ast::SolveBlock
130  virtual void visit_solve_block(ast::SolveBlock& node) = 0;
131  /// visit node of type ast::BreakpointBlock
132  virtual void visit_breakpoint_block(ast::BreakpointBlock& node) = 0;
133  /// visit node of type ast::BeforeBlock
134  virtual void visit_before_block(ast::BeforeBlock& node) = 0;
135  /// visit node of type ast::AfterBlock
136  virtual void visit_after_block(ast::AfterBlock& node) = 0;
137  /// visit node of type ast::BABlock
138  virtual void visit_ba_block(ast::BABlock& node) = 0;
139  /// visit node of type ast::ForNetcon
140  virtual void visit_for_netcon(ast::ForNetcon& node) = 0;
141  /// visit node of type ast::KineticBlock
142  virtual void visit_kinetic_block(ast::KineticBlock& node) = 0;
143  /// visit node of type ast::UnitBlock
144  virtual void visit_unit_block(ast::UnitBlock& node) = 0;
145  /// visit node of type ast::ConstantBlock
146  virtual void visit_constant_block(ast::ConstantBlock& node) = 0;
147  /// visit node of type ast::NeuronBlock
148  virtual void visit_neuron_block(ast::NeuronBlock& node) = 0;
149  /// visit node of type ast::Unit
150  virtual void visit_unit(ast::Unit& node) = 0;
151  /// visit node of type ast::DoubleUnit
152  virtual void visit_double_unit(ast::DoubleUnit& node) = 0;
153  /// visit node of type ast::LocalVar
154  virtual void visit_local_var(ast::LocalVar& node) = 0;
155  /// visit node of type ast::Limits
156  virtual void visit_limits(ast::Limits& node) = 0;
157  /// visit node of type ast::NumberRange
158  virtual void visit_number_range(ast::NumberRange& node) = 0;
159  /// visit node of type ast::ConstantVar
160  virtual void visit_constant_var(ast::ConstantVar& node) = 0;
161  /// visit node of type ast::BinaryOperator
162  virtual void visit_binary_operator(ast::BinaryOperator& node) = 0;
163  /// visit node of type ast::UnaryOperator
164  virtual void visit_unary_operator(ast::UnaryOperator& node) = 0;
165  /// visit node of type ast::ReactionOperator
166  virtual void visit_reaction_operator(ast::ReactionOperator& node) = 0;
167  /// visit node of type ast::ParenExpression
168  virtual void visit_paren_expression(ast::ParenExpression& node) = 0;
169  /// visit node of type ast::BinaryExpression
170  virtual void visit_binary_expression(ast::BinaryExpression& node) = 0;
171  /// visit node of type ast::DiffEqExpression
172  virtual void visit_diff_eq_expression(ast::DiffEqExpression& node) = 0;
173  /// visit node of type ast::UnaryExpression
174  virtual void visit_unary_expression(ast::UnaryExpression& node) = 0;
175  /// visit node of type ast::NonLinEquation
176  virtual void visit_non_lin_equation(ast::NonLinEquation& node) = 0;
177  /// visit node of type ast::LinEquation
178  virtual void visit_lin_equation(ast::LinEquation& node) = 0;
179  /// visit node of type ast::FunctionCall
180  virtual void visit_function_call(ast::FunctionCall& node) = 0;
181  /// visit node of type ast::Watch
182  virtual void visit_watch(ast::Watch& node) = 0;
183  /// visit node of type ast::BABlockType
184  virtual void visit_ba_block_type(ast::BABlockType& node) = 0;
185  /// visit node of type ast::UnitDef
186  virtual void visit_unit_def(ast::UnitDef& node) = 0;
187  /// visit node of type ast::FactorDef
188  virtual void visit_factor_def(ast::FactorDef& node) = 0;
189  /// visit node of type ast::Valence
190  virtual void visit_valence(ast::Valence& node) = 0;
191  /// visit node of type ast::UnitState
192  virtual void visit_unit_state(ast::UnitState& node) = 0;
193  /// visit node of type ast::LocalListStatement
194  virtual void visit_local_list_statement(ast::LocalListStatement& node) = 0;
195  /// visit node of type ast::Model
196  virtual void visit_model(ast::Model& node) = 0;
197  /// visit node of type ast::Define
198  virtual void visit_define(ast::Define& node) = 0;
199  /// visit node of type ast::Include
200  virtual void visit_include(ast::Include& node) = 0;
201  /// visit node of type ast::ParamAssign
202  virtual void visit_param_assign(ast::ParamAssign& node) = 0;
203  /// visit node of type ast::AssignedDefinition
204  virtual void visit_assigned_definition(ast::AssignedDefinition& node) = 0;
205  /// visit node of type ast::ConductanceHint
206  virtual void visit_conductance_hint(ast::ConductanceHint& node) = 0;
207  /// visit node of type ast::ExpressionStatement
209  /// visit node of type ast::ProtectStatement
210  virtual void visit_protect_statement(ast::ProtectStatement& node) = 0;
211  /// visit node of type ast::FromStatement
212  virtual void visit_from_statement(ast::FromStatement& node) = 0;
213  /// visit node of type ast::WhileStatement
214  virtual void visit_while_statement(ast::WhileStatement& node) = 0;
215  /// visit node of type ast::IfStatement
216  virtual void visit_if_statement(ast::IfStatement& node) = 0;
217  /// visit node of type ast::ElseIfStatement
218  virtual void visit_else_if_statement(ast::ElseIfStatement& node) = 0;
219  /// visit node of type ast::ElseStatement
220  virtual void visit_else_statement(ast::ElseStatement& node) = 0;
221  /// visit node of type ast::WatchStatement
222  virtual void visit_watch_statement(ast::WatchStatement& node) = 0;
223  /// visit node of type ast::MutexLock
224  virtual void visit_mutex_lock(ast::MutexLock& node) = 0;
225  /// visit node of type ast::MutexUnlock
226  virtual void visit_mutex_unlock(ast::MutexUnlock& node) = 0;
227  /// visit node of type ast::Conserve
228  virtual void visit_conserve(ast::Conserve& node) = 0;
229  /// visit node of type ast::Compartment
230  virtual void visit_compartment(ast::Compartment& node) = 0;
231  /// visit node of type ast::LonDifuse
232  virtual void visit_lon_difuse(ast::LonDifuse& node) = 0;
233  /// visit node of type ast::ReactionStatement
234  virtual void visit_reaction_statement(ast::ReactionStatement& node) = 0;
235  /// visit node of type ast::LagStatement
236  virtual void visit_lag_statement(ast::LagStatement& node) = 0;
237  /// visit node of type ast::ConstantStatement
238  virtual void visit_constant_statement(ast::ConstantStatement& node) = 0;
239  /// visit node of type ast::TableStatement
240  virtual void visit_table_statement(ast::TableStatement& node) = 0;
241  /// visit node of type ast::Suffix
242  virtual void visit_suffix(ast::Suffix& node) = 0;
243  /// visit node of type ast::Useion
244  virtual void visit_useion(ast::Useion& node) = 0;
245  /// visit node of type ast::Nonspecific
246  virtual void visit_nonspecific(ast::Nonspecific& node) = 0;
247  /// visit node of type ast::ElectrodeCurrent
248  virtual void visit_electrode_current(ast::ElectrodeCurrent& node) = 0;
249  /// visit node of type ast::Range
250  virtual void visit_range(ast::Range& node) = 0;
251  /// visit node of type ast::Global
252  virtual void visit_global(ast::Global& node) = 0;
253  /// visit node of type ast::RandomVarList
254  virtual void visit_random_var_list(ast::RandomVarList& node) = 0;
255  /// visit node of type ast::Pointer
256  virtual void visit_pointer(ast::Pointer& node) = 0;
257  /// visit node of type ast::BbcorePointer
258  virtual void visit_bbcore_pointer(ast::BbcorePointer& node) = 0;
259  /// visit node of type ast::External
260  virtual void visit_external(ast::External& node) = 0;
261  /// visit node of type ast::ThreadSafe
262  virtual void visit_thread_safe(ast::ThreadSafe& node) = 0;
263  /// visit node of type ast::Verbatim
264  virtual void visit_verbatim(ast::Verbatim& node) = 0;
265  /// visit node of type ast::LineComment
266  virtual void visit_line_comment(ast::LineComment& node) = 0;
267  /// visit node of type ast::BlockComment
268  virtual void visit_block_comment(ast::BlockComment& node) = 0;
269  /// visit node of type ast::OntologyStatement
270  virtual void visit_ontology_statement(ast::OntologyStatement& node) = 0;
271  /// visit node of type ast::Program
272  virtual void visit_program(ast::Program& node) = 0;
273  /// visit node of type ast::NrnStateBlock
274  virtual void visit_nrn_state_block(ast::NrnStateBlock& node) = 0;
275  /// visit node of type ast::EigenNewtonSolverBlock
277  /// visit node of type ast::EigenLinearSolverBlock
279  /// visit node of type ast::WrappedExpression
280  virtual void visit_wrapped_expression(ast::WrappedExpression& node) = 0;
281  /// visit node of type ast::DerivimplicitCallback
283  /// visit node of type ast::SolutionExpression
284  virtual void visit_solution_expression(ast::SolutionExpression& node) = 0;
285  /// visit node of type ast::UpdateDt
286  virtual void visit_update_dt(ast::UpdateDt& node) = 0;
287 };
288 
289 /**
290  * \brief Abstract base class for all constant visitors implementation
291  *
292  * This class defines interface for all concrete constant visitors implementation.
293  * Note that this class only provides interface that could be implemented
294  * by concrete visitors like ast::ConstAstVisitor.
295  *
296  * \sa ast::ConstAstVisitor
297  */
299  public:
300  virtual ~ConstVisitor() = default;
301 
302  /// visit node of type ast::Node
303  virtual void visit_node(const ast::Node& node) = 0;
304  /// visit node of type ast::Statement
305  virtual void visit_statement(const ast::Statement& node) = 0;
306  /// visit node of type ast::Expression
307  virtual void visit_expression(const ast::Expression& node) = 0;
308  /// visit node of type ast::Block
309  virtual void visit_block(const ast::Block& node) = 0;
310  /// visit node of type ast::Identifier
311  virtual void visit_identifier(const ast::Identifier& node) = 0;
312  /// visit node of type ast::Number
313  virtual void visit_number(const ast::Number& node) = 0;
314  /// visit node of type ast::String
315  virtual void visit_string(const ast::String& node) = 0;
316  /// visit node of type ast::Integer
317  virtual void visit_integer(const ast::Integer& node) = 0;
318  /// visit node of type ast::Float
319  virtual void visit_float(const ast::Float& node) = 0;
320  /// visit node of type ast::Double
321  virtual void visit_double(const ast::Double& node) = 0;
322  /// visit node of type ast::Boolean
323  virtual void visit_boolean(const ast::Boolean& node) = 0;
324  /// visit node of type ast::Name
325  virtual void visit_name(const ast::Name& node) = 0;
326  /// visit node of type ast::PrimeName
327  virtual void visit_prime_name(const ast::PrimeName& node) = 0;
328  /// visit node of type ast::IndexedName
329  virtual void visit_indexed_name(const ast::IndexedName& node) = 0;
330  /// visit node of type ast::VarName
331  virtual void visit_var_name(const ast::VarName& node) = 0;
332  /// visit node of type ast::Argument
333  virtual void visit_argument(const ast::Argument& node) = 0;
334  /// visit node of type ast::ReactVarName
335  virtual void visit_react_var_name(const ast::ReactVarName& node) = 0;
336  /// visit node of type ast::ReadIonVar
337  virtual void visit_read_ion_var(const ast::ReadIonVar& node) = 0;
338  /// visit node of type ast::WriteIonVar
339  virtual void visit_write_ion_var(const ast::WriteIonVar& node) = 0;
340  /// visit node of type ast::NonspecificCurVar
341  virtual void visit_nonspecific_cur_var(const ast::NonspecificCurVar& node) = 0;
342  /// visit node of type ast::ElectrodeCurVar
343  virtual void visit_electrode_cur_var(const ast::ElectrodeCurVar& node) = 0;
344  /// visit node of type ast::RangeVar
345  virtual void visit_range_var(const ast::RangeVar& node) = 0;
346  /// visit node of type ast::GlobalVar
347  virtual void visit_global_var(const ast::GlobalVar& node) = 0;
348  /// visit node of type ast::PointerVar
349  virtual void visit_pointer_var(const ast::PointerVar& node) = 0;
350  /// visit node of type ast::RandomVar
351  virtual void visit_random_var(const ast::RandomVar& node) = 0;
352  /// visit node of type ast::BbcorePointerVar
353  virtual void visit_bbcore_pointer_var(const ast::BbcorePointerVar& node) = 0;
354  /// visit node of type ast::ExternVar
355  virtual void visit_extern_var(const ast::ExternVar& node) = 0;
356  /// visit node of type ast::ParamBlock
357  virtual void visit_param_block(const ast::ParamBlock& node) = 0;
358  /// visit node of type ast::IndependentBlock
359  virtual void visit_independent_block(const ast::IndependentBlock& node) = 0;
360  /// visit node of type ast::AssignedBlock
361  virtual void visit_assigned_block(const ast::AssignedBlock& node) = 0;
362  /// visit node of type ast::StateBlock
363  virtual void visit_state_block(const ast::StateBlock& node) = 0;
364  /// visit node of type ast::InitialBlock
365  virtual void visit_initial_block(const ast::InitialBlock& node) = 0;
366  /// visit node of type ast::ConstructorBlock
367  virtual void visit_constructor_block(const ast::ConstructorBlock& node) = 0;
368  /// visit node of type ast::DestructorBlock
369  virtual void visit_destructor_block(const ast::DestructorBlock& node) = 0;
370  /// visit node of type ast::StatementBlock
371  virtual void visit_statement_block(const ast::StatementBlock& node) = 0;
372  /// visit node of type ast::DerivativeBlock
373  virtual void visit_derivative_block(const ast::DerivativeBlock& node) = 0;
374  /// visit node of type ast::LinearBlock
375  virtual void visit_linear_block(const ast::LinearBlock& node) = 0;
376  /// visit node of type ast::NonLinearBlock
377  virtual void visit_non_linear_block(const ast::NonLinearBlock& node) = 0;
378  /// visit node of type ast::DiscreteBlock
379  virtual void visit_discrete_block(const ast::DiscreteBlock& node) = 0;
380  /// visit node of type ast::FunctionTableBlock
381  virtual void visit_function_table_block(const ast::FunctionTableBlock& node) = 0;
382  /// visit node of type ast::FunctionBlock
383  virtual void visit_function_block(const ast::FunctionBlock& node) = 0;
384  /// visit node of type ast::ProcedureBlock
385  virtual void visit_procedure_block(const ast::ProcedureBlock& node) = 0;
386  /// visit node of type ast::NetReceiveBlock
387  virtual void visit_net_receive_block(const ast::NetReceiveBlock& node) = 0;
388  /// visit node of type ast::SolveBlock
389  virtual void visit_solve_block(const ast::SolveBlock& node) = 0;
390  /// visit node of type ast::BreakpointBlock
391  virtual void visit_breakpoint_block(const ast::BreakpointBlock& node) = 0;
392  /// visit node of type ast::BeforeBlock
393  virtual void visit_before_block(const ast::BeforeBlock& node) = 0;
394  /// visit node of type ast::AfterBlock
395  virtual void visit_after_block(const ast::AfterBlock& node) = 0;
396  /// visit node of type ast::BABlock
397  virtual void visit_ba_block(const ast::BABlock& node) = 0;
398  /// visit node of type ast::ForNetcon
399  virtual void visit_for_netcon(const ast::ForNetcon& node) = 0;
400  /// visit node of type ast::KineticBlock
401  virtual void visit_kinetic_block(const ast::KineticBlock& node) = 0;
402  /// visit node of type ast::UnitBlock
403  virtual void visit_unit_block(const ast::UnitBlock& node) = 0;
404  /// visit node of type ast::ConstantBlock
405  virtual void visit_constant_block(const ast::ConstantBlock& node) = 0;
406  /// visit node of type ast::NeuronBlock
407  virtual void visit_neuron_block(const ast::NeuronBlock& node) = 0;
408  /// visit node of type ast::Unit
409  virtual void visit_unit(const ast::Unit& node) = 0;
410  /// visit node of type ast::DoubleUnit
411  virtual void visit_double_unit(const ast::DoubleUnit& node) = 0;
412  /// visit node of type ast::LocalVar
413  virtual void visit_local_var(const ast::LocalVar& node) = 0;
414  /// visit node of type ast::Limits
415  virtual void visit_limits(const ast::Limits& node) = 0;
416  /// visit node of type ast::NumberRange
417  virtual void visit_number_range(const ast::NumberRange& node) = 0;
418  /// visit node of type ast::ConstantVar
419  virtual void visit_constant_var(const ast::ConstantVar& node) = 0;
420  /// visit node of type ast::BinaryOperator
421  virtual void visit_binary_operator(const ast::BinaryOperator& node) = 0;
422  /// visit node of type ast::UnaryOperator
423  virtual void visit_unary_operator(const ast::UnaryOperator& node) = 0;
424  /// visit node of type ast::ReactionOperator
425  virtual void visit_reaction_operator(const ast::ReactionOperator& node) = 0;
426  /// visit node of type ast::ParenExpression
427  virtual void visit_paren_expression(const ast::ParenExpression& node) = 0;
428  /// visit node of type ast::BinaryExpression
429  virtual void visit_binary_expression(const ast::BinaryExpression& node) = 0;
430  /// visit node of type ast::DiffEqExpression
431  virtual void visit_diff_eq_expression(const ast::DiffEqExpression& node) = 0;
432  /// visit node of type ast::UnaryExpression
433  virtual void visit_unary_expression(const ast::UnaryExpression& node) = 0;
434  /// visit node of type ast::NonLinEquation
435  virtual void visit_non_lin_equation(const ast::NonLinEquation& node) = 0;
436  /// visit node of type ast::LinEquation
437  virtual void visit_lin_equation(const ast::LinEquation& node) = 0;
438  /// visit node of type ast::FunctionCall
439  virtual void visit_function_call(const ast::FunctionCall& node) = 0;
440  /// visit node of type ast::Watch
441  virtual void visit_watch(const ast::Watch& node) = 0;
442  /// visit node of type ast::BABlockType
443  virtual void visit_ba_block_type(const ast::BABlockType& node) = 0;
444  /// visit node of type ast::UnitDef
445  virtual void visit_unit_def(const ast::UnitDef& node) = 0;
446  /// visit node of type ast::FactorDef
447  virtual void visit_factor_def(const ast::FactorDef& node) = 0;
448  /// visit node of type ast::Valence
449  virtual void visit_valence(const ast::Valence& node) = 0;
450  /// visit node of type ast::UnitState
451  virtual void visit_unit_state(const ast::UnitState& node) = 0;
452  /// visit node of type ast::LocalListStatement
453  virtual void visit_local_list_statement(const ast::LocalListStatement& node) = 0;
454  /// visit node of type ast::Model
455  virtual void visit_model(const ast::Model& node) = 0;
456  /// visit node of type ast::Define
457  virtual void visit_define(const ast::Define& node) = 0;
458  /// visit node of type ast::Include
459  virtual void visit_include(const ast::Include& node) = 0;
460  /// visit node of type ast::ParamAssign
461  virtual void visit_param_assign(const ast::ParamAssign& node) = 0;
462  /// visit node of type ast::AssignedDefinition
463  virtual void visit_assigned_definition(const ast::AssignedDefinition& node) = 0;
464  /// visit node of type ast::ConductanceHint
465  virtual void visit_conductance_hint(const ast::ConductanceHint& node) = 0;
466  /// visit node of type ast::ExpressionStatement
467  virtual void visit_expression_statement(const ast::ExpressionStatement& node) = 0;
468  /// visit node of type ast::ProtectStatement
469  virtual void visit_protect_statement(const ast::ProtectStatement& node) = 0;
470  /// visit node of type ast::FromStatement
471  virtual void visit_from_statement(const ast::FromStatement& node) = 0;
472  /// visit node of type ast::WhileStatement
473  virtual void visit_while_statement(const ast::WhileStatement& node) = 0;
474  /// visit node of type ast::IfStatement
475  virtual void visit_if_statement(const ast::IfStatement& node) = 0;
476  /// visit node of type ast::ElseIfStatement
477  virtual void visit_else_if_statement(const ast::ElseIfStatement& node) = 0;
478  /// visit node of type ast::ElseStatement
479  virtual void visit_else_statement(const ast::ElseStatement& node) = 0;
480  /// visit node of type ast::WatchStatement
481  virtual void visit_watch_statement(const ast::WatchStatement& node) = 0;
482  /// visit node of type ast::MutexLock
483  virtual void visit_mutex_lock(const ast::MutexLock& node) = 0;
484  /// visit node of type ast::MutexUnlock
485  virtual void visit_mutex_unlock(const ast::MutexUnlock& node) = 0;
486  /// visit node of type ast::Conserve
487  virtual void visit_conserve(const ast::Conserve& node) = 0;
488  /// visit node of type ast::Compartment
489  virtual void visit_compartment(const ast::Compartment& node) = 0;
490  /// visit node of type ast::LonDifuse
491  virtual void visit_lon_difuse(const ast::LonDifuse& node) = 0;
492  /// visit node of type ast::ReactionStatement
493  virtual void visit_reaction_statement(const ast::ReactionStatement& node) = 0;
494  /// visit node of type ast::LagStatement
495  virtual void visit_lag_statement(const ast::LagStatement& node) = 0;
496  /// visit node of type ast::ConstantStatement
497  virtual void visit_constant_statement(const ast::ConstantStatement& node) = 0;
498  /// visit node of type ast::TableStatement
499  virtual void visit_table_statement(const ast::TableStatement& node) = 0;
500  /// visit node of type ast::Suffix
501  virtual void visit_suffix(const ast::Suffix& node) = 0;
502  /// visit node of type ast::Useion
503  virtual void visit_useion(const ast::Useion& node) = 0;
504  /// visit node of type ast::Nonspecific
505  virtual void visit_nonspecific(const ast::Nonspecific& node) = 0;
506  /// visit node of type ast::ElectrodeCurrent
507  virtual void visit_electrode_current(const ast::ElectrodeCurrent& node) = 0;
508  /// visit node of type ast::Range
509  virtual void visit_range(const ast::Range& node) = 0;
510  /// visit node of type ast::Global
511  virtual void visit_global(const ast::Global& node) = 0;
512  /// visit node of type ast::RandomVarList
513  virtual void visit_random_var_list(const ast::RandomVarList& node) = 0;
514  /// visit node of type ast::Pointer
515  virtual void visit_pointer(const ast::Pointer& node) = 0;
516  /// visit node of type ast::BbcorePointer
517  virtual void visit_bbcore_pointer(const ast::BbcorePointer& node) = 0;
518  /// visit node of type ast::External
519  virtual void visit_external(const ast::External& node) = 0;
520  /// visit node of type ast::ThreadSafe
521  virtual void visit_thread_safe(const ast::ThreadSafe& node) = 0;
522  /// visit node of type ast::Verbatim
523  virtual void visit_verbatim(const ast::Verbatim& node) = 0;
524  /// visit node of type ast::LineComment
525  virtual void visit_line_comment(const ast::LineComment& node) = 0;
526  /// visit node of type ast::BlockComment
527  virtual void visit_block_comment(const ast::BlockComment& node) = 0;
528  /// visit node of type ast::OntologyStatement
529  virtual void visit_ontology_statement(const ast::OntologyStatement& node) = 0;
530  /// visit node of type ast::Program
531  virtual void visit_program(const ast::Program& node) = 0;
532  /// visit node of type ast::NrnStateBlock
533  virtual void visit_nrn_state_block(const ast::NrnStateBlock& node) = 0;
534  /// visit node of type ast::EigenNewtonSolverBlock
535  virtual void visit_eigen_newton_solver_block(const ast::EigenNewtonSolverBlock& node) = 0;
536  /// visit node of type ast::EigenLinearSolverBlock
537  virtual void visit_eigen_linear_solver_block(const ast::EigenLinearSolverBlock& node) = 0;
538  /// visit node of type ast::WrappedExpression
539  virtual void visit_wrapped_expression(const ast::WrappedExpression& node) = 0;
540  /// visit node of type ast::DerivimplicitCallback
541  virtual void visit_derivimplicit_callback(const ast::DerivimplicitCallback& node) = 0;
542  /// visit node of type ast::SolutionExpression
543  virtual void visit_solution_expression(const ast::SolutionExpression& node) = 0;
544  /// visit node of type ast::UpdateDt
545  virtual void visit_update_dt(const ast::UpdateDt& node) = 0;
546 };
547 
548 /** \} */ // end of visitor_classes
549 
550 } // namespace visitor
551 } // namespace nmodl
nmodl::visitor::ConstVisitor::visit_react_var_name
virtual void visit_react_var_name(const ast::ReactVarName &node)=0
visit node of type ast::ReactVarName
nmodl::visitor::ConstVisitor
Abstract base class for all constant visitors implementation.
Definition: visitor.hpp:298
nmodl::ast::LonDifuse
Represent LONGITUDINAL_DIFFUSION statement in NMODL.
Definition: lon_difuse.hpp:39
nmodl::ast::ParamAssign
TODO.
Definition: param_assign.hpp:38
nmodl::ast::BeforeBlock
Represents a BEFORE block in NMODL.
Definition: before_block.hpp:38
nmodl::ast::ConstantVar
Represents a variable in the ast::ConstantBlock.
Definition: constant_var.hpp:38
nmodl::visitor::Visitor::visit_after_block
virtual void visit_after_block(ast::AfterBlock &node)=0
visit node of type ast::AfterBlock
nmodl::visitor::ConstVisitor::visit_eigen_linear_solver_block
virtual void visit_eigen_linear_solver_block(const ast::EigenLinearSolverBlock &node)=0
visit node of type ast::EigenLinearSolverBlock
nmodl::ast::UnaryOperator
TODO.
Definition: unary_operator.hpp:38
nmodl::ast::SolveBlock
TODO.
Definition: solve_block.hpp:38
nmodl::ast::Include
Represents an INCLUDE statement in NMODL.
Definition: include.hpp:39
nmodl::visitor::Visitor::visit_function_block
virtual void visit_function_block(ast::FunctionBlock &node)=0
visit node of type ast::FunctionBlock
nmodl::ast::Unit
TODO.
Definition: unit.hpp:38
nmodl::visitor::ConstVisitor::visit_expression
virtual void visit_expression(const ast::Expression &node)=0
visit node of type ast::Expression
nmodl::visitor::Visitor::visit_binary_operator
virtual void visit_binary_operator(ast::BinaryOperator &node)=0
visit node of type ast::BinaryOperator
nmodl::visitor::ConstVisitor::visit_expression_statement
virtual void visit_expression_statement(const ast::ExpressionStatement &node)=0
visit node of type ast::ExpressionStatement
nmodl::ast::Node
Base class for all AST node.
Definition: node.hpp:40
nmodl::ast::BABlock
Represents a block to be executed before or after another block.
Definition: ba_block.hpp:40
nmodl::visitor::Visitor::visit_table_statement
virtual void visit_table_statement(ast::TableStatement &node)=0
visit node of type ast::TableStatement
nmodl::ast::Verbatim
Represents a C code block.
Definition: verbatim.hpp:38
nmodl::visitor::ConstVisitor::visit_assigned_definition
virtual void visit_assigned_definition(const ast::AssignedDefinition &node)=0
visit node of type ast::AssignedDefinition
nmodl::visitor::Visitor::visit_eigen_linear_solver_block
virtual void visit_eigen_linear_solver_block(ast::EigenLinearSolverBlock &node)=0
visit node of type ast::EigenLinearSolverBlock
nmodl::visitor::ConstVisitor::visit_else_if_statement
virtual void visit_else_if_statement(const ast::ElseIfStatement &node)=0
visit node of type ast::ElseIfStatement
nmodl::visitor::ConstVisitor::visit_after_block
virtual void visit_after_block(const ast::AfterBlock &node)=0
visit node of type ast::AfterBlock
nmodl::visitor::Visitor::visit_argument
virtual void visit_argument(ast::Argument &node)=0
visit node of type ast::Argument
nmodl::visitor::Visitor::visit_mutex_unlock
virtual void visit_mutex_unlock(ast::MutexUnlock &node)=0
visit node of type ast::MutexUnlock
nmodl::ast::Identifier
Base class for all identifiers.
Definition: identifier.hpp:41
nmodl::visitor::Visitor::visit_node
virtual void visit_node(ast::Node &node)=0
visit node of type ast::Node
nmodl::visitor::ConstVisitor::visit_watch_statement
virtual void visit_watch_statement(const ast::WatchStatement &node)=0
visit node of type ast::WatchStatement
nmodl::visitor::ConstVisitor::visit_range
virtual void visit_range(const ast::Range &node)=0
visit node of type ast::Range
nmodl::visitor::Visitor::visit_useion
virtual void visit_useion(ast::Useion &node)=0
visit node of type ast::Useion
nmodl::visitor::ConstVisitor::visit_eigen_newton_solver_block
virtual void visit_eigen_newton_solver_block(const ast::EigenNewtonSolverBlock &node)=0
visit node of type ast::EigenNewtonSolverBlock
nmodl::ast::DiffEqExpression
Represents differential equation in DERIVATIVE block.
Definition: diff_eq_expression.hpp:38
nmodl::visitor::Visitor::visit_constant_block
virtual void visit_constant_block(ast::ConstantBlock &node)=0
visit node of type ast::ConstantBlock
nmodl::visitor::Visitor::visit_pointer
virtual void visit_pointer(ast::Pointer &node)=0
visit node of type ast::Pointer
nmodl::ast::AssignedDefinition
Represents a statement in ASSIGNED or STATE block.
Definition: assigned_definition.hpp:38
nmodl::visitor::Visitor::visit_watch_statement
virtual void visit_watch_statement(ast::WatchStatement &node)=0
visit node of type ast::WatchStatement
nmodl::visitor::Visitor::visit_boolean
virtual void visit_boolean(ast::Boolean &node)=0
visit node of type ast::Boolean
nmodl::visitor::Visitor::visit_electrode_current
virtual void visit_electrode_current(ast::ElectrodeCurrent &node)=0
visit node of type ast::ElectrodeCurrent
nmodl::visitor::Visitor::visit_non_linear_block
virtual void visit_non_linear_block(ast::NonLinearBlock &node)=0
visit node of type ast::NonLinearBlock
nmodl::visitor::Visitor::visit_define
virtual void visit_define(ast::Define &node)=0
visit node of type ast::Define
nmodl::ast::FactorDef
TODO.
Definition: factor_def.hpp:38
nmodl::visitor::ConstVisitor::visit_paren_expression
virtual void visit_paren_expression(const ast::ParenExpression &node)=0
visit node of type ast::ParenExpression
nmodl::ast::Watch
TODO.
Definition: watch.hpp:38
nmodl::visitor::Visitor::visit_assigned_block
virtual void visit_assigned_block(ast::AssignedBlock &node)=0
visit node of type ast::AssignedBlock
nmodl::ast::Double
Represents a double variable.
Definition: double.hpp:53
nmodl::ast::FunctionBlock
TODO.
Definition: function_block.hpp:39
nmodl::ast::Range
Represents RANGE variables statement in NMODL.
Definition: range.hpp:39
nmodl::visitor::Visitor::visit_statement
virtual void visit_statement(ast::Statement &node)=0
visit node of type ast::Statement
nmodl::ast::PointerVar
TODO.
Definition: pointer_var.hpp:38
nmodl::visitor::Visitor::visit_verbatim
virtual void visit_verbatim(ast::Verbatim &node)=0
visit node of type ast::Verbatim
nmodl::visitor::Visitor::visit_non_lin_equation
virtual void visit_non_lin_equation(ast::NonLinEquation &node)=0
visit node of type ast::NonLinEquation
nmodl::ast::NonLinEquation
TODO.
Definition: non_lin_equation.hpp:38
nmodl::ast::RandomVarList
Represents RANDOM statement in NMODL.
Definition: random_var_list.hpp:47
nmodl::ast::BbcorePointerVar
Represent a single variable of type BBCOREPOINTER.
Definition: bbcore_pointer_var.hpp:39
nmodl::visitor::ConstVisitor::visit_statement
virtual void visit_statement(const ast::Statement &node)=0
visit node of type ast::Statement
nmodl::visitor::ConstVisitor::visit_conductance_hint
virtual void visit_conductance_hint(const ast::ConductanceHint &node)=0
visit node of type ast::ConductanceHint
nmodl::visitor::Visitor::visit_expression_statement
virtual void visit_expression_statement(ast::ExpressionStatement &node)=0
visit node of type ast::ExpressionStatement
nmodl::visitor::Visitor::visit_local_var
virtual void visit_local_var(ast::LocalVar &node)=0
visit node of type ast::LocalVar
nmodl::ast::NetReceiveBlock
TODO.
Definition: net_receive_block.hpp:39
nmodl::visitor::ConstVisitor::visit_reaction_statement
virtual void visit_reaction_statement(const ast::ReactionStatement &node)=0
visit node of type ast::ReactionStatement
nmodl::visitor::ConstVisitor::visit_suffix
virtual void visit_suffix(const ast::Suffix &node)=0
visit node of type ast::Suffix
nmodl::ast::FunctionTableBlock
TODO.
Definition: function_table_block.hpp:39
nmodl::ast::Conserve
Represent CONSERVE statement in NMODL.
Definition: conserve.hpp:38
nmodl::ast::DoubleUnit
TODO.
Definition: double_unit.hpp:38
nmodl::ast::UnitBlock
TODO.
Definition: unit_block.hpp:39
nmodl::visitor::ConstVisitor::visit_destructor_block
virtual void visit_destructor_block(const ast::DestructorBlock &node)=0
visit node of type ast::DestructorBlock
nmodl::ast::BlockComment
Represents a multi-line comment in NMODL.
Definition: block_comment.hpp:38
nmodl::visitor::Visitor::visit_mutex_lock
virtual void visit_mutex_lock(ast::MutexLock &node)=0
visit node of type ast::MutexLock
nmodl::visitor::Visitor::visit_breakpoint_block
virtual void visit_breakpoint_block(ast::BreakpointBlock &node)=0
visit node of type ast::BreakpointBlock
nmodl::visitor::ConstVisitor::visit_global
virtual void visit_global(const ast::Global &node)=0
visit node of type ast::Global
nmodl::visitor::ConstVisitor::visit_number_range
virtual void visit_number_range(const ast::NumberRange &node)=0
visit node of type ast::NumberRange
nmodl::ast::ConductanceHint
Represents CONDUCTANCE statement in NMODL.
Definition: conductance_hint.hpp:46
nmodl::visitor::Visitor::visit_else_statement
virtual void visit_else_statement(ast::ElseStatement &node)=0
visit node of type ast::ElseStatement
nmodl::visitor::Visitor::visit_ba_block
virtual void visit_ba_block(ast::BABlock &node)=0
visit node of type ast::BABlock
ast_decl.hpp
THIS FILE IS GENERATED AT BUILD TIME AND SHALL NOT BE EDITED.
nmodl::visitor::Visitor::visit_ontology_statement
virtual void visit_ontology_statement(ast::OntologyStatement &node)=0
visit node of type ast::OntologyStatement
nmodl::visitor::Visitor::visit_conductance_hint
virtual void visit_conductance_hint(ast::ConductanceHint &node)=0
visit node of type ast::ConductanceHint
nmodl::visitor::ConstVisitor::visit_function_call
virtual void visit_function_call(const ast::FunctionCall &node)=0
visit node of type ast::FunctionCall
nmodl::visitor::Visitor::visit_lag_statement
virtual void visit_lag_statement(ast::LagStatement &node)=0
visit node of type ast::LagStatement
nmodl::visitor::ConstVisitor::visit_linear_block
virtual void visit_linear_block(const ast::LinearBlock &node)=0
visit node of type ast::LinearBlock
nmodl::visitor::Visitor::visit_block
virtual void visit_block(ast::Block &node)=0
visit node of type ast::Block
nmodl
encapsulates code generation backend implementations
Definition: ast_common.hpp:26
nmodl::visitor::Visitor::visit_string
virtual void visit_string(ast::String &node)=0
visit node of type ast::String
nmodl::visitor::ConstVisitor::visit_unit_block
virtual void visit_unit_block(const ast::UnitBlock &node)=0
visit node of type ast::UnitBlock
nmodl::visitor::ConstVisitor::visit_for_netcon
virtual void visit_for_netcon(const ast::ForNetcon &node)=0
visit node of type ast::ForNetcon
nmodl::ast::Model
TODO.
Definition: model.hpp:38
nmodl::visitor::Visitor::visit_diff_eq_expression
virtual void visit_diff_eq_expression(ast::DiffEqExpression &node)=0
visit node of type ast::DiffEqExpression
nmodl::ast::ReactVarName
TODO.
Definition: react_var_name.hpp:38
nmodl::visitor::ConstVisitor::visit_mutex_unlock
virtual void visit_mutex_unlock(const ast::MutexUnlock &node)=0
visit node of type ast::MutexUnlock
nmodl::ast::Define
Represents a DEFINE statement in NMODL.
Definition: define.hpp:38
nmodl::visitor::Visitor::visit_discrete_block
virtual void visit_discrete_block(ast::DiscreteBlock &node)=0
visit node of type ast::DiscreteBlock
nmodl::visitor::Visitor::visit_random_var
virtual void visit_random_var(ast::RandomVar &node)=0
visit node of type ast::RandomVar
nmodl::visitor::Visitor::visit_react_var_name
virtual void visit_react_var_name(ast::ReactVarName &node)=0
visit node of type ast::ReactVarName
nmodl::visitor::ConstVisitor::visit_non_linear_block
virtual void visit_non_linear_block(const ast::NonLinearBlock &node)=0
visit node of type ast::NonLinearBlock
nmodl::visitor::Visitor::visit_derivative_block
virtual void visit_derivative_block(ast::DerivativeBlock &node)=0
visit node of type ast::DerivativeBlock
nmodl::visitor::ConstVisitor::visit_conserve
virtual void visit_conserve(const ast::Conserve &node)=0
visit node of type ast::Conserve
nmodl::ast::MutexLock
Represent MUTEXLOCK statement in NMODL.
Definition: mutex_lock.hpp:38
nmodl::visitor::ConstVisitor::visit_unit
virtual void visit_unit(const ast::Unit &node)=0
visit node of type ast::Unit
nmodl::visitor::Visitor::visit_valence
virtual void visit_valence(ast::Valence &node)=0
visit node of type ast::Valence
nmodl::visitor::Visitor::visit_param_block
virtual void visit_param_block(ast::ParamBlock &node)=0
visit node of type ast::ParamBlock
nmodl::visitor::Visitor::visit_nrn_state_block
virtual void visit_nrn_state_block(ast::NrnStateBlock &node)=0
visit node of type ast::NrnStateBlock
nmodl::visitor::Visitor::visit_indexed_name
virtual void visit_indexed_name(ast::IndexedName &node)=0
visit node of type ast::IndexedName
nmodl::visitor::ConstVisitor::visit_local_var
virtual void visit_local_var(const ast::LocalVar &node)=0
visit node of type ast::LocalVar
nmodl::ast::WriteIonVar
TODO.
Definition: write_ion_var.hpp:38
nmodl::visitor::Visitor::visit_nonspecific_cur_var
virtual void visit_nonspecific_cur_var(ast::NonspecificCurVar &node)=0
visit node of type ast::NonspecificCurVar
nmodl::visitor::ConstVisitor::visit_random_var_list
virtual void visit_random_var_list(const ast::RandomVarList &node)=0
visit node of type ast::RandomVarList
nmodl::ast::WhileStatement
TODO.
Definition: while_statement.hpp:38
nmodl::visitor::Visitor::visit_write_ion_var
virtual void visit_write_ion_var(ast::WriteIonVar &node)=0
visit node of type ast::WriteIonVar
nmodl::visitor::Visitor::visit_state_block
virtual void visit_state_block(ast::StateBlock &node)=0
visit node of type ast::StateBlock
nmodl::ast::Valence
TODO.
Definition: valence.hpp:38
nmodl::visitor::ConstVisitor::visit_ba_block_type
virtual void visit_ba_block_type(const ast::BABlockType &node)=0
visit node of type ast::BABlockType
nmodl::visitor::ConstVisitor::visit_function_table_block
virtual void visit_function_table_block(const ast::FunctionTableBlock &node)=0
visit node of type ast::FunctionTableBlock
nmodl::ast::TableStatement
Represents TABLE statement in NMODL.
Definition: table_statement.hpp:39
nmodl::visitor::ConstVisitor::visit_model
virtual void visit_model(const ast::Model &node)=0
visit node of type ast::Model
nmodl::ast::VarName
Represents a variable.
Definition: var_name.hpp:43
nmodl::visitor::ConstVisitor::visit_assigned_block
virtual void visit_assigned_block(const ast::AssignedBlock &node)=0
visit node of type ast::AssignedBlock
nmodl::ast::ExternVar
TODO.
Definition: extern_var.hpp:38
nmodl::visitor::Visitor::visit_number
virtual void visit_number(ast::Number &node)=0
visit node of type ast::Number
nmodl::visitor::ConstVisitor::visit_unit_state
virtual void visit_unit_state(const ast::UnitState &node)=0
visit node of type ast::UnitState
nmodl::visitor::Visitor::visit_wrapped_expression
virtual void visit_wrapped_expression(ast::WrappedExpression &node)=0
visit node of type ast::WrappedExpression
nmodl::ast::Integer
Represents an integer variable.
Definition: integer.hpp:49
nmodl::visitor::Visitor::visit_float
virtual void visit_float(ast::Float &node)=0
visit node of type ast::Float
nmodl::ast::Suffix
Represents SUFFIX statement in NMODL.
Definition: suffix.hpp:38
nmodl::ast::ElseIfStatement
TODO.
Definition: else_if_statement.hpp:38
nmodl::visitor::Visitor::visit_bbcore_pointer
virtual void visit_bbcore_pointer(ast::BbcorePointer &node)=0
visit node of type ast::BbcorePointer
nmodl::ast::RandomVar
Single variable of type RANDOM.
Definition: random_var.hpp:38
nmodl::visitor::Visitor::visit_double
virtual void visit_double(ast::Double &node)=0
visit node of type ast::Double
nmodl::visitor::Visitor::visit_electrode_cur_var
virtual void visit_electrode_cur_var(ast::ElectrodeCurVar &node)=0
visit node of type ast::ElectrodeCurVar
nmodl::visitor::ConstVisitor::visit_derivative_block
virtual void visit_derivative_block(const ast::DerivativeBlock &node)=0
visit node of type ast::DerivativeBlock
nmodl::visitor::Visitor::visit_eigen_newton_solver_block
virtual void visit_eigen_newton_solver_block(ast::EigenNewtonSolverBlock &node)=0
visit node of type ast::EigenNewtonSolverBlock
nmodl::visitor::Visitor::visit_else_if_statement
virtual void visit_else_if_statement(ast::ElseIfStatement &node)=0
visit node of type ast::ElseIfStatement
nmodl::visitor::Visitor::visit_expression
virtual void visit_expression(ast::Expression &node)=0
visit node of type ast::Expression
nmodl::visitor::Visitor::visit_statement_block
virtual void visit_statement_block(ast::StatementBlock &node)=0
visit node of type ast::StatementBlock
nmodl::visitor::ConstVisitor::visit_lon_difuse
virtual void visit_lon_difuse(const ast::LonDifuse &node)=0
visit node of type ast::LonDifuse
nmodl::visitor::ConstVisitor::visit_double
virtual void visit_double(const ast::Double &node)=0
visit node of type ast::Double
nmodl::visitor::ConstVisitor::visit_block
virtual void visit_block(const ast::Block &node)=0
visit node of type ast::Block
nmodl::visitor::ConstVisitor::visit_external
virtual void visit_external(const ast::External &node)=0
visit node of type ast::External
nmodl::ast::AssignedBlock
Represents a ASSIGNED block in the NMODL.
Definition: assigned_block.hpp:54
nmodl::ast::RangeVar
TODO.
Definition: range_var.hpp:38
nmodl::visitor::ConstVisitor::visit_name
virtual void visit_name(const ast::Name &node)=0
visit node of type ast::Name
nmodl::visitor::Visitor::visit_assigned_definition
virtual void visit_assigned_definition(ast::AssignedDefinition &node)=0
visit node of type ast::AssignedDefinition
nmodl::ast::EigenNewtonSolverBlock
Represent newton solver solution block based on Eigen.
Definition: eigen_newton_solver_block.hpp:38
nmodl::visitor::ConstVisitor::visit_protect_statement
virtual void visit_protect_statement(const ast::ProtectStatement &node)=0
visit node of type ast::ProtectStatement
nmodl::visitor::ConstVisitor::visit_read_ion_var
virtual void visit_read_ion_var(const ast::ReadIonVar &node)=0
visit node of type ast::ReadIonVar
nmodl::visitor::ConstVisitor::visit_param_block
virtual void visit_param_block(const ast::ParamBlock &node)=0
visit node of type ast::ParamBlock
nmodl::visitor::ConstVisitor::visit_line_comment
virtual void visit_line_comment(const ast::LineComment &node)=0
visit node of type ast::LineComment
nmodl::visitor::ConstVisitor::visit_thread_safe
virtual void visit_thread_safe(const ast::ThreadSafe &node)=0
visit node of type ast::ThreadSafe
nmodl::visitor::ConstVisitor::visit_bbcore_pointer_var
virtual void visit_bbcore_pointer_var(const ast::BbcorePointerVar &node)=0
visit node of type ast::BbcorePointerVar
nmodl::visitor::Visitor::visit_if_statement
virtual void visit_if_statement(ast::IfStatement &node)=0
visit node of type ast::IfStatement
nmodl::visitor::ConstVisitor::visit_binary_operator
virtual void visit_binary_operator(const ast::BinaryOperator &node)=0
visit node of type ast::BinaryOperator
nmodl::visitor::ConstVisitor::visit_double_unit
virtual void visit_double_unit(const ast::DoubleUnit &node)=0
visit node of type ast::DoubleUnit
nmodl::visitor::Visitor::visit_lon_difuse
virtual void visit_lon_difuse(ast::LonDifuse &node)=0
visit node of type ast::LonDifuse
nmodl::visitor::ConstVisitor::visit_write_ion_var
virtual void visit_write_ion_var(const ast::WriteIonVar &node)=0
visit node of type ast::WriteIonVar
nmodl::ast::ReactionOperator
TODO.
Definition: reaction_operator.hpp:38
nmodl::visitor::ConstVisitor::visit_diff_eq_expression
virtual void visit_diff_eq_expression(const ast::DiffEqExpression &node)=0
visit node of type ast::DiffEqExpression
nmodl::ast::ExpressionStatement
TODO.
Definition: expression_statement.hpp:38
nmodl::visitor::ConstVisitor::visit_initial_block
virtual void visit_initial_block(const ast::InitialBlock &node)=0
visit node of type ast::InitialBlock
nmodl::visitor::Visitor::visit_identifier
virtual void visit_identifier(ast::Identifier &node)=0
visit node of type ast::Identifier
nmodl::ast::Block
Base class for all block scoped nodes.
Definition: block.hpp:41
nmodl::visitor::ConstVisitor::visit_function_block
virtual void visit_function_block(const ast::FunctionBlock &node)=0
visit node of type ast::FunctionBlock
nmodl::visitor::Visitor::visit_binary_expression
virtual void visit_binary_expression(ast::BinaryExpression &node)=0
visit node of type ast::BinaryExpression
nmodl::ast::InitialBlock
Represents a INITIAL block in the NMODL.
Definition: initial_block.hpp:49
nmodl::visitor::Visitor::visit_independent_block
virtual void visit_independent_block(ast::IndependentBlock &node)=0
visit node of type ast::IndependentBlock
nmodl::ast::DiscreteBlock
TODO.
Definition: discrete_block.hpp:38
nmodl::ast::GlobalVar
TODO.
Definition: global_var.hpp:38
nmodl::visitor::Visitor::visit_unit_block
virtual void visit_unit_block(ast::UnitBlock &node)=0
visit node of type ast::UnitBlock
nmodl::visitor::Visitor::visit_conserve
virtual void visit_conserve(ast::Conserve &node)=0
visit node of type ast::Conserve
nmodl::visitor::ConstVisitor::visit_pointer
virtual void visit_pointer(const ast::Pointer &node)=0
visit node of type ast::Pointer
nmodl::ast::LocalListStatement
TODO.
Definition: local_list_statement.hpp:39
nmodl::visitor::ConstVisitor::visit_include
virtual void visit_include(const ast::Include &node)=0
visit node of type ast::Include
nmodl::visitor::ConstVisitor::visit_independent_block
virtual void visit_independent_block(const ast::IndependentBlock &node)=0
visit node of type ast::IndependentBlock
nmodl::visitor::ConstVisitor::visit_integer
virtual void visit_integer(const ast::Integer &node)=0
visit node of type ast::Integer
nmodl::ast::UnitDef
TODO.
Definition: unit_def.hpp:38
nmodl::visitor::Visitor::visit_for_netcon
virtual void visit_for_netcon(ast::ForNetcon &node)=0
visit node of type ast::ForNetcon
nmodl::ast::WatchStatement
Represent WATCH statement in NMODL.
Definition: watch_statement.hpp:39
nmodl::visitor::ConstVisitor::visit_statement_block
virtual void visit_statement_block(const ast::StatementBlock &node)=0
visit node of type ast::StatementBlock
nmodl::visitor::ConstVisitor::visit_constant_block
virtual void visit_constant_block(const ast::ConstantBlock &node)=0
visit node of type ast::ConstantBlock
nmodl::visitor::ConstVisitor::visit_program
virtual void visit_program(const ast::Program &node)=0
visit node of type ast::Program
nmodl::ast::LineComment
Represents a one line comment in NMODL.
Definition: line_comment.hpp:38
nmodl::ast::ReadIonVar
TODO.
Definition: read_ion_var.hpp:38
nmodl::visitor::ConstVisitor::visit_verbatim
virtual void visit_verbatim(const ast::Verbatim &node)=0
visit node of type ast::Verbatim
nmodl::ast::Float
Represents a float variable.
Definition: float.hpp:44
nmodl::ast::BreakpointBlock
Represents a BREAKPOINT block in NMODL.
Definition: breakpoint_block.hpp:53
nmodl::visitor::ConstVisitor::visit_breakpoint_block
virtual void visit_breakpoint_block(const ast::BreakpointBlock &node)=0
visit node of type ast::BreakpointBlock
nmodl::ast::UnitState
TODO.
Definition: unit_state.hpp:38
nmodl::visitor::ConstVisitor::visit_before_block
virtual void visit_before_block(const ast::BeforeBlock &node)=0
visit node of type ast::BeforeBlock
nmodl::visitor::Visitor::visit_while_statement
virtual void visit_while_statement(ast::WhileStatement &node)=0
visit node of type ast::WhileStatement
nmodl::visitor::ConstVisitor::visit_electrode_cur_var
virtual void visit_electrode_cur_var(const ast::ElectrodeCurVar &node)=0
visit node of type ast::ElectrodeCurVar
nmodl::ast::IndexedName
Represents specific element of an array variable.
Definition: indexed_name.hpp:48
nmodl::visitor::Visitor::visit_net_receive_block
virtual void visit_net_receive_block(ast::NetReceiveBlock &node)=0
visit node of type ast::NetReceiveBlock
nmodl::visitor::Visitor::visit_solution_expression
virtual void visit_solution_expression(ast::SolutionExpression &node)=0
visit node of type ast::SolutionExpression
nmodl::visitor::Visitor::visit_derivimplicit_callback
virtual void visit_derivimplicit_callback(ast::DerivimplicitCallback &node)=0
visit node of type ast::DerivimplicitCallback
nmodl::visitor::ConstVisitor::visit_valence
virtual void visit_valence(const ast::Valence &node)=0
visit node of type ast::Valence
nmodl::visitor::Visitor::visit_solve_block
virtual void visit_solve_block(ast::SolveBlock &node)=0
visit node of type ast::SolveBlock
nmodl::ast::FunctionCall
TODO.
Definition: function_call.hpp:38
nmodl::ast::DestructorBlock
Represents a DESTRUCTOR block in the NMODL.
Definition: destructor_block.hpp:53
nmodl::visitor::Visitor
Abstract base class for all visitors implementation.
Definition: visitor.hpp:39
nmodl::visitor::ConstVisitor::visit_var_name
virtual void visit_var_name(const ast::VarName &node)=0
visit node of type ast::VarName
nmodl::visitor::ConstVisitor::visit_param_assign
virtual void visit_param_assign(const ast::ParamAssign &node)=0
visit node of type ast::ParamAssign
nmodl::ast::ProtectStatement
TODO.
Definition: protect_statement.hpp:38
nmodl::ast::ConstructorBlock
Represents a CONSTRUCTOR block in the NMODL.
Definition: constructor_block.hpp:51
nmodl::visitor::Visitor::visit_line_comment
virtual void visit_line_comment(ast::LineComment &node)=0
visit node of type ast::LineComment
nmodl::visitor::ConstVisitor::visit_table_statement
virtual void visit_table_statement(const ast::TableStatement &node)=0
visit node of type ast::TableStatement
nmodl::visitor::ConstVisitor::visit_lin_equation
virtual void visit_lin_equation(const ast::LinEquation &node)=0
visit node of type ast::LinEquation
nmodl::visitor::Visitor::visit_unit_def
virtual void visit_unit_def(ast::UnitDef &node)=0
visit node of type ast::UnitDef
nmodl::visitor::ConstVisitor::visit_lag_statement
virtual void visit_lag_statement(const ast::LagStatement &node)=0
visit node of type ast::LagStatement
nmodl::ast::MutexUnlock
Represent MUTEXUNLOCK statement in NMODL.
Definition: mutex_unlock.hpp:38
nmodl::visitor::ConstVisitor::visit_factor_def
virtual void visit_factor_def(const ast::FactorDef &node)=0
visit node of type ast::FactorDef
nmodl::visitor::Visitor::visit_read_ion_var
virtual void visit_read_ion_var(ast::ReadIonVar &node)=0
visit node of type ast::ReadIonVar
nmodl::visitor::ConstVisitor::visit_unary_operator
virtual void visit_unary_operator(const ast::UnaryOperator &node)=0
visit node of type ast::UnaryOperator
nmodl::visitor::Visitor::visit_factor_def
virtual void visit_factor_def(ast::FactorDef &node)=0
visit node of type ast::FactorDef
nmodl::visitor::Visitor::visit_bbcore_pointer_var
virtual void visit_bbcore_pointer_var(ast::BbcorePointerVar &node)=0
visit node of type ast::BbcorePointerVar
nmodl::ast::Useion
Represents USEION statement in NMODL.
Definition: useion.hpp:40
nmodl::visitor::ConstVisitor::visit_global_var
virtual void visit_global_var(const ast::GlobalVar &node)=0
visit node of type ast::GlobalVar
nmodl::visitor::Visitor::visit_unary_expression
virtual void visit_unary_expression(ast::UnaryExpression &node)=0
visit node of type ast::UnaryExpression
nmodl::visitor::ConstVisitor::visit_pointer_var
virtual void visit_pointer_var(const ast::PointerVar &node)=0
visit node of type ast::PointerVar
nmodl::visitor::Visitor::visit_destructor_block
virtual void visit_destructor_block(ast::DestructorBlock &node)=0
visit node of type ast::DestructorBlock
nmodl::visitor::ConstVisitor::visit_random_var
virtual void visit_random_var(const ast::RandomVar &node)=0
visit node of type ast::RandomVar
nmodl::visitor::Visitor::visit_reaction_operator
virtual void visit_reaction_operator(ast::ReactionOperator &node)=0
visit node of type ast::ReactionOperator
nmodl::visitor::ConstVisitor::visit_identifier
virtual void visit_identifier(const ast::Identifier &node)=0
visit node of type ast::Identifier
nmodl::visitor::ConstVisitor::visit_electrode_current
virtual void visit_electrode_current(const ast::ElectrodeCurrent &node)=0
visit node of type ast::ElectrodeCurrent
nmodl::visitor::Visitor::visit_include
virtual void visit_include(ast::Include &node)=0
visit node of type ast::Include
nmodl::ast::UnaryExpression
TODO.
Definition: unary_expression.hpp:39
nmodl::visitor::ConstVisitor::visit_while_statement
virtual void visit_while_statement(const ast::WhileStatement &node)=0
visit node of type ast::WhileStatement
nmodl::visitor::ConstVisitor::visit_solve_block
virtual void visit_solve_block(const ast::SolveBlock &node)=0
visit node of type ast::SolveBlock
nmodl::visitor::ConstVisitor::visit_net_receive_block
virtual void visit_net_receive_block(const ast::NetReceiveBlock &node)=0
visit node of type ast::NetReceiveBlock
nmodl::visitor::Visitor::visit_extern_var
virtual void visit_extern_var(ast::ExternVar &node)=0
visit node of type ast::ExternVar
nmodl::visitor::ConstVisitor::visit_compartment
virtual void visit_compartment(const ast::Compartment &node)=0
visit node of type ast::Compartment
nmodl::visitor::Visitor::visit_limits
virtual void visit_limits(ast::Limits &node)=0
visit node of type ast::Limits
nmodl::ast::Global
Represents GLOBAL statement in NMODL.
Definition: global.hpp:39
nmodl::visitor::Visitor::visit_name
virtual void visit_name(ast::Name &node)=0
visit node of type ast::Name
nmodl::visitor::ConstVisitor::visit_argument
virtual void visit_argument(const ast::Argument &node)=0
visit node of type ast::Argument
nmodl::visitor::ConstVisitor::visit_watch
virtual void visit_watch(const ast::Watch &node)=0
visit node of type ast::Watch
nmodl::visitor::ConstVisitor::visit_limits
virtual void visit_limits(const ast::Limits &node)=0
visit node of type ast::Limits
nmodl::visitor::Visitor::visit_program
virtual void visit_program(ast::Program &node)=0
visit node of type ast::Program
nmodl::ast::ConstantBlock
Represent CONSTANT block in the mod file.
Definition: constant_block.hpp:50
nmodl::visitor::Visitor::visit_unit_state
virtual void visit_unit_state(ast::UnitState &node)=0
visit node of type ast::UnitState
nmodl::ast::PrimeName
Represents a prime variable (for ODE)
Definition: prime_name.hpp:48
nmodl::visitor::ConstVisitor::visit_procedure_block
virtual void visit_procedure_block(const ast::ProcedureBlock &node)=0
visit node of type ast::ProcedureBlock
nmodl::ast::DerivativeBlock
Represents DERIVATIVE block in the NMODL.
Definition: derivative_block.hpp:49
nmodl::visitor::ConstVisitor::visit_constant_statement
virtual void visit_constant_statement(const ast::ConstantStatement &node)=0
visit node of type ast::ConstantStatement
nmodl::visitor::Visitor::visit_from_statement
virtual void visit_from_statement(ast::FromStatement &node)=0
visit node of type ast::FromStatement
nmodl::visitor::ConstVisitor::visit_non_lin_equation
virtual void visit_non_lin_equation(const ast::NonLinEquation &node)=0
visit node of type ast::NonLinEquation
nmodl::ast::IfStatement
TODO.
Definition: if_statement.hpp:39
nmodl::ast::Boolean
Represents a boolean variable.
Definition: boolean.hpp:42
nmodl::visitor::ConstVisitor::visit_node
virtual void visit_node(const ast::Node &node)=0
visit node of type ast::Node
nmodl::visitor::ConstVisitor::visit_nonspecific
virtual void visit_nonspecific(const ast::Nonspecific &node)=0
visit node of type ast::Nonspecific
nmodl::visitor::Visitor::visit_compartment
virtual void visit_compartment(ast::Compartment &node)=0
visit node of type ast::Compartment
nmodl::visitor::ConstVisitor::visit_mutex_lock
virtual void visit_mutex_lock(const ast::MutexLock &node)=0
visit node of type ast::MutexLock
nmodl::visitor::Visitor::visit_block_comment
virtual void visit_block_comment(ast::BlockComment &node)=0
visit node of type ast::BlockComment
nmodl::ast::KineticBlock
TODO.
Definition: kinetic_block.hpp:39
nmodl::visitor::ConstVisitor::visit_derivimplicit_callback
virtual void visit_derivimplicit_callback(const ast::DerivimplicitCallback &node)=0
visit node of type ast::DerivimplicitCallback
nmodl::visitor::Visitor::visit_suffix
virtual void visit_suffix(ast::Suffix &node)=0
visit node of type ast::Suffix
nmodl::visitor::Visitor::visit_neuron_block
virtual void visit_neuron_block(ast::NeuronBlock &node)=0
visit node of type ast::NeuronBlock
nmodl::ast::EigenLinearSolverBlock
Represent linear solver solution block based on Eigen.
Definition: eigen_linear_solver_block.hpp:38
nmodl::visitor::Visitor::visit_global_var
virtual void visit_global_var(ast::GlobalVar &node)=0
visit node of type ast::GlobalVar
nmodl::ast::LocalVar
TODO.
Definition: local_var.hpp:38
nmodl::ast::LagStatement
Represents a LAG statement in the mod file.
Definition: lag_statement.hpp:47
nmodl::ast::Compartment
Represent COMPARTMENT statement in NMODL.
Definition: compartment.hpp:39
nmodl::visitor::Visitor::visit_number_range
virtual void visit_number_range(ast::NumberRange &node)=0
visit node of type ast::NumberRange
nmodl::visitor::Visitor::~Visitor
virtual ~Visitor()=default
nmodl::visitor::Visitor::visit_constant_var
virtual void visit_constant_var(ast::ConstantVar &node)=0
visit node of type ast::ConstantVar
nmodl::ast::UpdateDt
Statement to indicate a change in timestep in a given block.
Definition: update_dt.hpp:38
nmodl::visitor::Visitor::visit_param_assign
virtual void visit_param_assign(ast::ParamAssign &node)=0
visit node of type ast::ParamAssign
nmodl::visitor::ConstVisitor::visit_neuron_block
virtual void visit_neuron_block(const ast::NeuronBlock &node)=0
visit node of type ast::NeuronBlock
nmodl::visitor::ConstVisitor::visit_bbcore_pointer
virtual void visit_bbcore_pointer(const ast::BbcorePointer &node)=0
visit node of type ast::BbcorePointer
nmodl::visitor::Visitor::visit_prime_name
virtual void visit_prime_name(ast::PrimeName &node)=0
visit node of type ast::PrimeName
nmodl::visitor::ConstVisitor::visit_constructor_block
virtual void visit_constructor_block(const ast::ConstructorBlock &node)=0
visit node of type ast::ConstructorBlock
nmodl::ast::Statement
TODO.
Definition: statement.hpp:38
nmodl::ast::NumberRange
TODO.
Definition: number_range.hpp:38
nmodl::visitor::Visitor::visit_function_table_block
virtual void visit_function_table_block(ast::FunctionTableBlock &node)=0
visit node of type ast::FunctionTableBlock
nmodl::visitor::ConstVisitor::visit_solution_expression
virtual void visit_solution_expression(const ast::SolutionExpression &node)=0
visit node of type ast::SolutionExpression
nmodl::ast::StateBlock
Represents a STATE block in the NMODL.
Definition: state_block.hpp:52
nmodl::visitor::Visitor::visit_local_list_statement
virtual void visit_local_list_statement(ast::LocalListStatement &node)=0
visit node of type ast::LocalListStatement
nmodl::visitor::Visitor::visit_watch
virtual void visit_watch(ast::Watch &node)=0
visit node of type ast::Watch
nmodl::visitor::ConstVisitor::visit_unary_expression
virtual void visit_unary_expression(const ast::UnaryExpression &node)=0
visit node of type ast::UnaryExpression
nmodl::visitor::ConstVisitor::visit_binary_expression
virtual void visit_binary_expression(const ast::BinaryExpression &node)=0
visit node of type ast::BinaryExpression
nmodl::visitor::Visitor::visit_model
virtual void visit_model(ast::Model &node)=0
visit node of type ast::Model
nmodl::ast::NrnStateBlock
Represents the coreneuron nrn_state callback function.
Definition: nrn_state_block.hpp:39
nmodl::ast::StatementBlock
Represents block encapsulating list of statements.
Definition: statement_block.hpp:53
nmodl::visitor::ConstVisitor::visit_float
virtual void visit_float(const ast::Float &node)=0
visit node of type ast::Float
nmodl::visitor::Visitor::visit_range_var
virtual void visit_range_var(ast::RangeVar &node)=0
visit node of type ast::RangeVar
nmodl::visitor::ConstVisitor::visit_nonspecific_cur_var
virtual void visit_nonspecific_cur_var(const ast::NonspecificCurVar &node)=0
visit node of type ast::NonspecificCurVar
nmodl::ast::OntologyStatement
Represents CURIE information in NMODL.
Definition: ontology_statement.hpp:38
nmodl::ast::External
This construct is deprecated and no longer supported in the NMODL.
Definition: external.hpp:39
nmodl::ast::ForNetcon
TODO.
Definition: for_netcon.hpp:39
nmodl::ast::Argument
Represents an argument to functions and procedures.
Definition: argument.hpp:48
nmodl::visitor::ConstVisitor::visit_ontology_statement
virtual void visit_ontology_statement(const ast::OntologyStatement &node)=0
visit node of type ast::OntologyStatement
nmodl::ast::ParenExpression
TODO.
Definition: paren_expression.hpp:38
nmodl::ast::LinearBlock
Represents LINEAR block in the NMODL.
Definition: linear_block.hpp:53
nmodl::visitor::Visitor::visit_pointer_var
virtual void visit_pointer_var(ast::PointerVar &node)=0
visit node of type ast::PointerVar
nmodl::visitor::Visitor::visit_protect_statement
virtual void visit_protect_statement(ast::ProtectStatement &node)=0
visit node of type ast::ProtectStatement
nmodl::visitor::ConstVisitor::visit_define
virtual void visit_define(const ast::Define &node)=0
visit node of type ast::Define
nmodl::ast::DerivimplicitCallback
Represent a callback to NEURON's derivimplicit solver.
Definition: derivimplicit_callback.hpp:38
nmodl::ast::ProcedureBlock
TODO.
Definition: procedure_block.hpp:39
nmodl::visitor::ConstVisitor::visit_string
virtual void visit_string(const ast::String &node)=0
visit node of type ast::String
nmodl::visitor::Visitor::visit_paren_expression
virtual void visit_paren_expression(ast::ParenExpression &node)=0
visit node of type ast::ParenExpression
nmodl::ast::ReactionStatement
TODO.
Definition: reaction_statement.hpp:39
nmodl::ast::ConstantStatement
Represent statement in CONSTANT block of NMODL.
Definition: constant_statement.hpp:40
nmodl::ast::BinaryOperator
Operator used in ast::BinaryExpression.
Definition: binary_operator.hpp:38
nmodl::ast::BABlockType
Type to represent different block types for before/after block.
Definition: ba_block_type.hpp:42
nmodl::visitor::Visitor::visit_kinetic_block
virtual void visit_kinetic_block(ast::KineticBlock &node)=0
visit node of type ast::KineticBlock
nmodl::ast::NonLinearBlock
Represents NONLINEAR block in the NMODL.
Definition: non_linear_block.hpp:50
nmodl::visitor::ConstVisitor::~ConstVisitor
virtual ~ConstVisitor()=default
nmodl::visitor::ConstVisitor::visit_boolean
virtual void visit_boolean(const ast::Boolean &node)=0
visit node of type ast::Boolean
nmodl::visitor::ConstVisitor::visit_kinetic_block
virtual void visit_kinetic_block(const ast::KineticBlock &node)=0
visit node of type ast::KineticBlock
nmodl::ast::SolutionExpression
Represent solution of a block in the AST.
Definition: solution_expression.hpp:38
nmodl::ast::ElectrodeCurVar
TODO.
Definition: electrode_cur_var.hpp:38
nmodl::visitor::Visitor::visit_constructor_block
virtual void visit_constructor_block(ast::ConstructorBlock &node)=0
visit node of type ast::ConstructorBlock
nmodl::visitor::Visitor::visit_reaction_statement
virtual void visit_reaction_statement(ast::ReactionStatement &node)=0
visit node of type ast::ReactionStatement
nmodl::visitor::ConstVisitor::visit_discrete_block
virtual void visit_discrete_block(const ast::DiscreteBlock &node)=0
visit node of type ast::DiscreteBlock
nmodl::visitor::Visitor::visit_procedure_block
virtual void visit_procedure_block(ast::ProcedureBlock &node)=0
visit node of type ast::ProcedureBlock
nmodl::visitor::ConstVisitor::visit_reaction_operator
virtual void visit_reaction_operator(const ast::ReactionOperator &node)=0
visit node of type ast::ReactionOperator
nmodl::ast::LinEquation
TODO.
Definition: lin_equation.hpp:38
nmodl::visitor::Visitor::visit_unary_operator
virtual void visit_unary_operator(ast::UnaryOperator &node)=0
visit node of type ast::UnaryOperator
nmodl::visitor::Visitor::visit_unit
virtual void visit_unit(ast::Unit &node)=0
visit node of type ast::Unit
nmodl::visitor::Visitor::visit_ba_block_type
virtual void visit_ba_block_type(ast::BABlockType &node)=0
visit node of type ast::BABlockType
nmodl::visitor::Visitor::visit_before_block
virtual void visit_before_block(ast::BeforeBlock &node)=0
visit node of type ast::BeforeBlock
nmodl::ast::IndependentBlock
Represents a INDEPENDENT block in the NMODL.
Definition: independent_block.hpp:46
nmodl::visitor::ConstVisitor::visit_block_comment
virtual void visit_block_comment(const ast::BlockComment &node)=0
visit node of type ast::BlockComment
nmodl::visitor::Visitor::visit_double_unit
virtual void visit_double_unit(ast::DoubleUnit &node)=0
visit node of type ast::DoubleUnit
nmodl::visitor::Visitor::visit_constant_statement
virtual void visit_constant_statement(ast::ConstantStatement &node)=0
visit node of type ast::ConstantStatement
nmodl::visitor::ConstVisitor::visit_unit_def
virtual void visit_unit_def(const ast::UnitDef &node)=0
visit node of type ast::UnitDef
nmodl::ast::BbcorePointer
Represents BBCOREPOINTER statement in NMODL.
Definition: bbcore_pointer.hpp:47
nmodl::ast::Nonspecific
Represents NONSPECIFIC_CURRENT variables statement in NMODL.
Definition: nonspecific.hpp:39
nmodl::visitor::ConstVisitor::visit_useion
virtual void visit_useion(const ast::Useion &node)=0
visit node of type ast::Useion
nmodl::visitor::Visitor::visit_linear_block
virtual void visit_linear_block(ast::LinearBlock &node)=0
visit node of type ast::LinearBlock
nmodl::ast::Name
Represents a name.
Definition: name.hpp:44
nmodl::visitor::ConstVisitor::visit_update_dt
virtual void visit_update_dt(const ast::UpdateDt &node)=0
visit node of type ast::UpdateDt
nmodl::ast::Program
Represents top level AST node for whole NMODL input.
Definition: program.hpp:39
nmodl::visitor::ConstVisitor::visit_prime_name
virtual void visit_prime_name(const ast::PrimeName &node)=0
visit node of type ast::PrimeName
nmodl::visitor::Visitor::visit_update_dt
virtual void visit_update_dt(ast::UpdateDt &node)=0
visit node of type ast::UpdateDt
nmodl::ast::AfterBlock
Represents a AFTER block in NMODL.
Definition: after_block.hpp:51
nmodl::ast::Number
Base class for all numbers.
Definition: number.hpp:39
nmodl::ast::ThreadSafe
Represents THREADSAFE statement in NMODL.
Definition: thread_safe.hpp:38
nmodl::ast::Expression
Base class for all expressions in the NMODL.
Definition: expression.hpp:43
nmodl::ast::Pointer
Represents POINTER statement in NMODL.
Definition: pointer.hpp:39
nmodl::visitor::ConstVisitor::visit_state_block
virtual void visit_state_block(const ast::StateBlock &node)=0
visit node of type ast::StateBlock
nmodl::visitor::Visitor::visit_nonspecific
virtual void visit_nonspecific(ast::Nonspecific &node)=0
visit node of type ast::Nonspecific
nmodl::visitor::ConstVisitor::visit_from_statement
virtual void visit_from_statement(const ast::FromStatement &node)=0
visit node of type ast::FromStatement
nmodl::ast::ElseStatement
TODO.
Definition: else_statement.hpp:38
nmodl::ast::ElectrodeCurrent
Represents ELECTRODE_CURRENT variables statement in NMODL.
Definition: electrode_current.hpp:39
nmodl::ast::NeuronBlock
Represent NEURON block in the mod file.
Definition: neuron_block.hpp:53
nmodl::visitor::ConstVisitor::visit_local_list_statement
virtual void visit_local_list_statement(const ast::LocalListStatement &node)=0
visit node of type ast::LocalListStatement
nmodl::visitor::Visitor::visit_initial_block
virtual void visit_initial_block(ast::InitialBlock &node)=0
visit node of type ast::InitialBlock
nmodl::visitor::Visitor::visit_integer
virtual void visit_integer(ast::Integer &node)=0
visit node of type ast::Integer
nmodl::visitor::ConstVisitor::visit_indexed_name
virtual void visit_indexed_name(const ast::IndexedName &node)=0
visit node of type ast::IndexedName
nmodl::visitor::ConstVisitor::visit_range_var
virtual void visit_range_var(const ast::RangeVar &node)=0
visit node of type ast::RangeVar
nmodl::visitor::Visitor::visit_thread_safe
virtual void visit_thread_safe(ast::ThreadSafe &node)=0
visit node of type ast::ThreadSafe
nmodl::ast::BinaryExpression
Represents binary expression in the NMODL.
Definition: binary_expression.hpp:52
nmodl::ast::ParamBlock
Represents a PARAMETER block in the NMODL.
Definition: param_block.hpp:53
nmodl::visitor::Visitor::visit_random_var_list
virtual void visit_random_var_list(ast::RandomVarList &node)=0
visit node of type ast::RandomVarList
nmodl::ast::NonspecificCurVar
TODO.
Definition: nonspecific_cur_var.hpp:38
nmodl::visitor::Visitor::visit_function_call
virtual void visit_function_call(ast::FunctionCall &node)=0
visit node of type ast::FunctionCall
nmodl::visitor::Visitor::visit_global
virtual void visit_global(ast::Global &node)=0
visit node of type ast::Global
nmodl::visitor::ConstVisitor::visit_ba_block
virtual void visit_ba_block(const ast::BABlock &node)=0
visit node of type ast::BABlock
nmodl::visitor::ConstVisitor::visit_number
virtual void visit_number(const ast::Number &node)=0
visit node of type ast::Number
nmodl::visitor::ConstVisitor::visit_wrapped_expression
virtual void visit_wrapped_expression(const ast::WrappedExpression &node)=0
visit node of type ast::WrappedExpression
nmodl::visitor::ConstVisitor::visit_else_statement
virtual void visit_else_statement(const ast::ElseStatement &node)=0
visit node of type ast::ElseStatement
nmodl::visitor::Visitor::visit_range
virtual void visit_range(ast::Range &node)=0
visit node of type ast::Range
nmodl::ast::String
Represents a string.
Definition: string.hpp:52
nmodl::ast::Limits
TODO.
Definition: limits.hpp:38
nmodl::visitor::ConstVisitor::visit_if_statement
virtual void visit_if_statement(const ast::IfStatement &node)=0
visit node of type ast::IfStatement
nmodl::ast::WrappedExpression
Wrap any other expression type.
Definition: wrapped_expression.hpp:38
nmodl::visitor::ConstVisitor::visit_nrn_state_block
virtual void visit_nrn_state_block(const ast::NrnStateBlock &node)=0
visit node of type ast::NrnStateBlock
nmodl::visitor::ConstVisitor::visit_extern_var
virtual void visit_extern_var(const ast::ExternVar &node)=0
visit node of type ast::ExternVar
nmodl::ast::FromStatement
TODO.
Definition: from_statement.hpp:38
nmodl::visitor::ConstVisitor::visit_constant_var
virtual void visit_constant_var(const ast::ConstantVar &node)=0
visit node of type ast::ConstantVar
nmodl::visitor::Visitor::visit_external
virtual void visit_external(ast::External &node)=0
visit node of type ast::External
nmodl::visitor::Visitor::visit_lin_equation
virtual void visit_lin_equation(ast::LinEquation &node)=0
visit node of type ast::LinEquation
nmodl::visitor::Visitor::visit_var_name
virtual void visit_var_name(ast::VarName &node)=0
visit node of type ast::VarName