Where is pragma Declaration in the grammar?

Stefan Koch uplink.coder at googlemail.com
Sat Dec 5 03:55:52 UTC 2020


On Saturday, 5 December 2020 at 02:59:58 UTC, Paul Backus wrote:
> On Saturday, 5 December 2020 at 00:57:04 UTC, Stefan Koch wrote:
>> Hi,
>>
>> today I've been dusting my SDC fork and implemented a 
>> rudimentary version of pragma(msg).
>>
>> I could pragmaStatement
>>
>> as in void f()
>> {
>>    pragma(msg, typeof(f));
>> }
>>
>> but not a declaration as in
>> pragma(msg, typeof(f))
>> without a function body.
>
> They're under Attribute:
>
> https://dlang.org/spec/grammar.html#Attribute
>
> The syntax tree for `pragma(msg, typeof(f))` in a declaration 
> context would be:
>
> DeclDef
>   AttributeSpecifier
>     Attribute
>       Pragma
>         pragma(msg, typeof(f))
>     DeclarationBlock
>       DeclDef
>         ;

The Decldef is not optional.
This is for pragmas like pragma mangle that affect symbols.


More information about the Digitalmars-d-learn mailing list