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 adds a visitor suitable for basic backwards analyses. In doing so, we refactor the visit_* functions to place them inside a class. This makes it possible to override one or more of the methods, as we do in aslBackwardsVisitor for visit_stmts.
The backwards visitor has the same limitations as the existing forwards visitor. That is, merging results at control flow joins is difficult to do. However, for simple analyses, this can be worked around with careful use of enter/exit scope.
There is naming confusion in aslVisitor / aslForwardsVisitor / aslBackwardsVisitor which would be good to fix. aslVisitor defines the visit actions for specific AST nodes, whereas the aslForwardsVisitor/aslBackwardsVisitor applies these recursively in a particular order. Maybe these can be called aslForwardsTransform...?