Adela Vais - SAOC Milestone 1 Update 1 - Dlang GLR Parser for GNU Bison

Adela Vais adela.vais99 at
Tue Sep 22 17:47:01 UTC 2020


This is an update post for #SAOC2020.

My plan for last week was to:
- work more with M4, because the GLR parser will be written in 
both D and M4, by continuing to work in the Bison repository;
- add documentation for Dlang in Bison's documentation (right now 
D is part of Bison as an experimental feature; this step would 
change that);
- start analyzing the existing D LALR1 parser;
- read an article that was recommended to me about LR parsers 
(details in the next section).

As of last week:
- I started analyzing the D LALR1 code, reading it and testing 
features along the way - that's how I discovered a bug[0].
- I modified the test, in Dlang and M4, in order to 
change the return value of yylex() from int to TokenKind[1]. It 
is still under review. I started adding to Bison's documentation, 
but it cannot be committed/made public without deciding on the 
return value of yylex() first - it is part of the Lexer 
interface, that the user must implement - so this step was pushed 
- I read and followed the examples from this article[2] 
recommended by Akim Demaille (one of my mentors and Bison 
co-maintainer), to better understand the LALR1 and GLR algorithms 
and to have a smoother transition for learning about GLR.
- I needed a way of extracting the number of characters consumed 
by std.conv.parse, for location tracking purposes in Bison's D 
calc example, so I made a PR for dlang/phobos[3].

The plan for next week is:
- to continue analyzing the LALR1 D parser;
- to continue familiarizing myself with the M4 functions used 
within the repo;
- to start analyzing the C and C++ existing parsers, by writing 
programs that would help me understand the key differences 
between them.

General milestones can be found in my first SAoC post[4].


More information about the Digitalmars-d mailing list