accept @pure @nothrow @return attributes

Jonathan Marler via Digitalmars-d digitalmars-d at puremagic.com
Mon Jan 26 13:25:56 PST 2015


On Monday, 26 January 2015 at 21:12:50 UTC, Walter Bright wrote:
> On 1/26/2015 12:45 PM, Jonathan Marler wrote:
>> Just because they are function attributes does not mean
>> they were tokenized as "keywords".
>
> The lexer has no idea what a function attribute is or that now 
> it should be looking for attributes and then it should not be.

I feel like I keep repeating myself so I'm just going to 
copy/paste.

> If the grammar supported decorating a function with a list of id
tokens (not just keywords), then you could implement a variation
on the c++ solution of allowing "override" and "final" after a
function signature.

The lexer would recognize these attributes as normal ID tokens.  
The grammar could be amended to allow a function to be decorated 
with keywords and generic id tokens.  Then the meaning of those 
tokens would be handled by semantic analysis.  So the result 
would be that the lexer would see "nogc" and "safe" as normal id 
tokens (not keywords) which would be consumed as function 
attributes by the grammar.  As far as I can tell this results in 
the best of both worlds.  We can omit the '@' character on 
function attributes like safe and nogc but they don't have to be 
added as keywords.


More information about the Digitalmars-d mailing list