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

Method visitArray_range_expression

src/svConvertor/exprParser.cpp:80–105  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

78}
79
80unique_ptr<iHdlExprItem> VerExprParser::visitArray_range_expression(
81 sv2017Parser::Array_range_expressionContext *ctx) {
82 // array_range_expression:
83 // expression ( ( operator_plus_minus )? COLON expression )?;
84 auto es = ctx->expression();
85 auto e0 = visitExpression(es[0]);
86 if (es.size() == 1) {
87 return e0;
88 }
89 assert(es.size() == 2);
90 auto e1 = visitExpression(es[1]);
91 auto _pm = ctx->operator_plus_minus();
92 HdlOpType op = HdlOpType::DOWNTO;
93 if (_pm) {
94 // e0 is offset
95 // e1 is width
96 // pm specifies direction of slice from offset
97 auto pm = VerLiteralParser::visitOperator_plus_minus(_pm);
98 if (pm == HdlOpType::ADD) {
99 op = HdlOpType::PART_SELECT_POST;
100 } else {
101 op = HdlOpType::PART_SELECT_PRE;
102 }
103 }
104 return create_object<HdlOp>(ctx, move(e0), op, move(e1));
105}
106
107unique_ptr<iHdlExprItem> VerExprParser::visitIdentifier_doted_index_at_end(
108 sv2017Parser::Identifier_doted_index_at_endContext *ctx) {

Callers 2

visitPrimaryIndexMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected