| 407 | } |
| 408 | |
| 409 | unique_ptr<iHdlExprItem> VerExprParser::visitVariable_lvalue( |
| 410 | sv2017Parser::Variable_lvalueContext *ctx) { |
| 411 | //variable_lvalue: |
| 412 | // LBRACE variable_lvalue ( COMMA variable_lvalue )* RBRACE |
| 413 | // | package_or_class_scoped_hier_id_with_select |
| 414 | // | ( assignment_pattern_expression_type )? assignment_pattern_variable_lvalue |
| 415 | // | streaming_concatenation |
| 416 | //; |
| 417 | auto vls = ctx->variable_lvalue(); |
| 418 | if (vls.size()) { |
| 419 | if (vls.size() == 1) { |
| 420 | return visitVariable_lvalue(vls[0]); |
| 421 | } |
| 422 | vector<unique_ptr<iHdlExprItem>> parts; |
| 423 | for (auto vl : vls) { |
| 424 | parts.push_back(visitVariable_lvalue(vl)); |
| 425 | } |
| 426 | |
| 427 | return reduce(parts, HdlOpType::CONCAT); |
| 428 | } |
| 429 | auto pid = ctx->package_or_class_scoped_hier_id_with_select(); |
| 430 | if (pid) { |
| 431 | return visitPackage_or_class_scoped_hier_id_with_select(pid); |
| 432 | } |
| 433 | auto apvl = ctx->assignment_pattern_variable_lvalue(); |
| 434 | if (apvl) { |
| 435 | NotImplementedLogger::print( |
| 436 | "VerExprParser.visitVariable_lvalue - assignment_pattern_variable_lvalue", |
| 437 | ctx); |
| 438 | } |
| 439 | auto sc = ctx->streaming_concatenation(); |
| 440 | assert(sc); |
| 441 | NotImplementedLogger::print( |
| 442 | "VerExprParser.visitVariable_lvalue - assignment_pattern_variable_lvalue", |
| 443 | ctx); |
| 444 | return create_object<HdlExprNotImplemented>(ctx); |
| 445 | } |
| 446 | |
| 447 | unique_ptr<iHdlExprItem> VerExprParser::visitEvent_trigger( |
| 448 | sv2017Parser::Event_triggerContext *ctx) { |
no test coverage detected