47 const std::shared_ptr<ast::Ast>&)
const;
60 const std::string simulator =
"coreneuron";
72 : simulator(simulator) {}
81 bool find_unhandled_ast_nodes(
Ast& node)
const;
91 std::string return_error_if_solve_method_is_unhandled(
93 const std::shared_ptr<ast::Ast>& ast_node)
const;
103 template <
typename T>
105 const std::shared_ptr<ast::Ast>& ast_node)
const {
106 auto real_type_block = std::dynamic_pointer_cast<T>(ast_node);
107 auto token = real_type_block->get_token();
109 return fmt::format(
"\"{}\" {}construct found at [{}] is not handled\n",
110 ast_node->get_node_name(),
111 real_type_block->get_nmodl_name(),
112 token ? token->position() :
"unknown location");
113 }
catch (
const std::logic_error&) {
114 return fmt::format(
"{}construct found at [{}] is not handled\n",
115 real_type_block->get_nmodl_name(),
116 token ? token->position() :
"unknown location");
128 template <
typename T>
130 const std::shared_ptr<ast::Ast>& ast_node)
const {
131 auto real_type_block = std::dynamic_pointer_cast<T>(ast_node);
132 return fmt::format(
"{}construct found at [{}] is not handled\n",
133 real_type_block->get_nmodl_name(),
134 real_type_block->get_token()->position());
138 std::string return_error_extern(
ast::Ast& node,
139 const std::shared_ptr<ast::Ast>& ast_node)
const;
149 std::string return_error_global_var(
ast::Ast& node,
150 const std::shared_ptr<ast::Ast>& ast_node)
const;
152 std::string return_error_param_var(
ast::Ast& node,
153 const std::shared_ptr<ast::Ast>& ast_node)
const;
164 std::string return_error_if_no_bbcore_read_write(
166 const std::shared_ptr<ast::Ast>& ast_node)
const;