[spec] Phases of translation

Dibyendu Majumdar d.majumdar at gmail.com
Sat Jun 1 13:34:07 UTC 2019


On Tuesday, 21 May 2019 at 13:24:11 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.
>

Hi Walter, please would you share any insights regarding above?

Thanks and Regards
Dibyendu



More information about the Digitalmars-d mailing list