Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add CLR algorithm #38

Open
mhhollomon opened this issue Oct 11, 2020 · 0 comments
Open

Add CLR algorithm #38

mhhollomon opened this issue Oct 11, 2020 · 0 comments
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@mhhollomon
Copy link
Owner

As a warm up to the LALR parser algorithm, implement Canonical LR(1).

@mhhollomon mhhollomon added this to the v0.3.0 milestone Oct 11, 2020
@mhhollomon mhhollomon added the enhancement New feature or request label Oct 11, 2020
@mhhollomon mhhollomon self-assigned this Oct 11, 2020
mhhollomon added a commit that referenced this issue Oct 11, 2020
start of infrastructure for #38
mhhollomon added a commit that referenced this issue Oct 12, 2020
Refactor the SLR parser generator to make a class out of it. This will
add the necessary hooks to allow multiple backends in preparation for
issue #38 and #11.

All backends are now subclasses of yalr::algo::parser_generator.

By convention source code will be in lib/algo and include/algo prefixed
by the name of the algorithm.
mhhollomon added a commit that referenced this issue Oct 13, 2020
AS a prelude for issues #11 and #38, refactor the code generation. All
three algorithms will share a common lexer. So add a driver layer that
does all the preamble and the lexer and (possibly) the embedded main.
That wat the parser_generator object is only resonsible for the actual
parser output.

For now - just add the wrapper layer and move the main generation to
that. Leave the lexer for the next step.
mhhollomon added a commit that referenced this issue Oct 16, 2020
The lexer will (normally) not change when the parser does, so isolate
it. Last refactor to support #11 and #38.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant