RE: [sv-ec] Re: [sv-bc] Issues on Queue Operators

From: Steven Sharp <sharp_at_.....>
Date: Tue May 30 2006 - 15:56:40 PDT
>From: "Rich, Dave" <Dave_Rich@mentor.com>

>I disagree. We have {} working on strings, which are not integral
>values. The {} on queue types are effectively applying concatenation to
>that type.

You can't just "apply concatenation" to a type.  The operation has to be
defined for that type in the LRM.  For strings, concatenation is defined
in Table 4-2.  For queues, there are just some examples, with the intent
described in comments.

Also, Table 4-2 defines how you distinguish the string concatenation
operator from the integral concatenation operator.  This depends only
on the operands.  This means that it does not create the ambiguities
that occurred for the old array literal syntax used in port expressions,
which required knowing the type of the port declaration.  With queues,
there are no such rules defined.  Curly braces containing numbers could
be a queue concatenation or an integral concatenation operator.  Some
cases would require the LHS or the port declaration to disambiguate.
This would get us right back into the situations that the new assignment
pattern syntax resolved.

The statement in 5.14 that "The empty array literal {} is used to denote
an empty queue" indicates that the intent was for the curly braces used
in this section to be array literals.  It seems pretty clear that this
syntax did not get updated when the syntax for array literals (which are
assignment patterns) got changed.  The text indicates that these are
intended to be assignment patterns, not concatenations.  The syntax just
needs to be brought up to date.  Then we can deal with the fact that it
assumes some incorrect things about assignment patterns.

Steven Sharp
sharp@cadence.com
Received on Tue May 30 15:56:20 2006

This archive was generated by hypermail 2.1.8 : Tue May 30 2006 - 15:56:27 PDT