Adela Vais - SAOC Milestone 1 Update 1 - Dlang GLR Parser for GNU Bison
adela.vais99 at gmail.com
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
- 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.
- I modified the test calc.at, in Dlang and M4, in order to
change the return value of yylex() from int to TokenKind. 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
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.
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
General milestones can be found in my first SAoC post.
More information about the Digitalmars-d