[spec] Phases of translation

Dibyendu Majumdar d.majumdar at gmail.com
Tue May 21 13:24:11 UTC 2019


On Monday, 20 May 2019 at 22:17:07 UTC, Dibyendu Majumdar wrote:
> On Monday, 20 May 2019 at 16:13:39 UTC, Walter Bright wrote:
>
>> The crucial thing to know is that the tokenizing is 
>> independent of parsing, and parsing is independent of semantic 
>> analysis.
>>
>
> I am trying to understand this aspect - I found the small write 
> up in the Intro section not very clear. Would be great if you 
> could so a session on how things work - maybe video cast?
>
> For example, the mixin declaration has to convert a string to 
> AST I guess? When does this happen? Does it not need to invoke 
> the lexer on the generated string and build AST while already 
> in the semantic stage?
>

Currently the Intro says:

The process of compiling is divided into multiple phases. Each 
phase has no dependence on subsequent phases. For example, the 
scanner is not perturbed by the semantic analyzer. This 
separation of the passes makes language tools like syntax 
directed editors relatively easy to produce. It also is possible 
to compress D source by storing it in ‘tokenized’ form.

I feel this description is unclear, and it might just reflect how 
DMD is implemented. I haven't implemented a C++ parser but 
parsers I have worked with - such as for C - it is always the 
case that lexer doesn't get impacted by the semantic analysis. 
The standard process is to get a stream of tokens from the lexer 
and work with that. It is also conceivable that someone could 
create a "dumb" AST first for C++, and as a subsequent phase add 
semantic meaning to the AST, just as is done for D.

For now I propose to remove this paragraph until there is a 
better description available. Please would you review my pull 
request as it it is blocking me from doing further work.

Thanks and Regards
Dibyendu




More information about the Digitalmars-d mailing list