MCPcopy Create free account
hub / github.com/Nic30/hdlConvertor / visitVariable_lvalue

Method visitVariable_lvalue

src/svConvertor/exprParser.cpp:409–445  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

407}
408
409unique_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
447unique_ptr<iHdlExprItem> VerExprParser::visitEvent_trigger(
448 sv2017Parser::Event_triggerContext *ctx) {

Callers 3

Calls 1

reduceFunction · 0.85

Tested by

no test coverage detected