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.
Add support for implementing compiler passes using a pattern/template system, similar to Scheme R5RS
syntax-rules
. SeeExplicitScopes
inbinding.py
for a particularly neat (imho) example of how to use this.This is implemented on top of the existing pass system, so all existing passes still work; some passes still have to be procedural, in particular scope-aware passes. (I don't think there's a theoretical reason that these couldn't be supported, but it would require some thought about how those interact.)
This has merge conflicts with #30; I'll address them once that's merged. (Or the other way around, I guess; I'm not sure which one would be harder to merge.)