Fix precedence with PointerSymbols #268
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.
Motivation and context:
PointerSymbol
wasn't handling precedence correctly, i.e.(sym.A + sym.B) * sym.C
would evaluate tosym.A + (sym.B * sym.C)
. This PR changesPointerSymbol
to keep track of the full syntax tree to handle the precedence correctly. The class to construct this syntax tree is fairly general and covers also some operators not in use by NengoSPA currently, but this allows to reuse it more easily or implement additionalPointerSymbol
operators without changes to the syntax tree implementation. I intend to reuse that implementation to also provide betterSemanticPointer
Names with fewer parenthesis, but this will be a separate PR.Changes to
PointerSymbol
have been done in a backwards compatible manner with regard to the public interface.Fixes #267.
Interactions with other PRs:
none
How has this been tested?
How long should this take to review?
Where should a reviewer start?
Types of changes:
Checklist: