26 Ast *
Ast::clone()
const {
throw std::logic_error(
"clone not implemented"); }
29 throw std::logic_error(
"get_node_name() not implemented");
33 throw std::runtime_error(
"get_statement_block not implemented");
39 throw std::runtime_error(
"get_symbol_table not implemented");
43 throw std::runtime_error(
"set_symbol_table not implemented");
47 throw std::runtime_error(
"set_name not implemented");
50 void Ast::negate() {
throw std::runtime_error(
"negate not implemented"); }
53 return std::static_pointer_cast<Ast>(shared_from_this());
57 return std::static_pointer_cast<const Ast>(shared_from_this());
357 v.visit_statement(*
this);
361 v.visit_statement(*
this);
379 v.visit_expression(*
this);
383 v.visit_expression(*
this);
401 v.visit_block(*
this);
405 v.visit_block(*
this);
423 v.visit_identifier(*
this);
427 v.visit_identifier(*
this);
445 v.visit_number(*
this);
449 v.visit_number(*
this);
470 v.visit_string(*
this);
474 v.visit_string(*
this);
490 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
528 this->
macro->accept(v);
536 this->
macro->accept(v);
542 v.visit_integer(*
this);
546 v.visit_integer(*
this);
569 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
582 macro->set_parent(
this);
600 macro->set_parent(
this);
608 macro->set_parent(
this);
629 v.visit_float(*
this);
633 v.visit_float(*
this);
649 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
688 v.visit_double(*
this);
692 v.visit_double(*
this);
708 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
747 v.visit_boolean(*
this);
751 v.visit_boolean(*
this);
767 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
798 return value->eval();
839 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
855 value->set_parent(
this);
866 value->set_parent(
this);
874 value->set_parent(
this);
887 return value->eval();
912 v.visit_prime_name(*
this);
916 v.visit_prime_name(*
this);
941 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
954 value->set_parent(
this);
958 order->set_parent(
this);
969 value->set_parent(
this);
977 value->set_parent(
this);
986 order->set_parent(
this);
994 order->set_parent(
this);
1007 return name->get_node_name();
1032 v.visit_indexed_name(*
this);
1036 v.visit_indexed_name(*
this);
1052 this->
name.reset(obj.
name->clone());
1061 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1074 name->set_parent(
this);
1078 length->set_parent(
this);
1089 name->set_parent(
this);
1097 name->set_parent(
this);
1106 length->set_parent(
this);
1114 length->set_parent(
this);
1127 return name->get_node_name();
1142 this->
at->accept(v);
1147 this->
index->accept(v);
1158 this->
at->accept(v);
1163 this->
index->accept(v);
1169 v.visit_var_name(*
this);
1173 v.visit_var_name(*
this);
1189 this->
name.reset(obj.
name->clone());
1193 this->
at.reset(obj.
at->clone());
1202 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1215 name->set_parent(
this);
1219 at->set_parent(
this);
1223 index->set_parent(
this);
1234 name->set_parent(
this);
1242 name->set_parent(
this);
1251 at->set_parent(
this);
1259 at->set_parent(
this);
1268 index->set_parent(
this);
1273 this->index =
index;
1276 index->set_parent(
this);
1289 return name->get_node_name();
1301 this->
unit->accept(
v);
1312 this->
unit->accept(
v);
1318 v.visit_argument(*
this);
1322 v.visit_argument(*
this);
1338 this->
name.reset(obj.
name->clone());
1342 this->
unit.reset(obj.
unit->clone());
1347 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1360 name->set_parent(
this);
1364 unit->set_parent(
this);
1375 name->set_parent(
this);
1383 name->set_parent(
this);
1392 unit->set_parent(
this);
1400 unit->set_parent(
this);
1416 return name->get_node_name();
1422 this->
value->accept(v);
1433 this->
value->accept(v);
1442 v.visit_react_var_name(*
this);
1446 v.visit_react_var_name(*
this);
1466 this->
name.reset(obj.
name->clone());
1471 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1484 value->set_parent(
this);
1488 name->set_parent(
this);
1499 value->set_parent(
this);
1504 this->value =
value;
1507 value->set_parent(
this);
1516 name->set_parent(
this);
1524 name->set_parent(
this);
1537 return name->get_node_name();
1553 v.visit_read_ion_var(*
this);
1557 v.visit_read_ion_var(*
this);
1573 this->
name.reset(obj.
name->clone());
1578 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1591 name->set_parent(
this);
1602 name->set_parent(
this);
1610 name->set_parent(
this);
1623 return name->get_node_name();
1639 v.visit_write_ion_var(*
this);
1643 v.visit_write_ion_var(*
this);
1659 this->
name.reset(obj.
name->clone());
1664 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1677 name->set_parent(
this);
1688 name->set_parent(
this);
1696 name->set_parent(
this);
1709 return name->get_node_name();
1725 v.visit_nonspecific_cur_var(*
this);
1729 v.visit_nonspecific_cur_var(*
this);
1745 this->
name.reset(obj.
name->clone());
1750 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1763 name->set_parent(
this);
1774 name->set_parent(
this);
1782 name->set_parent(
this);
1795 return name->get_node_name();
1811 v.visit_electrode_cur_var(*
this);
1815 v.visit_electrode_cur_var(*
this);
1831 this->
name.reset(obj.
name->clone());
1836 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1849 name->set_parent(
this);
1860 name->set_parent(
this);
1868 name->set_parent(
this);
1881 return name->get_node_name();
1897 v.visit_range_var(*
this);
1901 v.visit_range_var(*
this);
1917 this->
name.reset(obj.
name->clone());
1922 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1935 name->set_parent(
this);
1946 name->set_parent(
this);
1954 name->set_parent(
this);
1967 return name->get_node_name();
1983 v.visit_global_var(*
this);
1987 v.visit_global_var(*
this);
2003 this->
name.reset(obj.
name->clone());
2008 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2021 name->set_parent(
this);
2032 name->set_parent(
this);
2040 name->set_parent(
this);
2053 return name->get_node_name();
2069 v.visit_pointer_var(*
this);
2073 v.visit_pointer_var(*
this);
2089 this->
name.reset(obj.
name->clone());
2094 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2107 name->set_parent(
this);
2118 name->set_parent(
this);
2126 name->set_parent(
this);
2139 return name->get_node_name();
2155 v.visit_random_var(*
this);
2159 v.visit_random_var(*
this);
2175 this->
name.reset(obj.
name->clone());
2180 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2193 name->set_parent(
this);
2204 name->set_parent(
this);
2212 name->set_parent(
this);
2225 return name->get_node_name();
2241 v.visit_bbcore_pointer_var(*
this);
2245 v.visit_bbcore_pointer_var(*
this);
2261 this->
name.reset(obj.
name->clone());
2266 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2279 name->set_parent(
this);
2290 name->set_parent(
this);
2298 name->set_parent(
this);
2311 return name->get_node_name();
2327 v.visit_extern_var(*
this);
2331 v.visit_extern_var(*
this);
2347 this->
name.reset(obj.
name->clone());
2352 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2365 name->set_parent(
this);
2376 name->set_parent(
this);
2384 name->set_parent(
this);
2415 v.visit_param_block(*
this);
2419 v.visit_param_block(*
this);
2432 this->
statements.emplace_back(item->clone());
2437 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2450 item->set_parent(
this);
2462 ii->set_parent(
this);
2470 ii->set_parent(
this);
2501 v.visit_independent_block(*
this);
2505 v.visit_independent_block(*
this);
2518 this->
variables.emplace_back(item->clone());
2523 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2536 item->set_parent(
this);
2548 ii->set_parent(
this);
2556 ii->set_parent(
this);
2574 n->set_parent(
this);
2583 n->set_parent(
this);
2608 while (first != last) {
2611 if (to_be_erased.erase(first->get()) == 0) {
2618 size_t out = last -
result;
2628 n->set_parent(
this);
2637 n->set_parent(
this);
2647 n->set_parent(
this);
2672 v.visit_assigned_block(*
this);
2676 v.visit_assigned_block(*
this);
2694 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2707 item->set_parent(
this);
2719 ii->set_parent(
this);
2727 ii->set_parent(
this);
2758 v.visit_state_block(*
this);
2762 v.visit_state_block(*
this);
2780 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2793 item->set_parent(
this);
2805 ii->set_parent(
this);
2813 ii->set_parent(
this);
2840 v.visit_initial_block(*
this);
2844 v.visit_initial_block(*
this);
2865 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2924 v.visit_constructor_block(*
this);
2928 v.visit_constructor_block(*
this);
2949 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3008 v.visit_destructor_block(*
this);
3012 v.visit_destructor_block(*
this);
3033 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3083 n->set_parent(
this);
3092 n->set_parent(
this);
3117 while (first != last) {
3120 if (to_be_erased.erase(first->get()) == 0) {
3127 size_t out = last -
result;
3137 n->set_parent(
this);
3146 n->set_parent(
this);
3156 n->set_parent(
this);
3181 v.visit_statement_block(*
this);
3185 v.visit_statement_block(*
this);
3198 this->
statements.emplace_back(item->clone());
3203 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3216 item->set_parent(
this);
3228 ii->set_parent(
this);
3236 ii->set_parent(
this);
3249 return name->get_node_name();
3274 v.visit_derivative_block(*
this);
3278 v.visit_derivative_block(*
this);
3294 this->
name.reset(obj.
name->clone());
3303 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3316 name->set_parent(
this);
3331 name->set_parent(
this);
3339 name->set_parent(
this);
3369 return name->get_node_name();
3383 for (
auto& item : this->
solvefor) {
3397 for (
auto& item : this->
solvefor) {
3407 v.visit_linear_block(*
this);
3411 v.visit_linear_block(*
this);
3427 this->
name.reset(obj.
name->clone());
3431 this->
solvefor.emplace_back(item->clone());
3440 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3453 name->set_parent(
this);
3457 item->set_parent(
this);
3473 name->set_parent(
this);
3481 name->set_parent(
this);
3490 ii->set_parent(
this);
3498 ii->set_parent(
this);
3528 return name->get_node_name();
3542 for (
auto& item : this->
solvefor) {
3556 for (
auto& item : this->
solvefor) {
3566 v.visit_non_linear_block(*
this);
3570 v.visit_non_linear_block(*
this);
3586 this->
name.reset(obj.
name->clone());
3590 this->
solvefor.emplace_back(item->clone());
3599 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3612 name->set_parent(
this);
3616 item->set_parent(
this);
3632 name->set_parent(
this);
3640 name->set_parent(
this);
3649 ii->set_parent(
this);
3657 ii->set_parent(
this);
3687 return name->get_node_name();
3712 v.visit_discrete_block(*
this);
3716 v.visit_discrete_block(*
this);
3732 this->
name.reset(obj.
name->clone());
3741 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3754 name->set_parent(
this);
3769 name->set_parent(
this);
3777 name->set_parent(
this);
3807 return name->get_node_name();
3827 this->
unit->accept(
v);
3843 this->
unit->accept(
v);
3849 v.visit_function_table_block(*
this);
3853 v.visit_function_table_block(*
this);
3869 this->
name.reset(obj.
name->clone());
3873 this->
parameters.emplace_back(item->clone());
3877 this->
unit.reset(obj.
unit->clone());
3882 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3895 name->set_parent(
this);
3899 item->set_parent(
this);
3904 unit->set_parent(
this);
3915 name->set_parent(
this);
3923 name->set_parent(
this);
3932 ii->set_parent(
this);
3940 ii->set_parent(
this);
3949 unit->set_parent(
this);
3957 unit->set_parent(
this);
3970 return name->get_node_name();
3993 this->
unit->accept(
v);
4012 this->
unit->accept(
v);
4021 v.visit_function_block(*
this);
4025 v.visit_function_block(*
this);
4041 this->
name.reset(obj.
name->clone());
4045 this->
parameters.emplace_back(item->clone());
4049 this->
unit.reset(obj.
unit->clone());
4058 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4071 name->set_parent(
this);
4075 item->set_parent(
this);
4080 unit->set_parent(
this);
4095 name->set_parent(
this);
4103 name->set_parent(
this);
4112 ii->set_parent(
this);
4120 ii->set_parent(
this);
4129 unit->set_parent(
this);
4137 unit->set_parent(
this);
4167 return name->get_node_name();
4190 this->
unit->accept(
v);
4209 this->
unit->accept(
v);
4218 v.visit_procedure_block(*
this);
4222 v.visit_procedure_block(*
this);
4238 this->
name.reset(obj.
name->clone());
4242 this->
parameters.emplace_back(item->clone());
4246 this->
unit.reset(obj.
unit->clone());
4255 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4268 name->set_parent(
this);
4272 item->set_parent(
this);
4277 unit->set_parent(
this);
4292 name->set_parent(
this);
4300 name->set_parent(
this);
4309 ii->set_parent(
this);
4317 ii->set_parent(
this);
4326 unit->set_parent(
this);
4334 unit->set_parent(
this);
4391 v.visit_net_receive_block(*
this);
4395 v.visit_net_receive_block(*
this);
4411 this->
parameters.emplace_back(item->clone());
4420 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4433 item->set_parent(
this);
4449 ii->set_parent(
this);
4457 ii->set_parent(
this);
4527 v.visit_solve_block(*
this);
4531 v.visit_solve_block(*
this);
4560 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4577 method->set_parent(
this);
4609 method->set_parent(
this);
4617 method->set_parent(
this);
4661 v.visit_breakpoint_block(*
this);
4665 v.visit_breakpoint_block(*
this);
4686 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4745 v.visit_before_block(*
this);
4749 v.visit_before_block(*
this);
4770 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4829 v.visit_after_block(*
this);
4833 v.visit_after_block(*
this);
4854 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4922 v.visit_ba_block(*
this);
4926 v.visit_ba_block(*
this);
4942 this->
type.reset(obj.
type->clone());
4951 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4964 type->set_parent(
this);
4979 type->set_parent(
this);
4987 type->set_parent(
this);
5044 v.visit_for_netcon(*
this);
5048 v.visit_for_netcon(*
this);
5064 this->
parameters.emplace_back(item->clone());
5073 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5086 item->set_parent(
this);
5102 ii->set_parent(
this);
5110 ii->set_parent(
this);
5140 return name->get_node_name();
5154 for (
auto& item : this->
solvefor) {
5168 for (
auto& item : this->
solvefor) {
5178 v.visit_kinetic_block(*
this);
5182 v.visit_kinetic_block(*
this);
5198 this->
name.reset(obj.
name->clone());
5202 this->
solvefor.emplace_back(item->clone());
5211 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5224 name->set_parent(
this);
5228 item->set_parent(
this);
5244 name->set_parent(
this);
5252 name->set_parent(
this);
5261 ii->set_parent(
this);
5269 ii->set_parent(
this);
5317 v.visit_unit_block(*
this);
5321 v.visit_unit_block(*
this);
5339 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5352 item->set_parent(
this);
5364 ii->set_parent(
this);
5372 ii->set_parent(
this);
5403 v.visit_constant_block(*
this);
5407 v.visit_constant_block(*
this);
5420 this->
statements.emplace_back(item->clone());
5425 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5438 item->set_parent(
this);
5450 ii->set_parent(
this);
5458 ii->set_parent(
this);
5485 v.visit_neuron_block(*
this);
5489 v.visit_neuron_block(*
this);
5510 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5555 return name->eval();
5571 v.visit_unit(*
this);
5575 v.visit_unit(*
this);
5591 this->
name.reset(obj.
name->clone());
5596 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5609 name->set_parent(
this);
5620 name->set_parent(
this);
5628 name->set_parent(
this);
5651 this->
unit->accept(
v);
5662 this->
unit->accept(
v);
5668 v.visit_double_unit(*
this);
5672 v.visit_double_unit(*
this);
5692 this->
unit.reset(obj.
unit->clone());
5697 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5710 value->set_parent(
this);
5714 unit->set_parent(
this);
5725 value->set_parent(
this);
5730 this->value =
value;
5733 value->set_parent(
this);
5742 unit->set_parent(
this);
5750 unit->set_parent(
this);
5763 return name->get_node_name();
5779 v.visit_local_var(*
this);
5783 v.visit_local_var(*
this);
5799 this->
name.reset(obj.
name->clone());
5804 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5817 name->set_parent(
this);
5828 name->set_parent(
this);
5836 name->set_parent(
this);
5872 v.visit_limits(*
this);
5876 v.visit_limits(*
this);
5892 this->
min.reset(obj.
min->clone());
5896 this->
max.reset(obj.
max->clone());
5901 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5914 min->set_parent(
this);
5918 max->set_parent(
this);
5929 min->set_parent(
this);
5937 min->set_parent(
this);
5946 max->set_parent(
this);
5954 max->set_parent(
this);
5990 v.visit_number_range(*
this);
5994 v.visit_number_range(*
this);
6010 this->
min.reset(obj.
min->clone());
6014 this->
max.reset(obj.
max->clone());
6019 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6032 min->set_parent(
this);
6036 max->set_parent(
this);
6047 min->set_parent(
this);
6055 min->set_parent(
this);
6064 max->set_parent(
this);
6072 max->set_parent(
this);
6085 return name->get_node_name();
6103 this->
unit->accept(
v);
6117 this->
unit->accept(
v);
6123 v.visit_constant_var(*
this);
6127 v.visit_constant_var(*
this);
6143 this->
name.reset(obj.
name->clone());
6151 this->
unit.reset(obj.
unit->clone());
6156 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6169 name->set_parent(
this);
6173 value->set_parent(
this);
6177 unit->set_parent(
this);
6188 name->set_parent(
this);
6196 name->set_parent(
this);
6205 value->set_parent(
this);
6210 this->value =
value;
6213 value->set_parent(
this);
6222 unit->set_parent(
this);
6230 unit->set_parent(
this);
6251 v.visit_binary_operator(*
this);
6255 v.visit_binary_operator(*
this);
6271 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6290 this->value =
value;
6310 v.visit_unary_operator(*
this);
6314 v.visit_unary_operator(*
this);
6330 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6349 this->value =
value;
6369 v.visit_reaction_operator(*
this);
6373 v.visit_reaction_operator(*
this);
6389 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6408 this->value =
value;
6434 v.visit_paren_expression(*
this);
6438 v.visit_paren_expression(*
this);
6459 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6536 v.visit_binary_expression(*
this);
6540 v.visit_binary_expression(*
this);
6556 this->
lhs.reset(obj.
lhs->clone());
6562 this->
rhs.reset(obj.
rhs->clone());
6567 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6580 lhs->set_parent(
this);
6585 rhs->set_parent(
this);
6596 lhs->set_parent(
this);
6604 lhs->set_parent(
this);
6622 rhs->set_parent(
this);
6630 rhs->set_parent(
this);
6657 v.visit_diff_eq_expression(*
this);
6661 v.visit_diff_eq_expression(*
this);
6682 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6750 v.visit_unary_expression(*
this);
6754 v.visit_unary_expression(*
this);
6777 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6855 v.visit_non_lin_equation(*
this);
6859 v.visit_non_lin_equation(*
this);
6875 this->
lhs.reset(obj.
lhs->clone());
6879 this->
rhs.reset(obj.
rhs->clone());
6884 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6897 lhs->set_parent(
this);
6901 rhs->set_parent(
this);
6912 lhs->set_parent(
this);
6920 lhs->set_parent(
this);
6929 rhs->set_parent(
this);
6937 rhs->set_parent(
this);
6973 v.visit_lin_equation(*
this);
6977 v.visit_lin_equation(*
this);
6993 this->
lhs.reset(obj.
lhs->clone());
6997 this->
rhs.reset(obj.
rhs->clone());
7002 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7015 lhs->set_parent(
this);
7019 rhs->set_parent(
this);
7030 lhs->set_parent(
this);
7038 lhs->set_parent(
this);
7047 rhs->set_parent(
this);
7055 rhs->set_parent(
this);
7068 return name->get_node_name();
7097 v.visit_function_call(*
this);
7101 v.visit_function_call(*
this);
7117 this->
name.reset(obj.
name->clone());
7121 this->
arguments.emplace_back(item->clone());
7126 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7139 name->set_parent(
this);
7143 item->set_parent(
this);
7155 name->set_parent(
this);
7163 name->set_parent(
this);
7172 ii->set_parent(
this);
7180 ii->set_parent(
this);
7216 v.visit_watch(*
this);
7220 v.visit_watch(*
this);
7245 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7262 value->set_parent(
this);
7290 value->set_parent(
this);
7295 this->value =
value;
7298 value->set_parent(
this);
7319 v.visit_ba_block_type(*
this);
7323 v.visit_ba_block_type(*
this);
7339 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7358 this->value =
value;
7370 return unit1->get_node_name();
7395 v.visit_unit_def(*
this);
7399 v.visit_unit_def(*
this);
7424 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7437 unit1->set_parent(
this);
7441 unit2->set_parent(
this);
7452 unit1->set_parent(
this);
7457 this->unit1 =
unit1;
7460 unit1->set_parent(
this);
7469 unit2->set_parent(
this);
7474 this->unit2 =
unit2;
7477 unit2->set_parent(
this);
7490 return name->get_node_name();
7511 this->
value->accept(v);
7519 this->
gt->accept(v);
7524 this->
unit2->accept(v);
7535 this->
value->accept(v);
7543 this->
gt->accept(v);
7548 this->
unit2->accept(v);
7554 v.visit_factor_def(*
this);
7558 v.visit_factor_def(*
this);
7566 FactorDef::FactorDef(std::shared_ptr<Name>
name, std::shared_ptr<Double>
value, std::shared_ptr<Unit> unit1, std::shared_ptr<Boolean> gt, std::shared_ptr<Unit> unit2)
7574 this->
name.reset(obj.
name->clone());
7586 this->
gt.reset(obj.
gt->clone());
7595 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7608 name->set_parent(
this);
7612 value->set_parent(
this);
7616 unit1->set_parent(
this);
7620 gt->set_parent(
this);
7624 unit2->set_parent(
this);
7635 name->set_parent(
this);
7643 name->set_parent(
this);
7652 value->set_parent(
this);
7657 this->value =
value;
7660 value->set_parent(
this);
7669 unit1->set_parent(
this);
7674 this->unit1 =
unit1;
7677 unit1->set_parent(
this);
7686 gt->set_parent(
this);
7694 gt->set_parent(
this);
7703 unit2->set_parent(
this);
7708 this->unit2 =
unit2;
7711 unit2->set_parent(
this);
7747 v.visit_valence(*
this);
7751 v.visit_valence(*
this);
7767 this->
type.reset(obj.
type->clone());
7776 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7789 type->set_parent(
this);
7793 value->set_parent(
this);
7804 type->set_parent(
this);
7812 type->set_parent(
this);
7821 value->set_parent(
this);
7826 this->value =
value;
7829 value->set_parent(
this);
7850 v.visit_unit_state(*
this);
7854 v.visit_unit_state(*
this);
7870 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7889 this->value =
value;
7906 n->set_parent(
this);
7915 n->set_parent(
this);
7940 while (first != last) {
7943 if (to_be_erased.erase(first->get()) == 0) {
7950 size_t out = last -
result;
7960 n->set_parent(
this);
7969 n->set_parent(
this);
7979 n->set_parent(
this);
8004 v.visit_local_list_statement(*
this);
8008 v.visit_local_list_statement(*
this);
8021 this->
variables.emplace_back(item->clone());
8026 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
8039 item->set_parent(
this);
8051 ii->set_parent(
this);
8059 ii->set_parent(
this);
8086 v.visit_model(*
this);
8090 v.visit_model(*
this);
8111 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
8124 title->set_parent(
this);
8135 title->set_parent(
this);
8140 this->title =
title;
8143 title->set_parent(
this);
8156 return name->get_node_name();
8181 v.visit_define(*
this);
8185 v.visit_define(*
this);
8201 this->
name.reset(obj.
name->clone());
8210 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
8223 name->set_parent(
this);
8227 value->set_parent(
this);
8238 name->set_parent(
this);
8246 name->set_parent(
this);
8255 value->set_parent(
this);
8260 this->value =
value;
8263 value->set_parent(
this);
8285 for (
auto& item : this->
blocks) {
8296 for (
auto& item : this->
blocks) {
8303 v.visit_include(*
this);
8307 v.visit_include(*
this);
8326 for (
auto& item : obj.
blocks) {
8327 this->
blocks.emplace_back(item->clone());
8332 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
8348 for (
auto& item :
blocks) {
8349 item->set_parent(
this);
8378 ii->set_parent(
this);
8386 ii->set_parent(
this);
8399 return name->get_node_name();
8417 this->
value->accept(v);
8422 this->
unit->accept(
v);
8427 this->
limit->accept(v);
8438 this->
value->accept(v);
8443 this->
unit->accept(
v);
8448 this->
limit->accept(v);
8454 v.visit_param_assign(*
this);
8458 v.visit_param_assign(*
this);
8474 this->
name.reset(obj.
name->clone());
8482 this->
unit.reset(obj.
unit->clone());
8491 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
8504 name->set_parent(
this);
8508 value->set_parent(
this);
8512 unit->set_parent(
this);
8516 limit->set_parent(
this);
8527 name->set_parent(
this);
8535 name->set_parent(
this);
8544 value->set_parent(
this);
8549 this->value =
value;
8552 value->set_parent(
this);
8561 unit->set_parent(
this);
8569 unit->set_parent(
this);
8578 limit->set_parent(
this);
8583 this->limit =
limit;
8586 limit->set_parent(
this);
8599 return name->get_node_name();
8631 this->
from->accept(v);
8636 this->
to->accept(v);
8641 this->
start->accept(v);
8646 this->
unit->accept(
v);
8667 this->
from->accept(v);
8672 this->
to->accept(v);
8677 this->
start->accept(v);
8682 this->
unit->accept(
v);
8693 v.visit_assigned_definition(*
this);
8697 v.visit_assigned_definition(*
this);
8713 this->
name.reset(obj.
name->clone());
8721 this->
from.reset(obj.
from->clone());
8725 this->
to.reset(obj.
to->clone());
8733 this->
unit.reset(obj.
unit->clone());
8742 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
8755 name->set_parent(
this);
8759 length->set_parent(
this);
8763 from->set_parent(
this);
8767 to->set_parent(
this);
8771 start->set_parent(
this);
8775 unit->set_parent(
this);
8779 abstol->set_parent(
this);
8790 name->set_parent(
this);
8798 name->set_parent(
this);
8807 length->set_parent(
this);
8815 length->set_parent(
this);
8824 from->set_parent(
this);
8832 from->set_parent(
this);
8841 to->set_parent(
this);
8849 to->set_parent(
this);
8858 start->set_parent(
this);
8863 this->start =
start;
8866 start->set_parent(
this);
8875 unit->set_parent(
this);
8883 unit->set_parent(
this);
8892 abstol->set_parent(
this);
8900 abstol->set_parent(
this);
8923 this->
ion->accept(v);
8934 this->
ion->accept(v);
8940 v.visit_conductance_hint(*
this);
8944 v.visit_conductance_hint(*
this);
8964 this->
ion.reset(obj.
ion->clone());
8969 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
8986 ion->set_parent(
this);
9014 ion->set_parent(
this);
9022 ion->set_parent(
this);
9049 v.visit_expression_statement(*
this);
9053 v.visit_expression_statement(*
this);
9074 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
9133 v.visit_protect_statement(*
this);
9137 v.visit_protect_statement(*
this);
9158 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
9203 return name->get_node_name();
9259 v.visit_from_statement(*
this);
9263 v.visit_from_statement(*
this);
9271 FromStatement::FromStatement(std::shared_ptr<Name>
name, std::shared_ptr<Expression> from, std::shared_ptr<Expression> to, std::shared_ptr<Expression> increment, std::shared_ptr<StatementBlock> statement_block)
9279 this->
name.reset(obj.
name->clone());
9283 this->
from.reset(obj.
from->clone());
9287 this->
to.reset(obj.
to->clone());
9300 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
9313 name->set_parent(
this);
9317 from->set_parent(
this);
9321 to->set_parent(
this);
9340 name->set_parent(
this);
9348 name->set_parent(
this);
9357 from->set_parent(
this);
9365 from->set_parent(
this);
9374 to->set_parent(
this);
9382 to->set_parent(
this);
9452 v.visit_while_statement(*
this);
9456 v.visit_while_statement(*
this);
9481 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
9565 for (
auto& item : this->
elseifs) {
9571 this->
elses->accept(v);
9584 for (
auto& item : this->
elseifs) {
9590 this->
elses->accept(v);
9596 v.visit_if_statement(*
this);
9600 v.visit_if_statement(*
this);
9605 : condition(condition), statement_block(statement_block), elseifs(elseifs), elses(elses) {
set_parent_in_children(); }
9609 : condition(condition), statement_block(statement_block), elseifs(elseifs), elses(elses) {
set_parent_in_children(); }
9623 for (
auto& item : obj.
elseifs) {
9624 this->
elseifs.emplace_back(item->clone());
9633 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
9654 item->set_parent(
this);
9659 elses->set_parent(
this);
9704 ii->set_parent(
this);
9712 ii->set_parent(
this);
9721 elses->set_parent(
this);
9726 this->elses =
elses;
9729 elses->set_parent(
this);
9765 v.visit_else_if_statement(*
this);
9769 v.visit_else_if_statement(*
this);
9794 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
9874 v.visit_else_statement(*
this);
9878 v.visit_else_statement(*
this);
9899 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
9949 n->set_parent(
this);
9958 n->set_parent(
this);
9983 while (first != last) {
9986 if (to_be_erased.erase(first->get()) == 0) {
9993 size_t out = last -
result;
10003 n->set_parent(
this);
10012 n->set_parent(
this);
10022 n->set_parent(
this);
10047 v.visit_watch_statement(*
this);
10051 v.visit_watch_statement(*
this);
10064 this->
statements.emplace_back(item->clone());
10069 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
10082 item->set_parent(
this);
10094 ii->set_parent(
this);
10102 ii->set_parent(
this);
10120 v.visit_mutex_lock(*
this);
10124 v.visit_mutex_lock(*
this);
10142 v.visit_mutex_unlock(*
this);
10146 v.visit_mutex_unlock(*
this);
10182 v.visit_conserve(*
this);
10186 v.visit_conserve(*
this);
10206 this->
expr.reset(obj.
expr->clone());
10211 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
10224 react->set_parent(
this);
10228 expr->set_parent(
this);
10239 react->set_parent(
this);
10244 this->react =
react;
10247 react->set_parent(
this);
10256 expr->set_parent(
this);
10264 expr->set_parent(
this);
10294 for (
auto& item : this->
species) {
10310 for (
auto& item : this->
species) {
10317 v.visit_compartment(*
this);
10321 v.visit_compartment(*
this);
10344 for (
auto& item : obj.
species) {
10345 this->
species.emplace_back(item->clone());
10350 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
10367 volume->set_parent(
this);
10371 item->set_parent(
this);
10400 volume->set_parent(
this);
10408 volume->set_parent(
this);
10417 ii->set_parent(
this);
10425 ii->set_parent(
this);
10455 for (
auto& item : this->
species) {
10471 for (
auto& item : this->
species) {
10478 v.visit_lon_diffuse(*
this);
10482 v.visit_lon_diffuse(*
this);
10502 this->
rate.reset(obj.
rate->clone());
10505 for (
auto& item : obj.
species) {
10506 this->
species.emplace_back(item->clone());
10511 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
10528 rate->set_parent(
this);
10532 item->set_parent(
this);
10561 rate->set_parent(
this);
10569 rate->set_parent(
this);
10578 ii->set_parent(
this);
10586 ii->set_parent(
this);
10657 v.visit_reaction_statement(*
this);
10661 v.visit_reaction_statement(*
this);
10666 : reaction1(reaction1), op(op), reaction2(reaction2), expression1(expression1), expression2(expression2) {
set_parent_in_children(); }
10670 : reaction1(reaction1), op(op), reaction2(reaction2), expression1(expression1), expression2(expression2) {
set_parent_in_children(); }
10696 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
10837 v.visit_lag_statement(*
this);
10841 v.visit_lag_statement(*
this);
10857 this->
name.reset(obj.
name->clone());
10866 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
10879 name->set_parent(
this);
10883 byname->set_parent(
this);
10894 name->set_parent(
this);
10902 name->set_parent(
this);
10911 byname->set_parent(
this);
10919 byname->set_parent(
this);
10946 v.visit_constant_statement(*
this);
10950 v.visit_constant_statement(*
this);
10971 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
11074 v.visit_table_statement(*
this);
11078 v.visit_table_statement(*
this);
11083 : table_vars(table_vars), depend_vars(depend_vars), from(from), to(to), with(with) {
set_parent_in_children(); }
11087 : table_vars(table_vars), depend_vars(depend_vars), from(from), to(to), with(with) {
set_parent_in_children(); }
11094 this->
table_vars.emplace_back(item->clone());
11102 this->
from.reset(obj.
from->clone());
11106 this->
to.reset(obj.
to->clone());
11110 this->
with.reset(obj.
with->clone());
11115 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
11128 item->set_parent(
this);
11133 item->set_parent(
this);
11138 from->set_parent(
this);
11142 to->set_parent(
this);
11146 with->set_parent(
this);
11157 ii->set_parent(
this);
11165 ii->set_parent(
this);
11174 ii->set_parent(
this);
11182 ii->set_parent(
this);
11191 from->set_parent(
this);
11199 from->set_parent(
this);
11208 to->set_parent(
this);
11216 to->set_parent(
this);
11225 with->set_parent(
this);
11233 with->set_parent(
this);
11249 return name->get_node_name();
11271 v.visit_suffix(*
this);
11275 v.visit_suffix(*
this);
11291 this->
type.reset(obj.
type->clone());
11295 this->
name.reset(obj.
name->clone());
11300 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
11313 type->set_parent(
this);
11317 name->set_parent(
this);
11328 type->set_parent(
this);
11336 type->set_parent(
this);
11345 name->set_parent(
this);
11353 name->set_parent(
this);
11366 return name->get_node_name();
11386 for (
auto& item : this->
readlist) {
11412 for (
auto& item : this->
readlist) {
11434 v.visit_useion(*
this);
11438 v.visit_useion(*
this);
11454 this->
name.reset(obj.
name->clone());
11458 this->
readlist.emplace_back(item->clone());
11462 this->
writelist.emplace_back(item->clone());
11475 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
11488 name->set_parent(
this);
11492 item->set_parent(
this);
11497 item->set_parent(
this);
11517 name->set_parent(
this);
11525 name->set_parent(
this);
11534 ii->set_parent(
this);
11542 ii->set_parent(
this);
11551 ii->set_parent(
this);
11559 ii->set_parent(
this);
11609 for (
auto& item : this->
currents) {
11617 for (
auto& item : this->
currents) {
11624 v.visit_nonspecific(*
this);
11628 v.visit_nonspecific(*
this);
11641 this->
currents.emplace_back(item->clone());
11646 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
11659 item->set_parent(
this);
11671 ii->set_parent(
this);
11679 ii->set_parent(
this);
11695 for (
auto& item : this->
currents) {
11703 for (
auto& item : this->
currents) {
11710 v.visit_electrode_current(*
this);
11714 v.visit_electrode_current(*
this);
11727 this->
currents.emplace_back(item->clone());
11732 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
11745 item->set_parent(
this);
11757 ii->set_parent(
this);
11765 ii->set_parent(
this);
11796 v.visit_range(*
this);
11800 v.visit_range(*
this);
11813 this->
variables.emplace_back(item->clone());
11818 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
11831 item->set_parent(
this);
11843 ii->set_parent(
this);
11851 ii->set_parent(
this);
11869 n->set_parent(
this);
11878 n->set_parent(
this);
11903 while (first != last) {
11906 if (to_be_erased.erase(first->get()) == 0) {
11913 size_t out = last -
result;
11923 n->set_parent(
this);
11932 n->set_parent(
this);
11942 n->set_parent(
this);
11967 v.visit_global(*
this);
11971 v.visit_global(*
this);
11984 this->
variables.emplace_back(item->clone());
11989 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12002 item->set_parent(
this);
12014 ii->set_parent(
this);
12022 ii->set_parent(
this);
12053 v.visit_random_var_list(*
this);
12057 v.visit_random_var_list(*
this);
12070 this->
variables.emplace_back(item->clone());
12075 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12088 item->set_parent(
this);
12100 ii->set_parent(
this);
12108 ii->set_parent(
this);
12126 n->set_parent(
this);
12135 n->set_parent(
this);
12160 while (first != last) {
12163 if (to_be_erased.erase(first->get()) == 0) {
12170 size_t out = last -
result;
12180 n->set_parent(
this);
12189 n->set_parent(
this);
12199 n->set_parent(
this);
12224 v.visit_pointer(*
this);
12228 v.visit_pointer(*
this);
12241 this->
variables.emplace_back(item->clone());
12246 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12259 item->set_parent(
this);
12271 ii->set_parent(
this);
12279 ii->set_parent(
this);
12310 v.visit_bbcore_pointer(*
this);
12314 v.visit_bbcore_pointer(*
this);
12327 this->
variables.emplace_back(item->clone());
12332 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12345 item->set_parent(
this);
12357 ii->set_parent(
this);
12365 ii->set_parent(
this);
12396 v.visit_external(*
this);
12400 v.visit_external(*
this);
12413 this->
variables.emplace_back(item->clone());
12418 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12431 item->set_parent(
this);
12443 ii->set_parent(
this);
12451 ii->set_parent(
this);
12469 v.visit_thread_safe(*
this);
12473 v.visit_thread_safe(*
this);
12500 v.visit_verbatim(*
this);
12504 v.visit_verbatim(*
this);
12525 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12584 v.visit_line_comment(*
this);
12588 v.visit_line_comment(*
this);
12609 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12668 v.visit_block_comment(*
this);
12672 v.visit_block_comment(*
this);
12693 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12752 v.visit_ontology_statement(*
this);
12756 v.visit_ontology_statement(*
this);
12777 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12827 n->set_parent(
this);
12836 n->set_parent(
this);
12843 return blocks.erase(first);
12848 NodeVector::const_iterator
Program::erase_node(NodeVector::const_iterator first, NodeVector::const_iterator last) {
12849 return blocks.erase(first, last);
12857 auto first =
blocks.begin();
12858 auto last =
blocks.end();
12861 while (first != last) {
12864 if (to_be_erased.erase(first->get()) == 0) {
12871 size_t out = last -
result;
12881 n->set_parent(
this);
12882 return blocks.insert(position,
n);
12890 n->set_parent(
this);
12900 n->set_parent(
this);
12910 for (
auto& item : this->
blocks) {
12918 for (
auto& item : this->
blocks) {
12925 v.visit_program(*
this);
12929 v.visit_program(*
this);
12941 for (
auto& item : obj.
blocks) {
12942 this->
blocks.emplace_back(item->clone());
12947 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12959 for (
auto& item :
blocks) {
12960 item->set_parent(
this);
12972 ii->set_parent(
this);
12980 ii->set_parent(
this);
13011 v.visit_nrn_state_block(*
this);
13015 v.visit_nrn_state_block(*
this);
13033 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
13046 item->set_parent(
this);
13058 ii->set_parent(
this);
13066 ii->set_parent(
this);
13147 v.visit_eigen_newton_solver_block(*
this);
13151 v.visit_eigen_newton_solver_block(*
this);
13156 : n_state_vars(n_state_vars), variable_block(variable_block), initialize_block(initialize_block), setup_x_block(setup_x_block), functor_block(functor_block), update_states_block(update_states_block), finalize_block(finalize_block) {
set_parent_in_children(); }
13159 EigenNewtonSolverBlock::EigenNewtonSolverBlock(std::shared_ptr<Integer> n_state_vars, std::shared_ptr<StatementBlock> variable_block, std::shared_ptr<StatementBlock> initialize_block, std::shared_ptr<StatementBlock> setup_x_block, std::shared_ptr<StatementBlock> functor_block, std::shared_ptr<StatementBlock> update_states_block, std::shared_ptr<StatementBlock> finalize_block)
13160 : n_state_vars(n_state_vars), variable_block(variable_block), initialize_block(initialize_block), setup_x_block(setup_x_block), functor_block(functor_block), update_states_block(update_states_block), finalize_block(finalize_block) {
set_parent_in_children(); }
13196 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
13426 v.visit_eigen_linear_solver_block(*
this);
13430 v.visit_eigen_linear_solver_block(*
this);
13435 : n_state_vars(n_state_vars), variable_block(variable_block), initialize_block(initialize_block), setup_x_block(setup_x_block), update_states_block(update_states_block), finalize_block(finalize_block) {
set_parent_in_children(); }
13438 EigenLinearSolverBlock::EigenLinearSolverBlock(std::shared_ptr<Integer> n_state_vars, std::shared_ptr<StatementBlock> variable_block, std::shared_ptr<StatementBlock> initialize_block, std::shared_ptr<StatementBlock> setup_x_block, std::shared_ptr<StatementBlock> update_states_block, std::shared_ptr<StatementBlock> finalize_block)
13439 : n_state_vars(n_state_vars), variable_block(variable_block), initialize_block(initialize_block), setup_x_block(setup_x_block), update_states_block(update_states_block), finalize_block(finalize_block) {
set_parent_in_children(); }
13471 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
13636 for (
auto& item : this->
conserve) {
13650 for (
auto& item : this->
conserve) {
13657 v.visit_matexp_block(*
this);
13661 v.visit_matexp_block(*
this);
13666 : steadystate(steadystate), jacobian_block(jacobian_block), conserve(conserve) {
set_parent_in_children(); }
13670 : steadystate(steadystate), jacobian_block(jacobian_block), conserve(conserve) {
set_parent_in_children(); }
13685 this->
conserve.emplace_back(item->clone());
13690 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
13711 item->set_parent(
this);
13757 ii->set_parent(
this);
13765 ii->set_parent(
this);
13778 return name->get_node_name();
13821 v.visit_cvode_block(*
this);
13825 v.visit_cvode_block(*
this);
13833 CvodeBlock::CvodeBlock(std::shared_ptr<Name>
name, std::shared_ptr<Integer> n_odes, std::shared_ptr<StatementBlock> non_stiff_block, std::shared_ptr<StatementBlock> stiff_block)
13841 this->
name.reset(obj.
name->clone());
13858 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
13871 name->set_parent(
this);
13875 n_odes->set_parent(
this);
13894 name->set_parent(
this);
13902 name->set_parent(
this);
13911 n_odes->set_parent(
this);
13919 n_odes->set_parent(
this);
13966 return name->get_node_name();
14000 v.visit_longitudinal_diffusion_block(*
this);
14004 v.visit_longitudinal_diffusion_block(*
this);
14009 :
name(
name), longitudinal_diffusion_statements(longitudinal_diffusion_statements), compartment_statements(compartment_statements) {
set_parent_in_children(); }
14013 :
name(
name), longitudinal_diffusion_statements(longitudinal_diffusion_statements), compartment_statements(compartment_statements) {
set_parent_in_children(); }
14020 this->
name.reset(obj.
name->clone());
14033 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
14046 name->set_parent(
this);
14065 name->set_parent(
this);
14073 name->set_parent(
this);
14134 v.visit_wrapped_expression(*
this);
14138 v.visit_wrapped_expression(*
this);
14159 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
14218 v.visit_derivimplicit_callback(*
this);
14222 v.visit_derivimplicit_callback(*
this);
14243 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
14311 v.visit_solution_expression(*
this);
14315 v.visit_solution_expression(*
this);
14340 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
14420 v.visit_update_dt(*
this);
14424 v.visit_update_dt(*
this);
14445 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
14458 value->set_parent(
this);
14469 value->set_parent(
this);
14474 this->value =
value;
14477 value->set_parent(
this);
Auto generated AST classes declaration.
Represent token returned by scanner.
Represents a AFTER block in NMODL.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< BABlock > bablock
Block to be called after.
void set_parent_in_children()
Set this object as parent for all the children.
AfterBlock(BABlock *bablock)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_bablock(std::shared_ptr< BABlock > &&bablock)
Setter for member variable AfterBlock::bablock (rvalue reference)
Represents an argument to functions and procedures.
Argument(Identifier *name, Unit *unit)
std::shared_ptr< Identifier > name
Name of the argument.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< Unit > unit
Unit of the argument.
void set_parent_in_children()
Set this object as parent for all the children.
void set_unit(std::shared_ptr< Unit > &&unit)
Setter for member variable Argument::unit (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
std::string get_node_name() const override
Return name of the node.
void set_name(std::shared_ptr< Identifier > &&name)
Setter for member variable Argument::name (rvalue reference)
Represents a ASSIGNED block in the NMODL.
AssignedDefinitionVector::const_iterator insert_assigned_definition(AssignedDefinitionVector::const_iterator position, const std::shared_ptr< AssignedDefinition > &n)
Insert member to definitions.
void emplace_back_assigned_definition(AssignedDefinition *n)
Add member to definitions by raw pointer.
void set_definitions(AssignedDefinitionVector &&definitions)
Setter for member variable AssignedBlock::definitions (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
void reset_assigned_definition(AssignedDefinitionVector::const_iterator position, AssignedDefinition *n)
Reset member to definitions.
void set_parent_in_children()
Set this object as parent for all the children.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< ModToken > token
token with location information
AssignedDefinitionVector::const_iterator erase_assigned_definition(AssignedDefinitionVector::const_iterator first)
Erase member to definitions.
AssignedDefinitionVector definitions
Vector of assigned variables.
AssignedBlock(const AssignedDefinitionVector &definitions)
Represents a statement in ASSIGNED or STATE block.
void set_start(std::shared_ptr< Number > &&start)
Setter for member variable AssignedDefinition::start (rvalue reference)
void set_to(std::shared_ptr< Number > &&to)
Setter for member variable AssignedDefinition::to (rvalue reference)
std::shared_ptr< Integer > length
Length in case of array.
void set_from(std::shared_ptr< Number > &&from)
Setter for member variable AssignedDefinition::from (rvalue reference)
std::shared_ptr< Unit > unit
TODO.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_abstol(std::shared_ptr< Double > &&abstol)
Setter for member variable AssignedDefinition::abstol (rvalue reference)
void set_length(std::shared_ptr< Integer > &&length)
Setter for member variable AssignedDefinition::length (rvalue reference)
std::shared_ptr< Double > abstol
TODO.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::string get_node_name() const override
Return name of the node.
std::shared_ptr< Number > start
TODO.
std::shared_ptr< Number > to
TODO.
std::shared_ptr< ModToken > token
token with location information
AssignedDefinition(Identifier *name, Integer *length, Number *from, Number *to, Number *start, Unit *unit, Double *abstol)
void set_unit(std::shared_ptr< Unit > &&unit)
Setter for member variable AssignedDefinition::unit (rvalue reference)
void set_name(std::shared_ptr< Identifier > &&name)
Setter for member variable AssignedDefinition::name (rvalue reference)
std::shared_ptr< Identifier > name
Name of the variable.
std::shared_ptr< Number > from
TODO.
void set_parent_in_children()
Set this object as parent for all the children.
Represents a block to be executed before or after another block.
void set_type(std::shared_ptr< BABlockType > &&type)
Setter for member variable BABlock::type (rvalue reference)
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable BABlock::statement_block (rvalue reference)
BABlock(BABlockType *type, StatementBlock *statement_block)
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< BABlockType > type
Type of NMODL block.
void set_parent_in_children()
Set this object as parent for all the children.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Type to represent different block types for before/after block.
void set_value(BAType value)
Setter for member variable BABlockType::value.
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
void visit_children(visitor::Visitor &v) override
visit children i.e.
BABlockType(BAType value)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Represents BBCOREPOINTER statement in NMODL.
std::shared_ptr< ModToken > token
token with location information
void set_variables(BbcorePointerVarVector &&variables)
Setter for member variable BbcorePointer::variables (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
void visit_children(visitor::Visitor &v) override
visit children i.e.
BbcorePointer(const BbcorePointerVarVector &variables)
BbcorePointerVarVector variables
Vector of bbcore pointer variables.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Represent a single variable of type BBCOREPOINTER.
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable BbcorePointerVar::name (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
BbcorePointerVar(Name *name)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Name > name
Variable name.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_name() const override
Return name of the node.
Represents a BEFORE block in NMODL.
std::shared_ptr< BABlock > bablock
Block to be called before.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
void set_bablock(std::shared_ptr< BABlock > &&bablock)
Setter for member variable BeforeBlock::bablock (rvalue reference)
BeforeBlock(BABlock *bablock)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Represents binary expression in the NMODL.
void set_parent_in_children()
Set this object as parent for all the children.
void set_lhs(std::shared_ptr< Expression > &&lhs)
Setter for member variable BinaryExpression::lhs (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
BinaryOperator op
Operator.
std::shared_ptr< Expression > lhs
LHS of the binary expression.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_rhs(std::shared_ptr< Expression > &&rhs)
Setter for member variable BinaryExpression::rhs (rvalue reference)
BinaryExpression(Expression *lhs, const BinaryOperator &op, Expression *rhs)
void set_op(BinaryOperator &&op)
Setter for member variable BinaryExpression::op (rvalue reference)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< Expression > rhs
RHS of the binary expression.
Operator used in ast::BinaryExpression.
void set_value(BinaryOp value)
Setter for member variable BinaryOperator::value.
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
Base class for all block scoped nodes.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represents a boolean variable.
void set_parent_in_children()
Set this object as parent for all the children.
void set_value(int value)
Setter for member variable Boolean::value.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
int value
Value of boolean.
Represents a BREAKPOINT block in NMODL.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable BreakpointBlock::statement_block (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
void visit_children(visitor::Visitor &v) override
visit children i.e.
BreakpointBlock(StatementBlock *statement_block)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_parent_in_children()
Set this object as parent for all the children.
Represent COMPARTMENT statement in NMODL.
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< Name > index_name
Name of the index variable in volume expression.
std::shared_ptr< Expression > volume
The volume of the compartment.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Compartment(Name *index_name, Expression *volume, const NameVector &species)
NameVector species
The names of the species that reside in this compartment.
void set_index_name(std::shared_ptr< Name > &&index_name)
Setter for member variable Compartment::index_name (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
void set_species(NameVector &&species)
Setter for member variable Compartment::species (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_volume(std::shared_ptr< Expression > &&volume)
Setter for member variable Compartment::volume (rvalue reference)
Represents CONDUCTANCE statement in NMODL.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_ion(std::shared_ptr< Name > &&ion)
Setter for member variable ConductanceHint::ion (rvalue reference)
void set_conductance(std::shared_ptr< Name > &&conductance)
Setter for member variable ConductanceHint::conductance (rvalue reference)
std::shared_ptr< Name > ion
Ion name.
void set_parent_in_children()
Set this object as parent for all the children.
ConductanceHint(Name *conductance, Name *ion)
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Name > conductance
Conductance variable.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represent CONSERVE statement in NMODL.
void set_react(std::shared_ptr< Expression > &&react)
Setter for member variable Conserve::react (rvalue reference)
std::shared_ptr< Expression > expr
TODO.
void set_parent_in_children()
Set this object as parent for all the children.
Conserve(Expression *react, Expression *expr)
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Expression > react
TODO.
void set_expr(std::shared_ptr< Expression > &&expr)
Setter for member variable Conserve::expr (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Represent CONSTANT block in the mod file.
ConstantStatementVector statements
Vector of constant statements.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_statements(ConstantStatementVector &&statements)
Setter for member variable ConstantBlock::statements (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
void visit_children(visitor::Visitor &v) override
visit children i.e.
ConstantBlock(const ConstantStatementVector &statements)
void set_parent_in_children()
Set this object as parent for all the children.
Represent statement in CONSTANT block of NMODL.
ConstantStatement(ConstantVar *constant)
void set_constant(std::shared_ptr< ConstantVar > &&constant)
Setter for member variable ConstantStatement::constant (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ConstantVar > constant
single constant variable
Represents a variable in the ast::ConstantBlock.
std::string get_node_name() const override
Return name of the node.
void set_parent_in_children()
Set this object as parent for all the children.
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable ConstantVar::name (rvalue reference)
ConstantVar(Name *name, Number *value, Unit *unit)
std::shared_ptr< Unit > unit
Unit for the variable.
std::shared_ptr< Number > value
Value of the constant.
std::shared_ptr< Name > name
Name of the variable.
void set_value(std::shared_ptr< Number > &&value)
Setter for member variable ConstantVar::value (rvalue reference)
void set_unit(std::shared_ptr< Unit > &&unit)
Setter for member variable ConstantVar::unit (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Represents a CONSTRUCTOR block in the NMODL.
ConstructorBlock(StatementBlock *statement_block)
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable ConstructorBlock::statement_block (rvalue reference)
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< ModToken > token
token with location information
Represents a block used for variable timestep integration (CVODE) of DERIVATIVE blocks.
void set_non_stiff_block(std::shared_ptr< StatementBlock > &&non_stiff_block)
Setter for member variable CvodeBlock::non_stiff_block (rvalue reference)
std::shared_ptr< Name > name
Name of the block.
std::shared_ptr< StatementBlock > stiff_block
Block with statements of the form Dvar = Dvar / (1 - dt * J(f)), used for updating stiff systems.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable CvodeBlock::name (rvalue reference)
std::string get_node_name() const override
Return name of the node.
void set_parent_in_children()
Set this object as parent for all the children.
void set_stiff_block(std::shared_ptr< StatementBlock > &&stiff_block)
Setter for member variable CvodeBlock::stiff_block (rvalue reference)
std::shared_ptr< Integer > n_odes
number of ODEs to solve
CvodeBlock(Name *name, Integer *n_odes, StatementBlock *non_stiff_block, StatementBlock *stiff_block)
std::shared_ptr< StatementBlock > non_stiff_block
Block with statements of the form Dvar = f(var), used for updating non-stiff systems.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
void set_n_odes(std::shared_ptr< Integer > &&n_odes)
Setter for member variable CvodeBlock::n_odes (rvalue reference)
Represents a DEFINE statement in NMODL.
void set_parent_in_children()
Set this object as parent for all the children.
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable Define::name (rvalue reference)
Define(Name *name, Integer *value)
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< ModToken > token
token with location information
std::string get_node_name() const override
Return name of the node.
std::shared_ptr< Integer > value
Value of the macro.
std::shared_ptr< Name > name
Name of the macro.
void set_value(std::shared_ptr< Integer > &&value)
Setter for member variable Define::value (rvalue reference)
Represents DERIVATIVE block in the NMODL.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_name() const override
Return name of the node.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Name > name
Name of the derivative block.
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable DerivativeBlock::statement_block (rvalue reference)
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable DerivativeBlock::name (rvalue reference)
DerivativeBlock(Name *name, StatementBlock *statement_block)
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
Represent a callback to NEURON's derivimplicit solver.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
DerivimplicitCallback(Block *node_to_solve)
std::shared_ptr< Block > node_to_solve
Block to be solved (typically derivative)
void set_node_to_solve(std::shared_ptr< Block > &&node_to_solve)
Setter for member variable DerivimplicitCallback::node_to_solve (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_parent_in_children()
Set this object as parent for all the children.
Represents a DESTRUCTOR block in the NMODL.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
void set_parent_in_children()
Set this object as parent for all the children.
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable DestructorBlock::statement_block (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
DestructorBlock(StatementBlock *statement_block)
std::shared_ptr< ModToken > token
token with location information
Represents differential equation in DERIVATIVE block.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< BinaryExpression > expression
Differential Expression.
void set_parent_in_children()
Set this object as parent for all the children.
DiffEqExpression(BinaryExpression *expression)
void set_expression(std::shared_ptr< BinaryExpression > &&expression)
Setter for member variable DiffEqExpression::expression (rvalue reference)
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable DiscreteBlock::name (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
std::shared_ptr< Name > name
Name of the discrete block.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable DiscreteBlock::statement_block (rvalue reference)
DiscreteBlock(Name *name, StatementBlock *statement_block)
std::string get_node_name() const override
Return name of the node.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Represents a double variable.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_value(std::string value)
Setter for member variable Double::value.
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
std::string value
Value of double.
void set_value(std::shared_ptr< Double > &&value)
Setter for member variable DoubleUnit::value (rvalue reference)
std::shared_ptr< Double > value
TODO.
void set_unit(std::shared_ptr< Unit > &&unit)
Setter for member variable DoubleUnit::unit (rvalue reference)
DoubleUnit(Double *value, Unit *unit)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< Unit > unit
TODO.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represent linear solver solution block based on Eigen.
std::shared_ptr< StatementBlock > setup_x_block
update X from states
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< StatementBlock > initialize_block
Statement block to be executed before calling linear solver.
std::shared_ptr< StatementBlock > finalize_block
Statement block to be executed after calling linear solver.
void set_n_state_vars(std::shared_ptr< Integer > &&n_state_vars)
Setter for member variable EigenLinearSolverBlock::n_state_vars (rvalue reference)
void set_update_states_block(std::shared_ptr< StatementBlock > &&update_states_block)
Setter for member variable EigenLinearSolverBlock::update_states_block (rvalue reference)
std::shared_ptr< StatementBlock > update_states_block
update back states from X
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_setup_x_block(std::shared_ptr< StatementBlock > &&setup_x_block)
Setter for member variable EigenLinearSolverBlock::setup_x_block (rvalue reference)
void set_finalize_block(std::shared_ptr< StatementBlock > &&finalize_block)
Setter for member variable EigenLinearSolverBlock::finalize_block (rvalue reference)
std::shared_ptr< StatementBlock > variable_block
Statements to be declared in the functor.
std::shared_ptr< ModToken > token
token with location information
void set_variable_block(std::shared_ptr< StatementBlock > &&variable_block)
Setter for member variable EigenLinearSolverBlock::variable_block (rvalue reference)
EigenLinearSolverBlock(Integer *n_state_vars, StatementBlock *variable_block, StatementBlock *initialize_block, StatementBlock *setup_x_block, StatementBlock *update_states_block, StatementBlock *finalize_block)
void set_initialize_block(std::shared_ptr< StatementBlock > &&initialize_block)
Setter for member variable EigenLinearSolverBlock::initialize_block (rvalue reference)
std::shared_ptr< Integer > n_state_vars
number of state vars used in solve
Represent newton solver solution block based on Eigen.
std::shared_ptr< StatementBlock > setup_x_block
update X from states
void set_functor_block(std::shared_ptr< StatementBlock > &&functor_block)
Setter for member variable EigenNewtonSolverBlock::functor_block (rvalue reference)
void set_setup_x_block(std::shared_ptr< StatementBlock > &&setup_x_block)
Setter for member variable EigenNewtonSolverBlock::setup_x_block (rvalue reference)
std::shared_ptr< StatementBlock > functor_block
odes as functor for eigen
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< ModToken > token
token with location information
EigenNewtonSolverBlock(Integer *n_state_vars, StatementBlock *variable_block, StatementBlock *initialize_block, StatementBlock *setup_x_block, StatementBlock *functor_block, StatementBlock *update_states_block, StatementBlock *finalize_block)
void set_variable_block(std::shared_ptr< StatementBlock > &&variable_block)
Setter for member variable EigenNewtonSolverBlock::variable_block (rvalue reference)
std::shared_ptr< Integer > n_state_vars
number of state vars used in solve
void set_initialize_block(std::shared_ptr< StatementBlock > &&initialize_block)
Setter for member variable EigenNewtonSolverBlock::initialize_block (rvalue reference)
void set_update_states_block(std::shared_ptr< StatementBlock > &&update_states_block)
Setter for member variable EigenNewtonSolverBlock::update_states_block (rvalue reference)
std::shared_ptr< StatementBlock > finalize_block
Statement block to be executed after calling newton solver.
void set_finalize_block(std::shared_ptr< StatementBlock > &&finalize_block)
Setter for member variable EigenNewtonSolverBlock::finalize_block (rvalue reference)
std::shared_ptr< StatementBlock > initialize_block
Statement block to be executed before calling newton solver.
void set_parent_in_children()
Set this object as parent for all the children.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< StatementBlock > variable_block
Statements to be declared in the functor.
void set_n_state_vars(std::shared_ptr< Integer > &&n_state_vars)
Setter for member variable EigenNewtonSolverBlock::n_state_vars (rvalue reference)
std::shared_ptr< StatementBlock > update_states_block
update back states from X
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Name > name
TODO.
std::string get_node_name() const override
Return name of the node.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable ElectrodeCurVar::name (rvalue reference)
ElectrodeCurVar(Name *name)
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represents ELECTRODE_CURRENT variables statement in NMODL.
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
ElectrodeCurVarVector currents
Vector of electrode current variables.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_currents(ElectrodeCurVarVector &¤ts)
Setter for member variable ElectrodeCurrent::currents (rvalue reference)
ElectrodeCurrent(const ElectrodeCurVarVector ¤ts)
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable ElseIfStatement::statement_block (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_condition(std::shared_ptr< Expression > &&condition)
Setter for member variable ElseIfStatement::condition (rvalue reference)
std::shared_ptr< StatementBlock > statement_block
TODO.
void visit_children(visitor::Visitor &v) override
visit children i.e.
ElseIfStatement(Expression *condition, StatementBlock *statement_block)
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< Expression > condition
TODO.
void visit_children(visitor::Visitor &v) override
visit children i.e.
ElseStatement(StatementBlock *statement_block)
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< StatementBlock > statement_block
TODO.
void set_parent_in_children()
Set this object as parent for all the children.
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable ElseStatement::statement_block (rvalue reference)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Base class for all expressions in the NMODL.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< Expression > expression
TODO.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
ExpressionStatement(Expression *expression)
void set_expression(std::shared_ptr< Expression > &&expression)
Setter for member variable ExpressionStatement::expression (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
void set_parent_in_children()
Set this object as parent for all the children.
std::string get_node_name() const override
Return name of the node.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< Name > name
TODO.
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable ExternVar::name (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
This construct is deprecated and no longer supported in the NMODL.
External(const ExternVarVector &variables)
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
ExternVarVector variables
Vector of external variables.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_variables(ExternVarVector &&variables)
Setter for member variable External::variables (rvalue reference)
void set_unit1(std::shared_ptr< Unit > &&unit1)
Setter for member variable FactorDef::unit1 (rvalue reference)
std::shared_ptr< Name > name
TODO.
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable FactorDef::name (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
void set_value(std::shared_ptr< Double > &&value)
Setter for member variable FactorDef::value (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< Double > value
TODO.
std::string get_node_name() const override
Return name of the node.
std::shared_ptr< Unit > unit2
TODO.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_gt(std::shared_ptr< Boolean > &>)
Setter for member variable FactorDef::gt (rvalue reference)
void set_unit2(std::shared_ptr< Unit > &&unit2)
Setter for member variable FactorDef::unit2 (rvalue reference)
std::shared_ptr< Boolean > gt
Todo: Michael : rename variable gt as well.
std::shared_ptr< Unit > unit1
TODO.
Represents a float variable.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string value
Value of float.
void set_value(std::string value)
Setter for member variable Float::value.
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Float(const std::string &value)
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable ForNetcon::statement_block (rvalue reference)
void set_parameters(ArgumentVector &¶meters)
Setter for member variable ForNetcon::parameters (rvalue reference)
ForNetcon(const ArgumentVector ¶meters, StatementBlock *statement_block)
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
ArgumentVector parameters
Arguments to the for netcon block.
void set_parent_in_children()
Set this object as parent for all the children.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< ModToken > token
token with location information
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable FromStatement::name (rvalue reference)
void set_to(std::shared_ptr< Expression > &&to)
Setter for member variable FromStatement::to (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable FromStatement::statement_block (rvalue reference)
std::shared_ptr< Name > name
TODO.
std::string get_node_name() const override
Return name of the node.
std::shared_ptr< Expression > increment
TODO.
FromStatement(Name *name, Expression *from, Expression *to, Expression *increment, StatementBlock *statement_block)
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< Expression > to
TODO.
std::shared_ptr< StatementBlock > statement_block
TODO.
void set_from(std::shared_ptr< Expression > &&from)
Setter for member variable FromStatement::from (rvalue reference)
void set_increment(std::shared_ptr< Expression > &&increment)
Setter for member variable FromStatement::increment (rvalue reference)
std::shared_ptr< Expression > from
TODO.
std::string get_node_name() const override
Return name of the node.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
ArgumentVector parameters
Vector of the parameters.
void set_parent_in_children()
Set this object as parent for all the children.
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable FunctionBlock::name (rvalue reference)
void set_unit(std::shared_ptr< Unit > &&unit)
Setter for member variable FunctionBlock::unit (rvalue reference)
FunctionBlock(Name *name, const ArgumentVector ¶meters, Unit *unit, StatementBlock *statement_block)
std::shared_ptr< Name > name
Name of the function.
std::shared_ptr< Unit > unit
Unit if specified.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_parameters(ArgumentVector &¶meters)
Setter for member variable FunctionBlock::parameters (rvalue reference)
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable FunctionBlock::statement_block (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_name() const override
Return name of the node.
ExpressionVector arguments
TODO.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable FunctionCall::name (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< Name > name
TODO.
void set_arguments(ExpressionVector &&arguments)
Setter for member variable FunctionCall::arguments (rvalue reference)
FunctionCall(Name *name, const ExpressionVector &arguments)
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
void set_unit(std::shared_ptr< Unit > &&unit)
Setter for member variable FunctionTableBlock::unit (rvalue reference)
void set_parameters(ArgumentVector &¶meters)
Setter for member variable FunctionTableBlock::parameters (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable FunctionTableBlock::name (rvalue reference)
ArgumentVector parameters
Vector of the parameters.
std::string get_node_name() const override
Return name of the node.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_parent_in_children()
Set this object as parent for all the children.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< Unit > unit
Unit if specified.
FunctionTableBlock(Name *name, const ArgumentVector ¶meters, Unit *unit)
std::shared_ptr< Name > name
Name of the function table block.
Represents GLOBAL statement in NMODL.
GlobalVarVector variables
Vector of global variables.
GlobalVarVector::const_iterator insert_global_var(GlobalVarVector::const_iterator position, const std::shared_ptr< GlobalVar > &n)
Insert member to variables.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void emplace_back_global_var(GlobalVar *n)
Add member to variables by raw pointer.
void reset_global_var(GlobalVarVector::const_iterator position, GlobalVar *n)
Reset member to variables.
void set_variables(GlobalVarVector &&variables)
Setter for member variable Global::variables (rvalue reference)
Global(const GlobalVarVector &variables)
void set_parent_in_children()
Set this object as parent for all the children.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
GlobalVarVector::const_iterator erase_global_var(GlobalVarVector::const_iterator first)
Erase member to variables.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< Name > name
TODO.
std::string get_node_name() const override
Return name of the node.
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable GlobalVar::name (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
Base class for all identifiers.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_parent_in_children()
Set this object as parent for all the children.
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable IfStatement::statement_block (rvalue reference)
void set_condition(std::shared_ptr< Expression > &&condition)
Setter for member variable IfStatement::condition (rvalue reference)
IfStatement(Expression *condition, StatementBlock *statement_block, const ElseIfStatementVector &elseifs, ElseStatement *elses)
std::shared_ptr< ElseStatement > elses
TODO.
std::shared_ptr< Expression > condition
TODO.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< StatementBlock > statement_block
TODO.
ElseIfStatementVector elseifs
TODO.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< ModToken > token
token with location information
void set_elseifs(ElseIfStatementVector &&elseifs)
Setter for member variable IfStatement::elseifs (rvalue reference)
void set_elses(std::shared_ptr< ElseStatement > &&elses)
Setter for member variable IfStatement::elses (rvalue reference)
Represents an INCLUDE statement in NMODL.
NodeVector blocks
AST of the included file.
Include(String *filename, const NodeVector &blocks)
void set_blocks(NodeVector &&blocks)
Setter for member variable Include::blocks (rvalue reference)
std::shared_ptr< String > filename
path to the file to include
void set_parent_in_children()
Set this object as parent for all the children.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_filename(std::shared_ptr< String > &&filename)
Setter for member variable Include::filename (rvalue reference)
Represents a INDEPENDENT block in the NMODL.
void set_parent_in_children()
Set this object as parent for all the children.
void visit_children(visitor::Visitor &v) override
visit children i.e.
IndependentBlock(const NameVector &variables)
NameVector variables
List of variable that should be independent.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_variables(NameVector &&variables)
Setter for member variable IndependentBlock::variables (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
Represents specific element of an array variable.
void set_name(std::shared_ptr< Identifier > &&name)
Setter for member variable IndexedName::name (rvalue reference)
std::shared_ptr< Identifier > name
Name of array variable.
std::shared_ptr< ModToken > token
token with location information
void set_length(std::shared_ptr< Expression > &&length)
Setter for member variable IndexedName::length (rvalue reference)
std::shared_ptr< Expression > length
length of an array or index position
std::string get_node_name() const override
Return name of the node.
IndexedName(Identifier *name, Expression *length)
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_parent_in_children()
Set this object as parent for all the children.
Represents a INITIAL block in the NMODL.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
InitialBlock(StatementBlock *statement_block)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< ModToken > token
token with location information
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable InitialBlock::statement_block (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represents an integer variable.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< Name > macro
if integer is a macro then it's name
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_macro(std::shared_ptr< Name > &¯o)
Setter for member variable Integer::macro (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
int value
Value of integer.
void set_value(int value)
Setter for member variable Integer::value.
KineticBlock(Name *name, const NameVector &solvefor, StatementBlock *statement_block)
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
std::string get_node_name() const override
Return name of the node.
NameVector solvefor
Solve for specification (TODO)
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable KineticBlock::name (rvalue reference)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable KineticBlock::statement_block (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Name > name
Name of the kinetic block.
void set_solvefor(NameVector &&solvefor)
Setter for member variable KineticBlock::solvefor (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
Represents a LAG statement in the mod file.
void set_name(std::shared_ptr< Identifier > &&name)
Setter for member variable LagStatement::name (rvalue reference)
void set_byname(std::shared_ptr< Name > &&byname)
Setter for member variable LagStatement::byname (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
LagStatement(Identifier *name, Name *byname)
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< Identifier > name
Name of the variable (TODO)
std::shared_ptr< Name > byname
Name of the variable (TODO)
void set_max(std::shared_ptr< Number > &&max)
Setter for member variable Limits::max (rvalue reference)
std::shared_ptr< Number > max
TODO.
void set_parent_in_children()
Set this object as parent for all the children.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_min(std::shared_ptr< Number > &&min)
Setter for member variable Limits::min (rvalue reference)
Limits(Number *min, Number *max)
std::shared_ptr< Number > min
TODO.
std::shared_ptr< ModToken > token
token with location information
One equation in a system of equations tha collectively form a LINEAR block.
void set_lhs(std::shared_ptr< Expression > &&lhs)
Setter for member variable LinEquation::lhs (rvalue reference)
std::shared_ptr< Expression > rhs
Right-hand-side of the equation.
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
void set_rhs(std::shared_ptr< Expression > &&rhs)
Setter for member variable LinEquation::rhs (rvalue reference)
LinEquation(Expression *lhs, Expression *rhs)
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< Expression > lhs
Left-hand-side of the equation.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Represents LINEAR block in the NMODL.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
void set_solvefor(NameVector &&solvefor)
Setter for member variable LinearBlock::solvefor (rvalue reference)
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable LinearBlock::statement_block (rvalue reference)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::string get_node_name() const override
Return name of the node.
void set_parent_in_children()
Set this object as parent for all the children.
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable LinearBlock::name (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Name > name
Name of the linear block.
LinearBlock(Name *name, const NameVector &solvefor, StatementBlock *statement_block)
void visit_children(visitor::Visitor &v) override
visit children i.e.
LocalVarVector::const_iterator insert_local_var(LocalVarVector::const_iterator position, const std::shared_ptr< LocalVar > &n)
Insert member to variables.
void visit_children(visitor::Visitor &v) override
visit children i.e.
LocalVarVector variables
TODO.
void reset_local_var(LocalVarVector::const_iterator position, LocalVar *n)
Reset member to variables.
LocalVarVector::const_iterator erase_local_var(LocalVarVector::const_iterator first)
Erase member to variables.
void set_variables(LocalVarVector &&variables)
Setter for member variable LocalListStatement::variables (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
void emplace_back_local_var(LocalVar *n)
Add member to variables by raw pointer.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
LocalListStatement(const LocalVarVector &variables)
std::string get_node_name() const override
Return name of the node.
std::shared_ptr< Identifier > name
TODO.
std::shared_ptr< ModToken > token
token with location information
LocalVar(Identifier *name)
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_name(std::shared_ptr< Identifier > &&name)
Setter for member variable LocalVar::name (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Represent LONGITUDINAL_DIFFUSION statement in NMODL.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< Expression > rate
Diffusion coefficient/rate.
void set_rate(std::shared_ptr< Expression > &&rate)
Setter for member variable LonDiffuse::rate (rvalue reference)
LonDiffuse(Name *index_name, Expression *rate, const NameVector &species)
void visit_children(visitor::Visitor &v) override
visit children i.e.
NameVector species
Names of the diffusing species.
void set_index_name(std::shared_ptr< Name > &&index_name)
Setter for member variable LonDiffuse::index_name (rvalue reference)
std::shared_ptr< Name > index_name
Index variable name.
void set_species(NameVector &&species)
Setter for member variable LonDiffuse::species (rvalue reference)
Extracts information required for LONGITUDINAL_DIFFUSION for each KINETIC block.
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable LongitudinalDiffusionBlock::name (rvalue reference)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::string get_node_name() const override
Return name of the node.
LongitudinalDiffusionBlock(Name *name, StatementBlock *longitudinal_diffusion_statements, StatementBlock *compartment_statements)
void set_compartment_statements(std::shared_ptr< StatementBlock > &&compartment_statements)
Setter for member variable LongitudinalDiffusionBlock::compartment_statements (rvalue reference)
void set_longitudinal_diffusion_statements(std::shared_ptr< StatementBlock > &&longitudinal_diffusion_statements)
Setter for member variable LongitudinalDiffusionBlock::longitudinal_diffusion_statements (rvalue refe...
void set_parent_in_children()
Set this object as parent for all the children.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< StatementBlock > longitudinal_diffusion_statements
All LONGITUDINAL_DIFFUSION statements in the KINETIC block.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< StatementBlock > compartment_statements
All (required) COMPARTMENT statements in the KINETIC block.
std::shared_ptr< Name > name
Name of the longitudinal diffusion block.
Represent matexp solver solution block based on Eigen.
void set_conserve(ConserveVector &&conserve)
Setter for member variable MatexpBlock::conserve (rvalue reference)
ConserveVector conserve
Conserve statements found in jacobian block.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
MatexpBlock(Boolean *steadystate, StatementBlock *jacobian_block, const ConserveVector &conserve)
void set_parent_in_children()
Set this object as parent for all the children.
void set_jacobian_block(std::shared_ptr< StatementBlock > &&jacobian_block)
Setter for member variable MatexpBlock::jacobian_block (rvalue reference)
std::shared_ptr< Boolean > steadystate
If true then find steadystate solution, else advance by dt.
std::shared_ptr< ModToken > token
token with location information
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< StatementBlock > jacobian_block
Block of statements that assign to the Jacobian matrix.
void set_steadystate(std::shared_ptr< Boolean > &&steadystate)
Setter for member variable MatexpBlock::steadystate (rvalue reference)
std::shared_ptr< String > title
TODO.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_parent_in_children()
Set this object as parent for all the children.
void set_title(std::shared_ptr< String > &&title)
Setter for member variable Model::title (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_value(std::shared_ptr< String > &&value)
Setter for member variable Name::value (rvalue reference)
void set_name(const std::string &name) override
Set name for the current ast node.
void set_parent_in_children()
Set this object as parent for all the children.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< String > value
Value of name.
std::string get_node_name() const override
Return name of the node.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable NetReceiveBlock::statement_block (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< ModToken > token
token with location information
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_parameters(ArgumentVector &¶meters)
Setter for member variable NetReceiveBlock::parameters (rvalue reference)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
ArgumentVector parameters
Parameters to the net receive block.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
NetReceiveBlock(const ArgumentVector ¶meters, StatementBlock *statement_block)
Represent NEURON block in the mod file.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_parent_in_children()
Set this object as parent for all the children.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable NeuronBlock::statement_block (rvalue reference)
NeuronBlock(StatementBlock *statement_block)
Base class for all AST node.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
One equation in a system of equations that collectively make a NONLINEAR block.
std::shared_ptr< Expression > rhs
Right-hand-side of the equation.
void set_rhs(std::shared_ptr< Expression > &&rhs)
Setter for member variable NonLinEquation::rhs (rvalue reference)
std::shared_ptr< Expression > lhs
Left-hand-side of the equation.
std::shared_ptr< ModToken > token
token with location information
void visit_children(visitor::Visitor &v) override
visit children i.e.
NonLinEquation(Expression *lhs, Expression *rhs)
void set_lhs(std::shared_ptr< Expression > &&lhs)
Setter for member variable NonLinEquation::lhs (rvalue reference)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_parent_in_children()
Set this object as parent for all the children.
Represents NONLINEAR block in the NMODL.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
std::string get_node_name() const override
Return name of the node.
NonLinearBlock(Name *name, const NameVector &solvefor, StatementBlock *statement_block)
NameVector solvefor
Name of the integration method.
std::shared_ptr< ModToken > token
token with location information
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable NonLinearBlock::name (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< Name > name
Name of the non-linear block.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable NonLinearBlock::statement_block (rvalue reference)
void set_solvefor(NameVector &&solvefor)
Setter for member variable NonLinearBlock::solvefor (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
NonspecificCurVar(Name *name)
std::shared_ptr< Name > name
TODO.
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable NonspecificCurVar::name (rvalue reference)
std::string get_node_name() const override
Return name of the node.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< ModToken > token
token with location information
Represents NONSPECIFIC_CURRENT variables statement in NMODL.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Nonspecific(const NonspecificCurVarVector ¤ts)
void set_currents(NonspecificCurVarVector &¤ts)
Setter for member variable Nonspecific::currents (rvalue reference)
NonspecificCurVarVector currents
Vector of non specific variables.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_parent_in_children()
Set this object as parent for all the children.
Represents the coreneuron nrn_state callback function.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
StatementVector solve_statements
solve blocks to be called or generated
NrnStateBlock(const StatementVector &solve_statements)
void set_solve_statements(StatementVector &&solve_statements)
Setter for member variable NrnStateBlock::solve_statements (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
Base class for all numbers.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_max(std::shared_ptr< Number > &&max)
Setter for member variable NumberRange::max (rvalue reference)
NumberRange(Number *min, Number *max)
std::shared_ptr< Number > min
TODO.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_min(std::shared_ptr< Number > &&min)
Setter for member variable NumberRange::min (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< Number > max
TODO.
std::shared_ptr< ModToken > token
token with location information
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represents CURIE information in NMODL.
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< ModToken > token
token with location information
OntologyStatement(String *ontology_id)
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< String > ontology_id
Ontology name.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_ontology_id(std::shared_ptr< String > &&ontology_id)
Setter for member variable OntologyStatement::ontology_id (rvalue reference)
void set_value(std::shared_ptr< Number > &&value)
Setter for member variable ParamAssign::value (rvalue reference)
ParamAssign(Identifier *name, Number *value, Unit *unit, Limits *limit)
std::shared_ptr< ModToken > token
token with location information
void set_name(std::shared_ptr< Identifier > &&name)
Setter for member variable ParamAssign::name (rvalue reference)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_unit(std::shared_ptr< Unit > &&unit)
Setter for member variable ParamAssign::unit (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< Limits > limit
TODO.
std::shared_ptr< Identifier > name
TODO.
void set_parent_in_children()
Set this object as parent for all the children.
void set_limit(std::shared_ptr< Limits > &&limit)
Setter for member variable ParamAssign::limit (rvalue reference)
std::string get_node_name() const override
Return name of the node.
std::shared_ptr< Number > value
TODO.
std::shared_ptr< Unit > unit
TODO.
Represents a PARAMETER block in the NMODL.
ParamBlock(const ParamAssignVector &statements)
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
ParamAssignVector statements
Vector of parameters.
void set_statements(ParamAssignVector &&statements)
Setter for member variable ParamBlock::statements (rvalue reference)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
ParenExpression(Expression *expression)
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< Expression > expression
TODO.
void set_expression(std::shared_ptr< Expression > &&expression)
Setter for member variable ParenExpression::expression (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
Represents POINTER statement in NMODL.
void set_parent_in_children()
Set this object as parent for all the children.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void reset_pointer_var(PointerVarVector::const_iterator position, PointerVar *n)
Reset member to variables.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void emplace_back_pointer_var(PointerVar *n)
Add member to variables by raw pointer.
Pointer(const PointerVarVector &variables)
void set_variables(PointerVarVector &&variables)
Setter for member variable Pointer::variables (rvalue reference)
PointerVarVector::const_iterator insert_pointer_var(PointerVarVector::const_iterator position, const std::shared_ptr< PointerVar > &n)
Insert member to variables.
PointerVarVector variables
Vector of pointer variables.
std::shared_ptr< ModToken > token
token with location information
PointerVarVector::const_iterator erase_pointer_var(PointerVarVector::const_iterator first)
Erase member to variables.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_parent_in_children()
Set this object as parent for all the children.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< Name > name
TODO.
std::shared_ptr< ModToken > token
token with location information
std::string get_node_name() const override
Return name of the node.
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable PointerVar::name (rvalue reference)
Represents a prime variable (for ODE)
void set_value(std::shared_ptr< String > &&value)
Setter for member variable PrimeName::value (rvalue reference)
void set_order(std::shared_ptr< Integer > &&order)
Setter for member variable PrimeName::order (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< String > value
Name of prime variable.
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< ModToken > token
token with location information
std::string get_node_name() const override
Return name of the node.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< Integer > order
order of ODE
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Unit > unit
Unit if specified.
ProcedureBlock(Name *name, const ArgumentVector ¶meters, Unit *unit, StatementBlock *statement_block)
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable ProcedureBlock::statement_block (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< Name > name
Name of the procedure.
ArgumentVector parameters
Vector of the parameters.
void set_unit(std::shared_ptr< Unit > &&unit)
Setter for member variable ProcedureBlock::unit (rvalue reference)
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
void set_parent_in_children()
Set this object as parent for all the children.
std::string get_node_name() const override
Return name of the node.
void set_parameters(ArgumentVector &¶meters)
Setter for member variable ProcedureBlock::parameters (rvalue reference)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable ProcedureBlock::name (rvalue reference)
Represents top level AST node for whole NMODL input.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
NodeVector::const_iterator insert_node(NodeVector::const_iterator position, const std::shared_ptr< Node > &n)
Insert member to blocks.
void reset_node(NodeVector::const_iterator position, Node *n)
Reset member to blocks.
NodeVector blocks
Vector of top level blocks in the mod file.
void set_parent_in_children()
Set this object as parent for all the children.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void emplace_back_node(Node *n)
Add member to blocks by raw pointer.
NodeVector::const_iterator erase_node(NodeVector::const_iterator first)
Erase member to blocks.
void set_blocks(NodeVector &&blocks)
Setter for member variable Program::blocks (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
void set_expression(std::shared_ptr< Expression > &&expression)
Setter for member variable ProtectStatement::expression (rvalue reference)
ProtectStatement(Expression *expression)
std::shared_ptr< ModToken > token
token with location information
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< Expression > expression
TODO.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Single variable of type RANDOM.
void set_parent_in_children()
Set this object as parent for all the children.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< Name > name
Name of the a RANDOM variable.
std::string get_node_name() const override
Return name of the node.
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable RandomVar::name (rvalue reference)
Represents RANDOM statement in NMODL.
void set_parent_in_children()
Set this object as parent for all the children.
void set_variables(RandomVarVector &&variables)
Setter for member variable RandomVarList::variables (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
RandomVarVector variables
Vector of random variables.
RandomVarList(const RandomVarVector &variables)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represents RANGE variables statement in NMODL.
Range(const RangeVarVector &variables)
RangeVarVector variables
Vector of range variables.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_variables(RangeVarVector &&variables)
Setter for member variable Range::variables (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
std::string get_node_name() const override
Return name of the node.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable RangeVar::name (rvalue reference)
std::shared_ptr< Name > name
TODO.
std::shared_ptr< VarName > name
TODO.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_value(std::shared_ptr< Integer > &&value)
Setter for member variable ReactVarName::value (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
void visit_children(visitor::Visitor &v) override
visit children i.e.
ReactVarName(Integer *value, VarName *name)
std::shared_ptr< Integer > value
TODO.
void set_name(std::shared_ptr< VarName > &&name)
Setter for member variable ReactVarName::name (rvalue reference)
std::string get_node_name() const override
Return name of the node.
std::shared_ptr< ModToken > token
token with location information
ReactionOperator()=default
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_value(ReactionOp value)
Setter for member variable ReactionOperator::value.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< Expression > expression2
TODO.
void set_parent_in_children()
Set this object as parent for all the children.
void set_op(ReactionOperator &&op)
Setter for member variable ReactionStatement::op (rvalue reference)
void set_reaction2(std::shared_ptr< Expression > &&reaction2)
Setter for member variable ReactionStatement::reaction2 (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Expression > reaction2
TODO.
std::shared_ptr< Expression > expression1
TODO.
std::shared_ptr< Expression > reaction1
TODO.
void set_expression2(std::shared_ptr< Expression > &&expression2)
Setter for member variable ReactionStatement::expression2 (rvalue reference)
void set_reaction1(std::shared_ptr< Expression > &&reaction1)
Setter for member variable ReactionStatement::reaction1 (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_expression1(std::shared_ptr< Expression > &&expression1)
Setter for member variable ReactionStatement::expression1 (rvalue reference)
ReactionStatement(Expression *reaction1, const ReactionOperator &op, Expression *reaction2, Expression *expression1, Expression *expression2)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< ModToken > token
token with location information
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable ReadIonVar::name (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< Name > name
TODO.
std::string get_node_name() const override
Return name of the node.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represent solution of a block in the AST.
void set_solve_block(std::shared_ptr< SolveBlock > &&solve_block)
Setter for member variable SolutionExpression::solve_block (rvalue reference)
std::shared_ptr< Expression > node_to_solve
Block to be solved (callback node or solution node itself)
void set_node_to_solve(std::shared_ptr< Expression > &&node_to_solve)
Setter for member variable SolutionExpression::node_to_solve (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_parent_in_children()
Set this object as parent for all the children.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< SolveBlock > solve_block
SolutionExpression(SolveBlock *solve_block, Expression *node_to_solve)
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_block_name(std::shared_ptr< Name > &&block_name)
Setter for member variable SolveBlock::block_name (rvalue reference)
std::shared_ptr< Name > block_name
Name of the block to solve.
std::shared_ptr< Name > method
Name of the integration method.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_method(std::shared_ptr< Name > &&method)
Setter for member variable SolveBlock::method (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
SolveBlock(Name *block_name, Name *method, Name *steadystate)
std::shared_ptr< ModToken > token
token with location information
void set_steadystate(std::shared_ptr< Name > &&steadystate)
Setter for member variable SolveBlock::steadystate (rvalue reference)
std::shared_ptr< Name > steadystate
Name of the integration method.
Represents a STATE block in the NMODL.
void set_parent_in_children()
Set this object as parent for all the children.
StateBlock(const AssignedDefinitionVector &definitions)
void set_definitions(AssignedDefinitionVector &&definitions)
Setter for member variable StateBlock::definitions (rvalue reference)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
AssignedDefinitionVector definitions
Vector of state variables.
Represents block encapsulating list of statements.
void set_parent_in_children()
Set this object as parent for all the children.
void reset_statement(StatementVector::const_iterator position, Statement *n)
Reset member to statements.
void set_statements(StatementVector &&statements)
Setter for member variable StatementBlock::statements (rvalue reference)
StatementBlock(const StatementVector &statements)
std::shared_ptr< ModToken > token
token with location information
void emplace_back_statement(Statement *n)
Add member to statements by raw pointer.
StatementVector statements
Vector of statements.
void visit_children(visitor::Visitor &v) override
visit children i.e.
StatementVector::const_iterator insert_statement(StatementVector::const_iterator position, const std::shared_ptr< Statement > &n)
Insert member to statements.
StatementVector::const_iterator erase_statement(StatementVector::const_iterator first)
Erase member to statements.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_value(std::string value)
Setter for member variable String::value.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_parent_in_children()
Set this object as parent for all the children.
std::string value
Value of string.
std::shared_ptr< ModToken > token
token with location information
Represents SUFFIX statement in NMODL.
void set_type(std::shared_ptr< Name > &&type)
Setter for member variable Suffix::type (rvalue reference)
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable Suffix::name (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
Suffix(Name *type, Name *name)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< Name > type
type of channel
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< Name > name
Name of the channel.
std::string get_node_name() const override
Return name of the node.
Represents TABLE statement in NMODL.
TableStatement(const NameVector &table_vars, const NameVector &depend_vars, Expression *from, Expression *to, Integer *with)
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< Integer > with
an increment factor
void set_with(std::shared_ptr< Integer > &&with)
Setter for member variable TableStatement::with (rvalue reference)
NameVector depend_vars
dependent variables
std::shared_ptr< Expression > to
to values
void set_depend_vars(NameVector &&depend_vars)
Setter for member variable TableStatement::depend_vars (rvalue reference)
void set_to(std::shared_ptr< Expression > &&to)
Setter for member variable TableStatement::to (rvalue reference)
NameVector table_vars
Variables in the table.
std::shared_ptr< Expression > from
from value
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_parent_in_children()
Set this object as parent for all the children.
void set_from(std::shared_ptr< Expression > &&from)
Setter for member variable TableStatement::from (rvalue reference)
void set_table_vars(NameVector &&table_vars)
Setter for member variable TableStatement::table_vars (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_expression(std::shared_ptr< Expression > &&expression)
Setter for member variable UnaryExpression::expression (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< Expression > expression
TODO.
UnaryExpression(const UnaryOperator &op, Expression *expression)
void set_op(UnaryOperator &&op)
Setter for member variable UnaryExpression::op (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_parent_in_children()
Set this object as parent for all the children.
void set_value(UnaryOp value)
Setter for member variable UnaryOperator::value.
std::shared_ptr< ModToken > token
token with location information
ExpressionVector definitions
Vector of unit statements.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_definitions(ExpressionVector &&definitions)
Setter for member variable UnitBlock::definitions (rvalue reference)
UnitBlock(const ExpressionVector &definitions)
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< Unit > unit1
TODO.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
UnitDef(Unit *unit1, Unit *unit2)
void set_parent_in_children()
Set this object as parent for all the children.
void set_unit2(std::shared_ptr< Unit > &&unit2)
Setter for member variable UnitDef::unit2 (rvalue reference)
std::shared_ptr< Unit > unit2
TODO.
void set_unit1(std::shared_ptr< Unit > &&unit1)
Setter for member variable UnitDef::unit1 (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
std::string get_node_name() const override
Return name of the node.
std::shared_ptr< ModToken > token
token with location information
void set_name(std::shared_ptr< String > &&name)
Setter for member variable Unit::name (rvalue reference)
std::shared_ptr< String > name
TODO.
void set_parent_in_children()
Set this object as parent for all the children.
std::string get_node_name() const override
Return name of the node.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
void set_value(UnitStateType value)
Setter for member variable UnitState::value.
UnitState(UnitStateType value)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_parent_in_children()
Set this object as parent for all the children.
Statement to indicate a change in timestep in a given block.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< ModToken > token
token with location information
void set_parent_in_children()
Set this object as parent for all the children.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< Double > value
Value of new timestep.
void set_value(std::shared_ptr< Double > &&value)
Setter for member variable UpdateDt::value (rvalue reference)
Represents USEION statement in NMODL.
void set_valence(std::shared_ptr< Valence > &&valence)
Setter for member variable Useion::valence (rvalue reference)
std::shared_ptr< Valence > valence
(TODO)
void set_parent_in_children()
Set this object as parent for all the children.
void set_writelist(WriteIonVarVector &&writelist)
Setter for member variable Useion::writelist (rvalue reference)
void set_ontology_id(std::shared_ptr< String > &&ontology_id)
Setter for member variable Useion::ontology_id (rvalue reference)
Useion(Name *name, const ReadIonVarVector &readlist, const WriteIonVarVector &writelist, Valence *valence, String *ontology_id)
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable Useion::name (rvalue reference)
WriteIonVarVector writelist
Variables being written.
std::shared_ptr< String > ontology_id
Ontology to indicate the chemical ion.
std::shared_ptr< Name > name
Name of ion.
ReadIonVarVector readlist
Variables being read.
void set_readlist(ReadIonVarVector &&readlist)
Setter for member variable Useion::readlist (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
std::string get_node_name() const override
Return name of the node.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_value(std::shared_ptr< Double > &&value)
Setter for member variable Valence::value (rvalue reference)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_parent_in_children()
Set this object as parent for all the children.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< Double > value
TODO.
void set_type(std::shared_ptr< Name > &&type)
Setter for member variable Valence::type (rvalue reference)
Valence(Name *type, Double *value)
std::shared_ptr< Name > type
TODO.
std::shared_ptr< ModToken > token
token with location information
void set_name(std::shared_ptr< Identifier > &&name)
Setter for member variable VarName::name (rvalue reference)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
VarName(Identifier *name, Integer *at, Expression *index)
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Expression > index
index value in case of array
void set_index(std::shared_ptr< Expression > &&index)
Setter for member variable VarName::index (rvalue reference)
std::shared_ptr< Identifier > name
Name of variable.
void set_parent_in_children()
Set this object as parent for all the children.
std::string get_node_name() const override
Return name of the node.
void set_at(std::shared_ptr< Integer > &&at)
Setter for member variable VarName::at (rvalue reference)
std::shared_ptr< Integer > at
Value specified with @
Represents a C code block.
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_statement(std::shared_ptr< String > &&statement)
Setter for member variable Verbatim::statement (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< String > statement
C code as a string.
Verbatim(String *statement)
void set_parent_in_children()
Set this object as parent for all the children.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Watch(Expression *expression, Expression *value)
std::shared_ptr< ModToken > token
token with location information
void set_expression(std::shared_ptr< Expression > &&expression)
Setter for member variable Watch::expression (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< Expression > value
TODO.
void visit_children(visitor::Visitor &v) override
visit children i.e.
std::shared_ptr< Expression > expression
TODO.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void set_value(std::shared_ptr< Expression > &&value)
Setter for member variable Watch::value (rvalue reference)
Represent WATCH statement in NMODL.
WatchVector::const_iterator erase_watch(WatchVector::const_iterator first)
Erase member to statements.
std::shared_ptr< ModToken > token
token with location information
void reset_watch(WatchVector::const_iterator position, Watch *n)
Reset member to statements.
void emplace_back_watch(Watch *n)
Add member to statements by raw pointer.
WatchVector statements
Vector of watch statements.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
void visit_children(visitor::Visitor &v) override
visit children i.e.
WatchStatement(const WatchVector &statements)
void set_parent_in_children()
Set this object as parent for all the children.
WatchVector::const_iterator insert_watch(WatchVector::const_iterator position, const std::shared_ptr< Watch > &n)
Insert member to statements.
void set_statements(WatchVector &&statements)
Setter for member variable WatchStatement::statements (rvalue reference)
std::shared_ptr< Expression > condition
TODO.
void set_condition(std::shared_ptr< Expression > &&condition)
Setter for member variable WhileStatement::condition (rvalue reference)
void set_parent_in_children()
Set this object as parent for all the children.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< StatementBlock > statement_block
TODO.
void set_statement_block(std::shared_ptr< StatementBlock > &&statement_block)
Setter for member variable WhileStatement::statement_block (rvalue reference)
void visit_children(visitor::Visitor &v) override
visit children i.e.
WhileStatement(Expression *condition, StatementBlock *statement_block)
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Wrap any other expression type.
void set_parent_in_children()
Set this object as parent for all the children.
void set_expression(std::shared_ptr< Expression > &&expression)
Setter for member variable WrappedExpression::expression (rvalue reference)
std::shared_ptr< Expression > expression
Expression that is being wrapped.
std::shared_ptr< ModToken > token
token with location information
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
WrappedExpression(Expression *expression)
void visit_children(visitor::Visitor &v) override
visit children i.e.
void set_parent_in_children()
Set this object as parent for all the children.
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::string get_node_name() const override
Return name of the node.
void set_name(std::shared_ptr< Name > &&name)
Setter for member variable WriteIonVar::name (rvalue reference)
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Name > name
TODO.
void visit_children(visitor::Visitor &v) override
visit children i.e.
Represent symbol table for a NMODL block.
Abstract base class for all constant visitors implementation.
Abstract base class for all visitors implementation.
static double order(void *v)
static double abstol(void *v)
virtual bool is_while_statement() const noexcept
Check if the ast node is an instance of ast::WhileStatement.
virtual bool is_constant_var() const noexcept
Check if the ast node is an instance of ast::ConstantVar.
virtual bool is_for_netcon() const noexcept
Check if the ast node is an instance of ast::ForNetcon.
virtual bool is_watch() const noexcept
Check if the ast node is an instance of ast::Watch.
virtual bool is_wrapped_expression() const noexcept
Check if the ast node is an instance of ast::WrappedExpression.
virtual bool is_function_block() const noexcept
Check if the ast node is an instance of ast::FunctionBlock.
virtual bool is_electrode_cur_var() const noexcept
Check if the ast node is an instance of ast::ElectrodeCurVar.
virtual bool is_external() const noexcept
Check if the ast node is an instance of ast::External.
virtual bool is_table_statement() const noexcept
Check if the ast node is an instance of ast::TableStatement.
virtual bool is_nonspecific() const noexcept
Check if the ast node is an instance of ast::Nonspecific.
virtual bool is_update_dt() const noexcept
Check if the ast node is an instance of ast::UpdateDt.
virtual bool is_number() const noexcept
Check if the ast node is an instance of ast::Number.
virtual bool is_param_block() const noexcept
Check if the ast node is an instance of ast::ParamBlock.
virtual bool is_lin_equation() const noexcept
Check if the ast node is an instance of ast::LinEquation.
virtual bool is_random_var_list() const noexcept
Check if the ast node is an instance of ast::RandomVarList.
virtual bool is_useion() const noexcept
Check if the ast node is an instance of ast::Useion.
virtual bool is_after_block() const noexcept
Check if the ast node is an instance of ast::AfterBlock.
virtual bool is_verbatim() const noexcept
Check if the ast node is an instance of ast::Verbatim.
virtual bool is_conductance_hint() const noexcept
Check if the ast node is an instance of ast::ConductanceHint.
virtual bool is_constant_statement() const noexcept
Check if the ast node is an instance of ast::ConstantStatement.
virtual bool is_solution_expression() const noexcept
Check if the ast node is an instance of ast::SolutionExpression.
virtual bool is_string() const noexcept
Check if the ast node is an instance of ast::String.
virtual bool is_global_var() const noexcept
Check if the ast node is an instance of ast::GlobalVar.
virtual bool is_mutex_lock() const noexcept
Check if the ast node is an instance of ast::MutexLock.
virtual bool is_react_var_name() const noexcept
Check if the ast node is an instance of ast::ReactVarName.
virtual bool is_unary_expression() const noexcept
Check if the ast node is an instance of ast::UnaryExpression.
virtual bool is_ontology_statement() const noexcept
Check if the ast node is an instance of ast::OntologyStatement.
virtual bool is_expression_statement() const noexcept
Check if the ast node is an instance of ast::ExpressionStatement.
virtual bool is_indexed_name() const noexcept
Check if the ast node is an instance of ast::IndexedName.
virtual bool is_else_statement() const noexcept
Check if the ast node is an instance of ast::ElseStatement.
virtual bool is_function_table_block() const noexcept
Check if the ast node is an instance of ast::FunctionTableBlock.
virtual bool is_discrete_block() const noexcept
Check if the ast node is an instance of ast::DiscreteBlock.
virtual bool is_range_var() const noexcept
Check if the ast node is an instance of ast::RangeVar.
virtual bool is_integer() const noexcept
Check if the ast node is an instance of ast::Integer.
virtual bool is_matexp_block() const noexcept
Check if the ast node is an instance of ast::MatexpBlock.
virtual bool is_ast() const noexcept
Check if the ast node is an instance of ast::Ast.
virtual const ModToken * get_token() const
Return associated token for the AST node.
virtual bool is_derivimplicit_callback() const noexcept
Check if the ast node is an instance of ast::DerivimplicitCallback.
virtual bool is_random_var() const noexcept
Check if the ast node is an instance of ast::RandomVar.
virtual bool is_unary_operator() const noexcept
Check if the ast node is an instance of ast::UnaryOperator.
virtual bool is_name() const noexcept
Check if the ast node is an instance of ast::Name.
virtual bool is_var_name() const noexcept
Check if the ast node is an instance of ast::VarName.
virtual bool is_pointer_var() const noexcept
Check if the ast node is an instance of ast::PointerVar.
virtual bool is_derivative_block() const noexcept
Check if the ast node is an instance of ast::DerivativeBlock.
virtual Ast * clone() const
Create a copy of the current node.
virtual bool is_independent_block() const noexcept
Check if the ast node is an instance of ast::IndependentBlock.
virtual bool is_watch_statement() const noexcept
Check if the ast node is an instance of ast::WatchStatement.
virtual bool is_protect_statement() const noexcept
Check if the ast node is an instance of ast::ProtectStatement.
virtual bool is_range() const noexcept
Check if the ast node is an instance of ast::Range.
virtual symtab::SymbolTable * get_symbol_table() const
Return associated symbol table for the AST node.
virtual std::shared_ptr< StatementBlock > get_statement_block() const
Return associated statement block for the AST node.
virtual bool is_extern_var() const noexcept
Check if the ast node is an instance of ast::ExternVar.
virtual bool is_block_comment() const noexcept
Check if the ast node is an instance of ast::BlockComment.
virtual bool is_nrn_state_block() const noexcept
Check if the ast node is an instance of ast::NrnStateBlock.
virtual void set_symbol_table(symtab::SymbolTable *symtab)
Set symbol table for the AST node.
virtual bool is_eigen_linear_solver_block() const noexcept
Check if the ast node is an instance of ast::EigenLinearSolverBlock.
virtual bool is_suffix() const noexcept
Check if the ast node is an instance of ast::Suffix.
virtual bool is_paren_expression() const noexcept
Check if the ast node is an instance of ast::ParenExpression.
virtual bool is_local_list_statement() const noexcept
Check if the ast node is an instance of ast::LocalListStatement.
virtual bool is_solve_block() const noexcept
Check if the ast node is an instance of ast::SolveBlock.
virtual bool is_statement_block() const noexcept
Check if the ast node is an instance of ast::StatementBlock.
virtual bool is_net_receive_block() const noexcept
Check if the ast node is an instance of ast::NetReceiveBlock.
virtual bool is_pointer() const noexcept
Check if the ast node is an instance of ast::Pointer.
virtual bool is_state_block() const noexcept
Check if the ast node is an instance of ast::StateBlock.
virtual bool is_write_ion_var() const noexcept
Check if the ast node is an instance of ast::WriteIonVar.
virtual void negate()
Negate the value of AST node.
virtual Ast * get_parent() const
Parent getter.
virtual bool is_bbcore_pointer_var() const noexcept
Check if the ast node is an instance of ast::BbcorePointerVar.
virtual bool is_nonspecific_cur_var() const noexcept
Check if the ast node is an instance of ast::NonspecificCurVar.
virtual bool is_initial_block() const noexcept
Check if the ast node is an instance of ast::InitialBlock.
virtual bool is_diff_eq_expression() const noexcept
Check if the ast node is an instance of ast::DiffEqExpression.
virtual bool is_reaction_operator() const noexcept
Check if the ast node is an instance of ast::ReactionOperator.
virtual bool is_longitudinal_diffusion_block() const noexcept
Check if the ast node is an instance of ast::LongitudinalDiffusionBlock.
virtual bool is_double_unit() const noexcept
Check if the ast node is an instance of ast::DoubleUnit.
virtual bool is_conserve() const noexcept
Check if the ast node is an instance of ast::Conserve.
virtual bool is_cvode_block() const noexcept
Check if the ast node is an instance of ast::CvodeBlock.
virtual bool is_lon_diffuse() const noexcept
Check if the ast node is an instance of ast::LonDiffuse.
virtual bool is_node() const noexcept
Check if the ast node is an instance of ast::Node.
virtual bool is_limits() const noexcept
Check if the ast node is an instance of ast::Limits.
virtual bool is_if_statement() const noexcept
Check if the ast node is an instance of ast::IfStatement.
virtual bool is_param_assign() const noexcept
Check if the ast node is an instance of ast::ParamAssign.
virtual bool is_unit_block() const noexcept
Check if the ast node is an instance of ast::UnitBlock.
virtual bool is_argument() const noexcept
Check if the ast node is an instance of ast::Argument.
virtual bool is_expression() const noexcept
Check if the ast node is an instance of ast::Expression.
virtual bool is_line_comment() const noexcept
Check if the ast node is an instance of ast::LineComment.
virtual bool is_statement() const noexcept
Check if the ast node is an instance of ast::Statement.
virtual bool is_binary_operator() const noexcept
Check if the ast node is an instance of ast::BinaryOperator.
virtual bool is_function_call() const noexcept
Check if the ast node is an instance of ast::FunctionCall.
virtual bool is_lag_statement() const noexcept
Check if the ast node is an instance of ast::LagStatement.
virtual bool is_non_lin_equation() const noexcept
Check if the ast node is an instance of ast::NonLinEquation.
virtual bool is_identifier() const noexcept
Check if the ast node is an instance of ast::Identifier.
virtual bool is_define() const noexcept
Check if the ast node is an instance of ast::Define.
virtual bool is_non_linear_block() const noexcept
Check if the ast node is an instance of ast::NonLinearBlock.
virtual bool is_unit_state() const noexcept
Check if the ast node is an instance of ast::UnitState.
virtual bool is_constant_block() const noexcept
Check if the ast node is an instance of ast::ConstantBlock.
virtual bool is_unit_def() const noexcept
Check if the ast node is an instance of ast::UnitDef.
virtual bool is_boolean() const noexcept
Check if the ast node is an instance of ast::Boolean.
virtual std::string get_node_name() const
Return name of of the node.
virtual bool is_neuron_block() const noexcept
Check if the ast node is an instance of ast::NeuronBlock.
Ast * parent
Generic pointer to the parent.
virtual bool is_block() const noexcept
Check if the ast node is an instance of ast::Block.
virtual bool is_else_if_statement() const noexcept
Check if the ast node is an instance of ast::ElseIfStatement.
virtual bool is_global() const noexcept
Check if the ast node is an instance of ast::Global.
virtual bool is_reaction_statement() const noexcept
Check if the ast node is an instance of ast::ReactionStatement.
virtual bool is_program() const noexcept
Check if the ast node is an instance of ast::Program.
virtual std::shared_ptr< Ast > get_shared_ptr()
get std::shared_ptr from this pointer of the AST node
virtual bool is_procedure_block() const noexcept
Check if the ast node is an instance of ast::ProcedureBlock.
virtual bool is_ba_block() const noexcept
Check if the ast node is an instance of ast::BABlock.
virtual bool is_ba_block_type() const noexcept
Check if the ast node is an instance of ast::BABlockType.
virtual void set_name(const std::string &name)
Set name for the AST node.
virtual bool is_destructor_block() const noexcept
Check if the ast node is an instance of ast::DestructorBlock.
virtual bool is_eigen_newton_solver_block() const noexcept
Check if the ast node is an instance of ast::EigenNewtonSolverBlock.
virtual bool is_local_var() const noexcept
Check if the ast node is an instance of ast::LocalVar.
virtual bool is_include() const noexcept
Check if the ast node is an instance of ast::Include.
virtual bool is_breakpoint_block() const noexcept
Check if the ast node is an instance of ast::BreakpointBlock.
virtual bool is_kinetic_block() const noexcept
Check if the ast node is an instance of ast::KineticBlock.
virtual bool is_assigned_block() const noexcept
Check if the ast node is an instance of ast::AssignedBlock.
virtual bool is_before_block() const noexcept
Check if the ast node is an instance of ast::BeforeBlock.
virtual bool is_constructor_block() const noexcept
Check if the ast node is an instance of ast::ConstructorBlock.
virtual void set_parent(Ast *p)
Parent setter.
virtual bool is_number_range() const noexcept
Check if the ast node is an instance of ast::NumberRange.
virtual bool is_from_statement() const noexcept
Check if the ast node is an instance of ast::FromStatement.
virtual bool is_prime_name() const noexcept
Check if the ast node is an instance of ast::PrimeName.
virtual bool is_model() const noexcept
Check if the ast node is an instance of ast::Model.
virtual bool is_linear_block() const noexcept
Check if the ast node is an instance of ast::LinearBlock.
virtual bool is_valence() const noexcept
Check if the ast node is an instance of ast::Valence.
virtual bool is_float() const noexcept
Check if the ast node is an instance of ast::Float.
virtual bool is_double() const noexcept
Check if the ast node is an instance of ast::Double.
virtual bool is_unit() const noexcept
Check if the ast node is an instance of ast::Unit.
virtual bool is_electrode_current() const noexcept
Check if the ast node is an instance of ast::ElectrodeCurrent.
virtual bool is_read_ion_var() const noexcept
Check if the ast node is an instance of ast::ReadIonVar.
virtual bool is_thread_safe() const noexcept
Check if the ast node is an instance of ast::ThreadSafe.
virtual bool is_compartment() const noexcept
Check if the ast node is an instance of ast::Compartment.
virtual bool is_mutex_unlock() const noexcept
Check if the ast node is an instance of ast::MutexUnlock.
virtual bool is_factor_def() const noexcept
Check if the ast node is an instance of ast::FactorDef.
virtual bool is_bbcore_pointer() const noexcept
Check if the ast node is an instance of ast::BbcorePointer.
virtual bool is_assigned_definition() const noexcept
Check if the ast node is an instance of ast::AssignedDefinition.
virtual bool is_binary_expression() const noexcept
Check if the ast node is an instance of ast::BinaryExpression.
BinaryOp
enum Type for binary operators in NMODL
ReactionOp
enum type used for Reaction statement
UnitStateType
enum type used for UNIT_ON or UNIT_OFF state
BAType
enum type to distinguish BEFORE or AFTER blocks
UnaryOp
enum type for unary operators
std::vector< std::shared_ptr< ElseIfStatement > > ElseIfStatementVector
std::vector< std::shared_ptr< Statement > > StatementVector
std::vector< std::shared_ptr< Argument > > ArgumentVector
std::vector< std::shared_ptr< RangeVar > > RangeVarVector
std::vector< std::shared_ptr< NonspecificCurVar > > NonspecificCurVarVector
std::vector< std::shared_ptr< WriteIonVar > > WriteIonVarVector
std::vector< std::shared_ptr< LocalVar > > LocalVarVector
std::vector< std::shared_ptr< BbcorePointerVar > > BbcorePointerVarVector
std::vector< std::shared_ptr< AssignedDefinition > > AssignedDefinitionVector
std::vector< std::shared_ptr< Name > > NameVector
std::vector< std::shared_ptr< RandomVar > > RandomVarVector
std::vector< std::shared_ptr< Watch > > WatchVector
std::vector< std::shared_ptr< Conserve > > ConserveVector
std::vector< std::shared_ptr< ExternVar > > ExternVarVector
std::vector< std::shared_ptr< ReadIonVar > > ReadIonVarVector
std::vector< std::shared_ptr< Node > > NodeVector
std::vector< std::shared_ptr< GlobalVar > > GlobalVarVector
std::vector< std::shared_ptr< ConstantStatement > > ConstantStatementVector
std::vector< std::shared_ptr< PointerVar > > PointerVarVector
std::vector< std::shared_ptr< Expression > > ExpressionVector
std::vector< std::shared_ptr< ElectrodeCurVar > > ElectrodeCurVarVector
std::vector< std::shared_ptr< ParamAssign > > ParamAssignVector
Abstract Syntax Tree (AST) related implementations.
int const size_t const size_t n
Base class for all Abstract Syntax Tree node types.
Implement classes for representing symbol table at block and file scope.