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());
355 v.visit_statement(*
this);
359 v.visit_statement(*
this);
377 v.visit_expression(*
this);
381 v.visit_expression(*
this);
399 v.visit_block(*
this);
403 v.visit_block(*
this);
421 v.visit_identifier(*
this);
425 v.visit_identifier(*
this);
443 v.visit_number(*
this);
447 v.visit_number(*
this);
468 v.visit_string(*
this);
472 v.visit_string(*
this);
488 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
526 this->
macro->accept(v);
534 this->
macro->accept(v);
540 v.visit_integer(*
this);
544 v.visit_integer(*
this);
567 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
580 macro->set_parent(
this);
598 macro->set_parent(
this);
606 macro->set_parent(
this);
627 v.visit_float(*
this);
631 v.visit_float(*
this);
647 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
686 v.visit_double(*
this);
690 v.visit_double(*
this);
706 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
745 v.visit_boolean(*
this);
749 v.visit_boolean(*
this);
765 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
796 return value->eval();
837 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
853 value->set_parent(
this);
864 value->set_parent(
this);
872 value->set_parent(
this);
885 return value->eval();
910 v.visit_prime_name(*
this);
914 v.visit_prime_name(*
this);
939 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
952 value->set_parent(
this);
956 order->set_parent(
this);
967 value->set_parent(
this);
975 value->set_parent(
this);
984 order->set_parent(
this);
992 order->set_parent(
this);
1005 return name->get_node_name();
1030 v.visit_indexed_name(*
this);
1034 v.visit_indexed_name(*
this);
1050 this->
name.reset(obj.
name->clone());
1059 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1072 name->set_parent(
this);
1076 length->set_parent(
this);
1087 name->set_parent(
this);
1095 name->set_parent(
this);
1104 length->set_parent(
this);
1112 length->set_parent(
this);
1125 return name->get_node_name();
1140 this->
at->accept(v);
1145 this->
index->accept(v);
1156 this->
at->accept(v);
1161 this->
index->accept(v);
1167 v.visit_var_name(*
this);
1171 v.visit_var_name(*
this);
1187 this->
name.reset(obj.
name->clone());
1191 this->
at.reset(obj.
at->clone());
1200 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1213 name->set_parent(
this);
1217 at->set_parent(
this);
1221 index->set_parent(
this);
1232 name->set_parent(
this);
1240 name->set_parent(
this);
1249 at->set_parent(
this);
1257 at->set_parent(
this);
1266 index->set_parent(
this);
1271 this->index =
index;
1274 index->set_parent(
this);
1287 return name->get_node_name();
1299 this->
unit->accept(
v);
1310 this->
unit->accept(
v);
1316 v.visit_argument(*
this);
1320 v.visit_argument(*
this);
1336 this->
name.reset(obj.
name->clone());
1340 this->
unit.reset(obj.
unit->clone());
1345 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1358 name->set_parent(
this);
1362 unit->set_parent(
this);
1373 name->set_parent(
this);
1381 name->set_parent(
this);
1390 unit->set_parent(
this);
1398 unit->set_parent(
this);
1414 return name->get_node_name();
1420 this->
value->accept(v);
1431 this->
value->accept(v);
1440 v.visit_react_var_name(*
this);
1444 v.visit_react_var_name(*
this);
1464 this->
name.reset(obj.
name->clone());
1469 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1482 value->set_parent(
this);
1486 name->set_parent(
this);
1497 value->set_parent(
this);
1502 this->value =
value;
1505 value->set_parent(
this);
1514 name->set_parent(
this);
1522 name->set_parent(
this);
1535 return name->get_node_name();
1551 v.visit_read_ion_var(*
this);
1555 v.visit_read_ion_var(*
this);
1571 this->
name.reset(obj.
name->clone());
1576 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1589 name->set_parent(
this);
1600 name->set_parent(
this);
1608 name->set_parent(
this);
1621 return name->get_node_name();
1637 v.visit_write_ion_var(*
this);
1641 v.visit_write_ion_var(*
this);
1657 this->
name.reset(obj.
name->clone());
1662 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1675 name->set_parent(
this);
1686 name->set_parent(
this);
1694 name->set_parent(
this);
1707 return name->get_node_name();
1723 v.visit_nonspecific_cur_var(*
this);
1727 v.visit_nonspecific_cur_var(*
this);
1743 this->
name.reset(obj.
name->clone());
1748 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1761 name->set_parent(
this);
1772 name->set_parent(
this);
1780 name->set_parent(
this);
1793 return name->get_node_name();
1809 v.visit_electrode_cur_var(*
this);
1813 v.visit_electrode_cur_var(*
this);
1829 this->
name.reset(obj.
name->clone());
1834 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1847 name->set_parent(
this);
1858 name->set_parent(
this);
1866 name->set_parent(
this);
1879 return name->get_node_name();
1895 v.visit_range_var(*
this);
1899 v.visit_range_var(*
this);
1915 this->
name.reset(obj.
name->clone());
1920 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
1933 name->set_parent(
this);
1944 name->set_parent(
this);
1952 name->set_parent(
this);
1965 return name->get_node_name();
1981 v.visit_global_var(*
this);
1985 v.visit_global_var(*
this);
2001 this->
name.reset(obj.
name->clone());
2006 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2019 name->set_parent(
this);
2030 name->set_parent(
this);
2038 name->set_parent(
this);
2051 return name->get_node_name();
2067 v.visit_pointer_var(*
this);
2071 v.visit_pointer_var(*
this);
2087 this->
name.reset(obj.
name->clone());
2092 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2105 name->set_parent(
this);
2116 name->set_parent(
this);
2124 name->set_parent(
this);
2137 return name->get_node_name();
2153 v.visit_random_var(*
this);
2157 v.visit_random_var(*
this);
2173 this->
name.reset(obj.
name->clone());
2178 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2191 name->set_parent(
this);
2202 name->set_parent(
this);
2210 name->set_parent(
this);
2223 return name->get_node_name();
2239 v.visit_bbcore_pointer_var(*
this);
2243 v.visit_bbcore_pointer_var(*
this);
2259 this->
name.reset(obj.
name->clone());
2264 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2277 name->set_parent(
this);
2288 name->set_parent(
this);
2296 name->set_parent(
this);
2309 return name->get_node_name();
2325 v.visit_extern_var(*
this);
2329 v.visit_extern_var(*
this);
2345 this->
name.reset(obj.
name->clone());
2350 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2363 name->set_parent(
this);
2374 name->set_parent(
this);
2382 name->set_parent(
this);
2413 v.visit_param_block(*
this);
2417 v.visit_param_block(*
this);
2430 this->
statements.emplace_back(item->clone());
2435 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2448 item->set_parent(
this);
2460 ii->set_parent(
this);
2468 ii->set_parent(
this);
2499 v.visit_independent_block(*
this);
2503 v.visit_independent_block(*
this);
2516 this->
variables.emplace_back(item->clone());
2521 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2534 item->set_parent(
this);
2546 ii->set_parent(
this);
2554 ii->set_parent(
this);
2572 n->set_parent(
this);
2581 n->set_parent(
this);
2606 while (first != last) {
2609 if (to_be_erased.erase(first->get()) == 0) {
2616 size_t out = last -
result;
2626 n->set_parent(
this);
2635 n->set_parent(
this);
2645 n->set_parent(
this);
2670 v.visit_assigned_block(*
this);
2674 v.visit_assigned_block(*
this);
2692 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2705 item->set_parent(
this);
2717 ii->set_parent(
this);
2725 ii->set_parent(
this);
2756 v.visit_state_block(*
this);
2760 v.visit_state_block(*
this);
2778 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2791 item->set_parent(
this);
2803 ii->set_parent(
this);
2811 ii->set_parent(
this);
2838 v.visit_initial_block(*
this);
2842 v.visit_initial_block(*
this);
2863 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
2922 v.visit_constructor_block(*
this);
2926 v.visit_constructor_block(*
this);
2947 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3006 v.visit_destructor_block(*
this);
3010 v.visit_destructor_block(*
this);
3031 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3081 n->set_parent(
this);
3090 n->set_parent(
this);
3115 while (first != last) {
3118 if (to_be_erased.erase(first->get()) == 0) {
3125 size_t out = last -
result;
3135 n->set_parent(
this);
3144 n->set_parent(
this);
3154 n->set_parent(
this);
3179 v.visit_statement_block(*
this);
3183 v.visit_statement_block(*
this);
3196 this->
statements.emplace_back(item->clone());
3201 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3214 item->set_parent(
this);
3226 ii->set_parent(
this);
3234 ii->set_parent(
this);
3247 return name->get_node_name();
3272 v.visit_derivative_block(*
this);
3276 v.visit_derivative_block(*
this);
3292 this->
name.reset(obj.
name->clone());
3301 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3314 name->set_parent(
this);
3329 name->set_parent(
this);
3337 name->set_parent(
this);
3367 return name->get_node_name();
3381 for (
auto& item : this->
solvefor) {
3395 for (
auto& item : this->
solvefor) {
3405 v.visit_linear_block(*
this);
3409 v.visit_linear_block(*
this);
3425 this->
name.reset(obj.
name->clone());
3429 this->
solvefor.emplace_back(item->clone());
3438 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3451 name->set_parent(
this);
3455 item->set_parent(
this);
3471 name->set_parent(
this);
3479 name->set_parent(
this);
3488 ii->set_parent(
this);
3496 ii->set_parent(
this);
3526 return name->get_node_name();
3540 for (
auto& item : this->
solvefor) {
3554 for (
auto& item : this->
solvefor) {
3564 v.visit_non_linear_block(*
this);
3568 v.visit_non_linear_block(*
this);
3584 this->
name.reset(obj.
name->clone());
3588 this->
solvefor.emplace_back(item->clone());
3597 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3610 name->set_parent(
this);
3614 item->set_parent(
this);
3630 name->set_parent(
this);
3638 name->set_parent(
this);
3647 ii->set_parent(
this);
3655 ii->set_parent(
this);
3685 return name->get_node_name();
3710 v.visit_discrete_block(*
this);
3714 v.visit_discrete_block(*
this);
3730 this->
name.reset(obj.
name->clone());
3739 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3752 name->set_parent(
this);
3767 name->set_parent(
this);
3775 name->set_parent(
this);
3805 return name->get_node_name();
3825 this->
unit->accept(
v);
3841 this->
unit->accept(
v);
3847 v.visit_function_table_block(*
this);
3851 v.visit_function_table_block(*
this);
3867 this->
name.reset(obj.
name->clone());
3871 this->
parameters.emplace_back(item->clone());
3875 this->
unit.reset(obj.
unit->clone());
3880 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
3893 name->set_parent(
this);
3897 item->set_parent(
this);
3902 unit->set_parent(
this);
3913 name->set_parent(
this);
3921 name->set_parent(
this);
3930 ii->set_parent(
this);
3938 ii->set_parent(
this);
3947 unit->set_parent(
this);
3955 unit->set_parent(
this);
3968 return name->get_node_name();
3991 this->
unit->accept(
v);
4010 this->
unit->accept(
v);
4019 v.visit_function_block(*
this);
4023 v.visit_function_block(*
this);
4039 this->
name.reset(obj.
name->clone());
4043 this->
parameters.emplace_back(item->clone());
4047 this->
unit.reset(obj.
unit->clone());
4056 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4069 name->set_parent(
this);
4073 item->set_parent(
this);
4078 unit->set_parent(
this);
4093 name->set_parent(
this);
4101 name->set_parent(
this);
4110 ii->set_parent(
this);
4118 ii->set_parent(
this);
4127 unit->set_parent(
this);
4135 unit->set_parent(
this);
4165 return name->get_node_name();
4188 this->
unit->accept(
v);
4207 this->
unit->accept(
v);
4216 v.visit_procedure_block(*
this);
4220 v.visit_procedure_block(*
this);
4236 this->
name.reset(obj.
name->clone());
4240 this->
parameters.emplace_back(item->clone());
4244 this->
unit.reset(obj.
unit->clone());
4253 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4266 name->set_parent(
this);
4270 item->set_parent(
this);
4275 unit->set_parent(
this);
4290 name->set_parent(
this);
4298 name->set_parent(
this);
4307 ii->set_parent(
this);
4315 ii->set_parent(
this);
4324 unit->set_parent(
this);
4332 unit->set_parent(
this);
4389 v.visit_net_receive_block(*
this);
4393 v.visit_net_receive_block(*
this);
4409 this->
parameters.emplace_back(item->clone());
4418 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4431 item->set_parent(
this);
4447 ii->set_parent(
this);
4455 ii->set_parent(
this);
4525 v.visit_solve_block(*
this);
4529 v.visit_solve_block(*
this);
4558 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4575 method->set_parent(
this);
4607 method->set_parent(
this);
4615 method->set_parent(
this);
4659 v.visit_breakpoint_block(*
this);
4663 v.visit_breakpoint_block(*
this);
4684 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4743 v.visit_before_block(*
this);
4747 v.visit_before_block(*
this);
4768 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4827 v.visit_after_block(*
this);
4831 v.visit_after_block(*
this);
4852 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4920 v.visit_ba_block(*
this);
4924 v.visit_ba_block(*
this);
4940 this->
type.reset(obj.
type->clone());
4949 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
4962 type->set_parent(
this);
4977 type->set_parent(
this);
4985 type->set_parent(
this);
5042 v.visit_for_netcon(*
this);
5046 v.visit_for_netcon(*
this);
5062 this->
parameters.emplace_back(item->clone());
5071 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5084 item->set_parent(
this);
5100 ii->set_parent(
this);
5108 ii->set_parent(
this);
5138 return name->get_node_name();
5152 for (
auto& item : this->
solvefor) {
5166 for (
auto& item : this->
solvefor) {
5176 v.visit_kinetic_block(*
this);
5180 v.visit_kinetic_block(*
this);
5196 this->
name.reset(obj.
name->clone());
5200 this->
solvefor.emplace_back(item->clone());
5209 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5222 name->set_parent(
this);
5226 item->set_parent(
this);
5242 name->set_parent(
this);
5250 name->set_parent(
this);
5259 ii->set_parent(
this);
5267 ii->set_parent(
this);
5315 v.visit_unit_block(*
this);
5319 v.visit_unit_block(*
this);
5337 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5350 item->set_parent(
this);
5362 ii->set_parent(
this);
5370 ii->set_parent(
this);
5401 v.visit_constant_block(*
this);
5405 v.visit_constant_block(*
this);
5418 this->
statements.emplace_back(item->clone());
5423 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5436 item->set_parent(
this);
5448 ii->set_parent(
this);
5456 ii->set_parent(
this);
5483 v.visit_neuron_block(*
this);
5487 v.visit_neuron_block(*
this);
5508 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5553 return name->eval();
5569 v.visit_unit(*
this);
5573 v.visit_unit(*
this);
5589 this->
name.reset(obj.
name->clone());
5594 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5607 name->set_parent(
this);
5618 name->set_parent(
this);
5626 name->set_parent(
this);
5649 this->
unit->accept(
v);
5660 this->
unit->accept(
v);
5666 v.visit_double_unit(*
this);
5670 v.visit_double_unit(*
this);
5690 this->
unit.reset(obj.
unit->clone());
5695 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5708 value->set_parent(
this);
5712 unit->set_parent(
this);
5723 value->set_parent(
this);
5728 this->value =
value;
5731 value->set_parent(
this);
5740 unit->set_parent(
this);
5748 unit->set_parent(
this);
5761 return name->get_node_name();
5777 v.visit_local_var(*
this);
5781 v.visit_local_var(*
this);
5797 this->
name.reset(obj.
name->clone());
5802 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5815 name->set_parent(
this);
5826 name->set_parent(
this);
5834 name->set_parent(
this);
5870 v.visit_limits(*
this);
5874 v.visit_limits(*
this);
5890 this->
min.reset(obj.
min->clone());
5894 this->
max.reset(obj.
max->clone());
5899 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
5912 min->set_parent(
this);
5916 max->set_parent(
this);
5927 min->set_parent(
this);
5935 min->set_parent(
this);
5944 max->set_parent(
this);
5952 max->set_parent(
this);
5988 v.visit_number_range(*
this);
5992 v.visit_number_range(*
this);
6008 this->
min.reset(obj.
min->clone());
6012 this->
max.reset(obj.
max->clone());
6017 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6030 min->set_parent(
this);
6034 max->set_parent(
this);
6045 min->set_parent(
this);
6053 min->set_parent(
this);
6062 max->set_parent(
this);
6070 max->set_parent(
this);
6083 return name->get_node_name();
6101 this->
unit->accept(
v);
6115 this->
unit->accept(
v);
6121 v.visit_constant_var(*
this);
6125 v.visit_constant_var(*
this);
6141 this->
name.reset(obj.
name->clone());
6149 this->
unit.reset(obj.
unit->clone());
6154 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6167 name->set_parent(
this);
6171 value->set_parent(
this);
6175 unit->set_parent(
this);
6186 name->set_parent(
this);
6194 name->set_parent(
this);
6203 value->set_parent(
this);
6208 this->value =
value;
6211 value->set_parent(
this);
6220 unit->set_parent(
this);
6228 unit->set_parent(
this);
6249 v.visit_binary_operator(*
this);
6253 v.visit_binary_operator(*
this);
6269 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6288 this->value =
value;
6308 v.visit_unary_operator(*
this);
6312 v.visit_unary_operator(*
this);
6328 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6347 this->value =
value;
6367 v.visit_reaction_operator(*
this);
6371 v.visit_reaction_operator(*
this);
6387 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6406 this->value =
value;
6432 v.visit_paren_expression(*
this);
6436 v.visit_paren_expression(*
this);
6457 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6534 v.visit_binary_expression(*
this);
6538 v.visit_binary_expression(*
this);
6554 this->
lhs.reset(obj.
lhs->clone());
6560 this->
rhs.reset(obj.
rhs->clone());
6565 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6578 lhs->set_parent(
this);
6583 rhs->set_parent(
this);
6594 lhs->set_parent(
this);
6602 lhs->set_parent(
this);
6620 rhs->set_parent(
this);
6628 rhs->set_parent(
this);
6655 v.visit_diff_eq_expression(*
this);
6659 v.visit_diff_eq_expression(*
this);
6680 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6748 v.visit_unary_expression(*
this);
6752 v.visit_unary_expression(*
this);
6775 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6853 v.visit_non_lin_equation(*
this);
6857 v.visit_non_lin_equation(*
this);
6873 this->
lhs.reset(obj.
lhs->clone());
6877 this->
rhs.reset(obj.
rhs->clone());
6882 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
6895 lhs->set_parent(
this);
6899 rhs->set_parent(
this);
6910 lhs->set_parent(
this);
6918 lhs->set_parent(
this);
6927 rhs->set_parent(
this);
6935 rhs->set_parent(
this);
6971 v.visit_lin_equation(*
this);
6975 v.visit_lin_equation(*
this);
6991 this->
lhs.reset(obj.
lhs->clone());
6995 this->
rhs.reset(obj.
rhs->clone());
7000 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7013 lhs->set_parent(
this);
7017 rhs->set_parent(
this);
7028 lhs->set_parent(
this);
7036 lhs->set_parent(
this);
7045 rhs->set_parent(
this);
7053 rhs->set_parent(
this);
7066 return name->get_node_name();
7095 v.visit_function_call(*
this);
7099 v.visit_function_call(*
this);
7115 this->
name.reset(obj.
name->clone());
7119 this->
arguments.emplace_back(item->clone());
7124 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7137 name->set_parent(
this);
7141 item->set_parent(
this);
7153 name->set_parent(
this);
7161 name->set_parent(
this);
7170 ii->set_parent(
this);
7178 ii->set_parent(
this);
7214 v.visit_watch(*
this);
7218 v.visit_watch(*
this);
7243 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7260 value->set_parent(
this);
7288 value->set_parent(
this);
7293 this->value =
value;
7296 value->set_parent(
this);
7317 v.visit_ba_block_type(*
this);
7321 v.visit_ba_block_type(*
this);
7337 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7356 this->value =
value;
7368 return unit1->get_node_name();
7393 v.visit_unit_def(*
this);
7397 v.visit_unit_def(*
this);
7422 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7435 unit1->set_parent(
this);
7439 unit2->set_parent(
this);
7450 unit1->set_parent(
this);
7455 this->unit1 =
unit1;
7458 unit1->set_parent(
this);
7467 unit2->set_parent(
this);
7472 this->unit2 =
unit2;
7475 unit2->set_parent(
this);
7488 return name->get_node_name();
7509 this->
value->accept(v);
7517 this->
gt->accept(v);
7522 this->
unit2->accept(v);
7533 this->
value->accept(v);
7541 this->
gt->accept(v);
7546 this->
unit2->accept(v);
7552 v.visit_factor_def(*
this);
7556 v.visit_factor_def(*
this);
7564 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)
7572 this->
name.reset(obj.
name->clone());
7584 this->
gt.reset(obj.
gt->clone());
7593 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7606 name->set_parent(
this);
7610 value->set_parent(
this);
7614 unit1->set_parent(
this);
7618 gt->set_parent(
this);
7622 unit2->set_parent(
this);
7633 name->set_parent(
this);
7641 name->set_parent(
this);
7650 value->set_parent(
this);
7655 this->value =
value;
7658 value->set_parent(
this);
7667 unit1->set_parent(
this);
7672 this->unit1 =
unit1;
7675 unit1->set_parent(
this);
7684 gt->set_parent(
this);
7692 gt->set_parent(
this);
7701 unit2->set_parent(
this);
7706 this->unit2 =
unit2;
7709 unit2->set_parent(
this);
7745 v.visit_valence(*
this);
7749 v.visit_valence(*
this);
7765 this->
type.reset(obj.
type->clone());
7774 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7787 type->set_parent(
this);
7791 value->set_parent(
this);
7802 type->set_parent(
this);
7810 type->set_parent(
this);
7819 value->set_parent(
this);
7824 this->value =
value;
7827 value->set_parent(
this);
7848 v.visit_unit_state(*
this);
7852 v.visit_unit_state(*
this);
7868 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
7887 this->value =
value;
7904 n->set_parent(
this);
7913 n->set_parent(
this);
7938 while (first != last) {
7941 if (to_be_erased.erase(first->get()) == 0) {
7948 size_t out = last -
result;
7958 n->set_parent(
this);
7967 n->set_parent(
this);
7977 n->set_parent(
this);
8002 v.visit_local_list_statement(*
this);
8006 v.visit_local_list_statement(*
this);
8019 this->
variables.emplace_back(item->clone());
8024 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
8037 item->set_parent(
this);
8049 ii->set_parent(
this);
8057 ii->set_parent(
this);
8084 v.visit_model(*
this);
8088 v.visit_model(*
this);
8109 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
8122 title->set_parent(
this);
8133 title->set_parent(
this);
8138 this->title =
title;
8141 title->set_parent(
this);
8154 return name->get_node_name();
8179 v.visit_define(*
this);
8183 v.visit_define(*
this);
8199 this->
name.reset(obj.
name->clone());
8208 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
8221 name->set_parent(
this);
8225 value->set_parent(
this);
8236 name->set_parent(
this);
8244 name->set_parent(
this);
8253 value->set_parent(
this);
8258 this->value =
value;
8261 value->set_parent(
this);
8283 for (
auto& item : this->
blocks) {
8294 for (
auto& item : this->
blocks) {
8301 v.visit_include(*
this);
8305 v.visit_include(*
this);
8324 for (
auto& item : obj.
blocks) {
8325 this->
blocks.emplace_back(item->clone());
8330 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
8346 for (
auto& item :
blocks) {
8347 item->set_parent(
this);
8376 ii->set_parent(
this);
8384 ii->set_parent(
this);
8397 return name->get_node_name();
8415 this->
value->accept(v);
8420 this->
unit->accept(
v);
8425 this->
limit->accept(v);
8436 this->
value->accept(v);
8441 this->
unit->accept(
v);
8446 this->
limit->accept(v);
8452 v.visit_param_assign(*
this);
8456 v.visit_param_assign(*
this);
8472 this->
name.reset(obj.
name->clone());
8480 this->
unit.reset(obj.
unit->clone());
8489 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
8502 name->set_parent(
this);
8506 value->set_parent(
this);
8510 unit->set_parent(
this);
8514 limit->set_parent(
this);
8525 name->set_parent(
this);
8533 name->set_parent(
this);
8542 value->set_parent(
this);
8547 this->value =
value;
8550 value->set_parent(
this);
8559 unit->set_parent(
this);
8567 unit->set_parent(
this);
8576 limit->set_parent(
this);
8581 this->limit =
limit;
8584 limit->set_parent(
this);
8597 return name->get_node_name();
8629 this->
from->accept(v);
8634 this->
to->accept(v);
8639 this->
start->accept(v);
8644 this->
unit->accept(
v);
8665 this->
from->accept(v);
8670 this->
to->accept(v);
8675 this->
start->accept(v);
8680 this->
unit->accept(
v);
8691 v.visit_assigned_definition(*
this);
8695 v.visit_assigned_definition(*
this);
8711 this->
name.reset(obj.
name->clone());
8719 this->
from.reset(obj.
from->clone());
8723 this->
to.reset(obj.
to->clone());
8731 this->
unit.reset(obj.
unit->clone());
8740 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
8753 name->set_parent(
this);
8757 length->set_parent(
this);
8761 from->set_parent(
this);
8765 to->set_parent(
this);
8769 start->set_parent(
this);
8773 unit->set_parent(
this);
8777 abstol->set_parent(
this);
8788 name->set_parent(
this);
8796 name->set_parent(
this);
8805 length->set_parent(
this);
8813 length->set_parent(
this);
8822 from->set_parent(
this);
8830 from->set_parent(
this);
8839 to->set_parent(
this);
8847 to->set_parent(
this);
8856 start->set_parent(
this);
8861 this->start =
start;
8864 start->set_parent(
this);
8873 unit->set_parent(
this);
8881 unit->set_parent(
this);
8890 abstol->set_parent(
this);
8898 abstol->set_parent(
this);
8921 this->
ion->accept(v);
8932 this->
ion->accept(v);
8938 v.visit_conductance_hint(*
this);
8942 v.visit_conductance_hint(*
this);
8962 this->
ion.reset(obj.
ion->clone());
8967 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
8984 ion->set_parent(
this);
9012 ion->set_parent(
this);
9020 ion->set_parent(
this);
9047 v.visit_expression_statement(*
this);
9051 v.visit_expression_statement(*
this);
9072 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
9131 v.visit_protect_statement(*
this);
9135 v.visit_protect_statement(*
this);
9156 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
9201 return name->get_node_name();
9257 v.visit_from_statement(*
this);
9261 v.visit_from_statement(*
this);
9269 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)
9277 this->
name.reset(obj.
name->clone());
9281 this->
from.reset(obj.
from->clone());
9285 this->
to.reset(obj.
to->clone());
9298 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
9311 name->set_parent(
this);
9315 from->set_parent(
this);
9319 to->set_parent(
this);
9338 name->set_parent(
this);
9346 name->set_parent(
this);
9355 from->set_parent(
this);
9363 from->set_parent(
this);
9372 to->set_parent(
this);
9380 to->set_parent(
this);
9450 v.visit_while_statement(*
this);
9454 v.visit_while_statement(*
this);
9479 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
9563 for (
auto& item : this->
elseifs) {
9569 this->
elses->accept(v);
9582 for (
auto& item : this->
elseifs) {
9588 this->
elses->accept(v);
9594 v.visit_if_statement(*
this);
9598 v.visit_if_statement(*
this);
9603 : condition(condition), statement_block(statement_block), elseifs(elseifs), elses(elses) {
set_parent_in_children(); }
9607 : condition(condition), statement_block(statement_block), elseifs(elseifs), elses(elses) {
set_parent_in_children(); }
9621 for (
auto& item : obj.
elseifs) {
9622 this->
elseifs.emplace_back(item->clone());
9631 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
9652 item->set_parent(
this);
9657 elses->set_parent(
this);
9702 ii->set_parent(
this);
9710 ii->set_parent(
this);
9719 elses->set_parent(
this);
9724 this->elses =
elses;
9727 elses->set_parent(
this);
9763 v.visit_else_if_statement(*
this);
9767 v.visit_else_if_statement(*
this);
9792 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
9872 v.visit_else_statement(*
this);
9876 v.visit_else_statement(*
this);
9897 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
9947 n->set_parent(
this);
9956 n->set_parent(
this);
9981 while (first != last) {
9984 if (to_be_erased.erase(first->get()) == 0) {
9991 size_t out = last -
result;
10001 n->set_parent(
this);
10010 n->set_parent(
this);
10020 n->set_parent(
this);
10045 v.visit_watch_statement(*
this);
10049 v.visit_watch_statement(*
this);
10062 this->
statements.emplace_back(item->clone());
10067 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
10080 item->set_parent(
this);
10092 ii->set_parent(
this);
10100 ii->set_parent(
this);
10118 v.visit_mutex_lock(*
this);
10122 v.visit_mutex_lock(*
this);
10140 v.visit_mutex_unlock(*
this);
10144 v.visit_mutex_unlock(*
this);
10180 v.visit_conserve(*
this);
10184 v.visit_conserve(*
this);
10204 this->
expr.reset(obj.
expr->clone());
10209 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
10222 react->set_parent(
this);
10226 expr->set_parent(
this);
10237 react->set_parent(
this);
10242 this->react =
react;
10245 react->set_parent(
this);
10254 expr->set_parent(
this);
10262 expr->set_parent(
this);
10292 for (
auto& item : this->
species) {
10308 for (
auto& item : this->
species) {
10315 v.visit_compartment(*
this);
10319 v.visit_compartment(*
this);
10342 for (
auto& item : obj.
species) {
10343 this->
species.emplace_back(item->clone());
10348 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
10365 volume->set_parent(
this);
10369 item->set_parent(
this);
10398 volume->set_parent(
this);
10406 volume->set_parent(
this);
10415 ii->set_parent(
this);
10423 ii->set_parent(
this);
10453 for (
auto& item : this->
species) {
10469 for (
auto& item : this->
species) {
10476 v.visit_lon_diffuse(*
this);
10480 v.visit_lon_diffuse(*
this);
10500 this->
rate.reset(obj.
rate->clone());
10503 for (
auto& item : obj.
species) {
10504 this->
species.emplace_back(item->clone());
10509 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
10526 rate->set_parent(
this);
10530 item->set_parent(
this);
10559 rate->set_parent(
this);
10567 rate->set_parent(
this);
10576 ii->set_parent(
this);
10584 ii->set_parent(
this);
10655 v.visit_reaction_statement(*
this);
10659 v.visit_reaction_statement(*
this);
10664 : reaction1(reaction1), op(op), reaction2(reaction2), expression1(expression1), expression2(expression2) {
set_parent_in_children(); }
10668 : reaction1(reaction1), op(op), reaction2(reaction2), expression1(expression1), expression2(expression2) {
set_parent_in_children(); }
10694 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
10835 v.visit_lag_statement(*
this);
10839 v.visit_lag_statement(*
this);
10855 this->
name.reset(obj.
name->clone());
10864 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
10877 name->set_parent(
this);
10881 byname->set_parent(
this);
10892 name->set_parent(
this);
10900 name->set_parent(
this);
10909 byname->set_parent(
this);
10917 byname->set_parent(
this);
10944 v.visit_constant_statement(*
this);
10948 v.visit_constant_statement(*
this);
10969 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
11072 v.visit_table_statement(*
this);
11076 v.visit_table_statement(*
this);
11081 : table_vars(table_vars), depend_vars(depend_vars), from(from), to(to), with(with) {
set_parent_in_children(); }
11085 : table_vars(table_vars), depend_vars(depend_vars), from(from), to(to), with(with) {
set_parent_in_children(); }
11092 this->
table_vars.emplace_back(item->clone());
11100 this->
from.reset(obj.
from->clone());
11104 this->
to.reset(obj.
to->clone());
11108 this->
with.reset(obj.
with->clone());
11113 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
11126 item->set_parent(
this);
11131 item->set_parent(
this);
11136 from->set_parent(
this);
11140 to->set_parent(
this);
11144 with->set_parent(
this);
11155 ii->set_parent(
this);
11163 ii->set_parent(
this);
11172 ii->set_parent(
this);
11180 ii->set_parent(
this);
11189 from->set_parent(
this);
11197 from->set_parent(
this);
11206 to->set_parent(
this);
11214 to->set_parent(
this);
11223 with->set_parent(
this);
11231 with->set_parent(
this);
11247 return name->get_node_name();
11269 v.visit_suffix(*
this);
11273 v.visit_suffix(*
this);
11289 this->
type.reset(obj.
type->clone());
11293 this->
name.reset(obj.
name->clone());
11298 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
11311 type->set_parent(
this);
11315 name->set_parent(
this);
11326 type->set_parent(
this);
11334 type->set_parent(
this);
11343 name->set_parent(
this);
11351 name->set_parent(
this);
11364 return name->get_node_name();
11384 for (
auto& item : this->
readlist) {
11410 for (
auto& item : this->
readlist) {
11432 v.visit_useion(*
this);
11436 v.visit_useion(*
this);
11452 this->
name.reset(obj.
name->clone());
11456 this->
readlist.emplace_back(item->clone());
11460 this->
writelist.emplace_back(item->clone());
11473 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
11486 name->set_parent(
this);
11490 item->set_parent(
this);
11495 item->set_parent(
this);
11515 name->set_parent(
this);
11523 name->set_parent(
this);
11532 ii->set_parent(
this);
11540 ii->set_parent(
this);
11549 ii->set_parent(
this);
11557 ii->set_parent(
this);
11607 for (
auto& item : this->
currents) {
11615 for (
auto& item : this->
currents) {
11622 v.visit_nonspecific(*
this);
11626 v.visit_nonspecific(*
this);
11639 this->
currents.emplace_back(item->clone());
11644 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
11657 item->set_parent(
this);
11669 ii->set_parent(
this);
11677 ii->set_parent(
this);
11693 for (
auto& item : this->
currents) {
11701 for (
auto& item : this->
currents) {
11708 v.visit_electrode_current(*
this);
11712 v.visit_electrode_current(*
this);
11725 this->
currents.emplace_back(item->clone());
11730 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
11743 item->set_parent(
this);
11755 ii->set_parent(
this);
11763 ii->set_parent(
this);
11794 v.visit_range(*
this);
11798 v.visit_range(*
this);
11811 this->
variables.emplace_back(item->clone());
11816 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
11829 item->set_parent(
this);
11841 ii->set_parent(
this);
11849 ii->set_parent(
this);
11867 n->set_parent(
this);
11876 n->set_parent(
this);
11901 while (first != last) {
11904 if (to_be_erased.erase(first->get()) == 0) {
11911 size_t out = last -
result;
11921 n->set_parent(
this);
11930 n->set_parent(
this);
11940 n->set_parent(
this);
11965 v.visit_global(*
this);
11969 v.visit_global(*
this);
11982 this->
variables.emplace_back(item->clone());
11987 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12000 item->set_parent(
this);
12012 ii->set_parent(
this);
12020 ii->set_parent(
this);
12051 v.visit_random_var_list(*
this);
12055 v.visit_random_var_list(*
this);
12068 this->
variables.emplace_back(item->clone());
12073 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12086 item->set_parent(
this);
12098 ii->set_parent(
this);
12106 ii->set_parent(
this);
12124 n->set_parent(
this);
12133 n->set_parent(
this);
12158 while (first != last) {
12161 if (to_be_erased.erase(first->get()) == 0) {
12168 size_t out = last -
result;
12178 n->set_parent(
this);
12187 n->set_parent(
this);
12197 n->set_parent(
this);
12222 v.visit_pointer(*
this);
12226 v.visit_pointer(*
this);
12239 this->
variables.emplace_back(item->clone());
12244 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12257 item->set_parent(
this);
12269 ii->set_parent(
this);
12277 ii->set_parent(
this);
12308 v.visit_bbcore_pointer(*
this);
12312 v.visit_bbcore_pointer(*
this);
12325 this->
variables.emplace_back(item->clone());
12330 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12343 item->set_parent(
this);
12355 ii->set_parent(
this);
12363 ii->set_parent(
this);
12394 v.visit_external(*
this);
12398 v.visit_external(*
this);
12411 this->
variables.emplace_back(item->clone());
12416 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12429 item->set_parent(
this);
12441 ii->set_parent(
this);
12449 ii->set_parent(
this);
12467 v.visit_thread_safe(*
this);
12471 v.visit_thread_safe(*
this);
12498 v.visit_verbatim(*
this);
12502 v.visit_verbatim(*
this);
12523 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12582 v.visit_line_comment(*
this);
12586 v.visit_line_comment(*
this);
12607 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12666 v.visit_block_comment(*
this);
12670 v.visit_block_comment(*
this);
12691 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12750 v.visit_ontology_statement(*
this);
12754 v.visit_ontology_statement(*
this);
12775 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12825 n->set_parent(
this);
12834 n->set_parent(
this);
12841 return blocks.erase(first);
12846 NodeVector::const_iterator
Program::erase_node(NodeVector::const_iterator first, NodeVector::const_iterator last) {
12847 return blocks.erase(first, last);
12855 auto first =
blocks.begin();
12856 auto last =
blocks.end();
12859 while (first != last) {
12862 if (to_be_erased.erase(first->get()) == 0) {
12869 size_t out = last -
result;
12879 n->set_parent(
this);
12880 return blocks.insert(position,
n);
12888 n->set_parent(
this);
12898 n->set_parent(
this);
12908 for (
auto& item : this->
blocks) {
12916 for (
auto& item : this->
blocks) {
12923 v.visit_program(*
this);
12927 v.visit_program(*
this);
12939 for (
auto& item : obj.
blocks) {
12940 this->
blocks.emplace_back(item->clone());
12945 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
12957 for (
auto& item :
blocks) {
12958 item->set_parent(
this);
12970 ii->set_parent(
this);
12978 ii->set_parent(
this);
13009 v.visit_nrn_state_block(*
this);
13013 v.visit_nrn_state_block(*
this);
13031 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
13044 item->set_parent(
this);
13056 ii->set_parent(
this);
13064 ii->set_parent(
this);
13145 v.visit_eigen_newton_solver_block(*
this);
13149 v.visit_eigen_newton_solver_block(*
this);
13154 : 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(); }
13157 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)
13158 : 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(); }
13194 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
13424 v.visit_eigen_linear_solver_block(*
this);
13428 v.visit_eigen_linear_solver_block(*
this);
13433 : 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(); }
13436 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)
13437 : 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(); }
13469 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
13619 return name->get_node_name();
13662 v.visit_cvode_block(*
this);
13666 v.visit_cvode_block(*
this);
13674 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)
13682 this->
name.reset(obj.
name->clone());
13699 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
13712 name->set_parent(
this);
13716 n_odes->set_parent(
this);
13735 name->set_parent(
this);
13743 name->set_parent(
this);
13752 n_odes->set_parent(
this);
13760 n_odes->set_parent(
this);
13807 return name->get_node_name();
13841 v.visit_longitudinal_diffusion_block(*
this);
13845 v.visit_longitudinal_diffusion_block(*
this);
13850 :
name(
name), longitudinal_diffusion_statements(longitudinal_diffusion_statements), compartment_statements(compartment_statements) {
set_parent_in_children(); }
13854 :
name(
name), longitudinal_diffusion_statements(longitudinal_diffusion_statements), compartment_statements(compartment_statements) {
set_parent_in_children(); }
13861 this->
name.reset(obj.
name->clone());
13874 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
13887 name->set_parent(
this);
13906 name->set_parent(
this);
13914 name->set_parent(
this);
13975 v.visit_wrapped_expression(*
this);
13979 v.visit_wrapped_expression(*
this);
14000 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
14059 v.visit_derivimplicit_callback(*
this);
14063 v.visit_derivimplicit_callback(*
this);
14084 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
14152 v.visit_solution_expression(*
this);
14156 v.visit_solution_expression(*
this);
14181 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
14261 v.visit_update_dt(*
this);
14265 v.visit_update_dt(*
this);
14286 this->
token = std::shared_ptr<ModToken>(obj.
token->clone());
14299 value->set_parent(
this);
14310 value->set_parent(
this);
14315 this->value =
value;
14318 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.
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_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< 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.