| 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 ¶llel_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) |
no test coverage detected