New lexer 2½: store expansions from the inside out #829
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This shortens the lexer by 100 lines and simplifies access to expansion contents, since it usually needs the deepest one, not the top-level one.
(This eliminates the
lookupExpansion
macro, since all three uses can now be an ordinaryfor (struct Expansion *exp = lexerState->expansions; exp; exp = exp->parent)
loop.)Fixes #813 and resolves a
FIXME
comment inshiftChar
Note that this forks off of PR #799; that one is simpler and can be reviewed+merged on its own.
@NieDzejkob I'd really appreciate if you run the fuzzer on this branch to make sure the previous issue is resolved and see if there are any segfaults left.