Hello,

On Sat, 5 Apr 2025, Bill Wendling wrote:

> > >>> So, a different attribute name “counted_by_exp” might be better?
> > >>
> > >> I would prefer Martins empty-decl idea to that: "counted_by(;len+0)"
> > >> (looks up 'len' normally, i.e. doesn't look into current struct).  It
> > >> would naturally fit the either decl+expr or lone-ident parse.
> > >> It may look weird but empty declarations are okayish IMHO.
> > >>
> > >> But overall: I just don't know, it all looks a bit unsexy, there only
> > seem
> > >> to be rocks and hard places :)
> > >
> > > I would not worry about this case too much, because I do expect this
> > > to be a common use case anyway.  That it looks strange may even be
> > > an advantage here, as it alerts the reader that this is unusual.
> >
> > This is an interesting point and also a good point. -:)
> >
> > The other thought that bother me a little bit is:
> >
> > For the same attribute, counted_by, is it strange to have two different
> > looking up rules
> > depending on the different number of arguments?l
> >
> 
> Sorry for the HTML. On my phone.
> 
> I think adding a ';' isn't the best option. It's too easy to overlook when
> reading the attribute and forget when writing the attribute.  Using a
> separate attribute name is much cleaner, IMO. Then again, I've been wrong
> before. :-)

So, what specifically would the two attributes do different?  FWIW: what 
worries me about accepting a generic expression in counted_by, that isn't 
prefixed by a (possibly empty) decl, is that after seeing a non-type 
identifier the parser doesn't yet know if it's the lone-ident case (look 
up in struct scope) or the expression case (look up everything in global 
scope).  It requires look-ahead to decide this.

Would that be the difference between the attributes?  One accepting _only_ 
a lone-ident or the decl+expr syntax, and the other _only_ expressions 
that are never looked up in struct-scope (not even if its lone-ident)?


Ciao,
Michael.

Reply via email to