I agree that the style of this section could have been greatly improved, but those *examples* start out by "as defined below" and could easily have been converted to a table. The ambiguities are no different than those for computing the width of an expression; you look at the assignment context to resolve them. I think some people just have a problem with the idea of overloading the {} operator. In any case, there are two implementations out there that have been able to support this without requiring the ' mark, and one of them doesn't even allow the ' mark. I would rather spend the time to clarify the text in the LRM than change the syntax for the users once again. Dave > -----Original Message----- > From: Steven Sharp [mailto:sharp@cadence.com] > Sent: Tuesday, May 30, 2006 3:57 PM > To: Brad.Pierce@synopsys.com; sv-ec@eda.org; Rich, Dave > Subject: RE: [sv-ec] Re: [sv-bc] Issues on Queue Operators > > > >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.comReceived on Tue May 30 16:52:14 2006
This archive was generated by hypermail 2.1.8 : Tue May 30 2006 - 16:52:18 PDT