DIPX: Enum Literals / Implicit Selector Expression

ryuukk_ ryuukk.dev at gmail.com
Sun Jun 26 10:49:47 UTC 2022


On Saturday, 25 June 2022 at 20:48:15 UTC, Basile B. wrote:
> On Saturday, 25 June 2022 at 16:10:03 UTC, ryuukk_ wrote:
>> I tried to implement this, i spent the whole day today on it, 
>> unfortunately, i'm unable to make progress, [...]
>> If anyone is willing to help me, that would be sweet
>
> I've implemented something similar in styx, it's called "parent 
> enum inference" but I dont know if it can be done the same way 
> in DMD. The architecture of the compiler is only partially 
> similar. I'll describe how this work for me, hope this'll help 
> ;)
>
> So in styx this works almost like a "WithStatement":
>
> A. Scope
>
> (Something that can be done very similarly in DMD)
>
> When it is wished to inferer enum parent names, I push a scope. 
> In this scope I add as member the equivalent of a "with" 
> expression, That exp gives, as an IdentExp, the enum.
>
> In my case I add really the same data type as with a 
> WithStatement, but there's a flag used to distinguish 
> expressions used for "with" and those used for "parent enum 
> inference". This is because in styx there is no special syntax 
> (in opposition to the leading dot proposed for what you try to 
> implement), it is just specified that this is tried at the very 
> end.
>
> Finally when it is not required to infer anymore, pop the scope.
>
>   related code:
>
>   - 
> https://gitlab.com/styx-lang/styx/-/blob/master/src/styx/semantic/declarations.sx#L147
>   - 
> https://gitlab.com/styx-lang/styx/-/blob/master/src/styx/scope.sx#L24
>
> example use, when the switched expression is an enum and to 
> allow inference on the cases:
>
>   - 
> https://gitlab.com/styx-lang/styx/-/blob/master/src/styx/semantic/statements.sx#L681
>
> B. Resolving
>
> (That part would be very different in DMD)
>
> When an identifier has been unsuccessfully resolved, the 
> expressions added in the scope are tried.
>
> - 
> https://gitlab.com/styx-lang/styx/-/blob/master/src/styx/semantic/expressions.sx#L2253

Thanks a lot for your detailed and helpful reply, will give it 
another try today!

Compiler stuff is quite intimidating


More information about the Digitalmars-d mailing list