Adela Vais - SAOC Milestone 1 Update 1 - Dlang GLR Parser for GNU Bison
Adela Vais
adela.vais99 at gmail.com
Tue Sep 22 17:47:01 UTC 2020
Hello!
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 calc.at, 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
back.
- 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].
[0]:
https://github.com/akimd/bison/commit/f8cd049ecc493067720ab873747391795ce59c64
[1]: https://github.com/adelavais/bison/commits/yylex
[2]:
https://www.codeproject.com/Articles/5259825/GLR-Parsing-in-Csharp-How-to-Use-The-Most-Powerful
[3]: https://github.com/dlang/phobos/pull/7642
[4]:
https://forum.dlang.org/post/ngdkxwyhrcduspuslfoe@forum.dlang.org
More information about the Digitalmars-d
mailing list