Use raw grammar for production matching #449
Merged
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.
When building the SDO map we look for matching productions. Prior to this PR that's done by matching on the output of grammarkdown. That duplicates logic and also fails to handle cases where nodes are wrapped in
<ins>
, etc.This PR changes that logic to operate on the raw grammarkdown nodes, which hide the wrapping HTML tags where we don't need to worry about them, thus deduplicating some logic and also fixing #448.
This requires associating the generated HTML elements with the underlying Grammarkdown objects. For now we do this in a slightly hacky way where we index two lists of RHSes and assume they agree, which works fine. It would be better to keep track of this information when creating the nodes in the first place.