MCPcopy Create free account
hub / github.com/covscript/covscript / parse_define_var

Method parse_define_var

sources/instance/instance.cpp:251–276  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

249 }
250
251 void instance_type::parse_define_var(tree_type<token_base *>::iterator it, bool constant, bool link)
252 {
253 if (it.data()->get_type() == token_types::parallel) {
254 auto &parallel_list = static_cast<token_parallel *>(it.data())->get_parallel();
255 for (auto &t : parallel_list)
256 parse_define_var(t.root(), constant, link);
257 }
258 else {
259 token_base *root = it.data();
260 switch (static_cast<token_signal *>(root)->get_signal()) {
261 case signal_types::asi_: {
262 const var &val = constant ? static_cast<token_value *>(it.right().data())->get_value() : parse_expr(it.right());
263 storage.add_var_no_return(static_cast<token_id *>(it.left().data())->get_id(),
264 constant || link ? val : copy(val),
265 constant);
266 break;
267 }
268 case signal_types::bind_: {
269 parse_define_structured_binding(it, constant, link);
270 break;
271 }
272 default:
273 throw runtime_error("Wrong grammar for variable definition(6).");
274 }
275 }
276 }
277
278 void
279 instance_type::check_define_structured_binding(tree_type<token_base *>::iterator it, bool regist)

Callers 2

preprocessMethod · 0.80
run_implMethod · 0.80

Calls 9

runtime_errorClass · 0.85
dataMethod · 0.80
get_signalMethod · 0.80
rightMethod · 0.80
add_var_no_returnMethod · 0.80
leftMethod · 0.80
copyFunction · 0.50
get_typeMethod · 0.45
rootMethod · 0.45

Tested by

no test coverage detected