Skip to content
Snippets Groups Projects
Commit 9a22d559 authored by Daniel Bauer's avatar Daniel Bauer :speech_balloon:
Browse files

extend symbol canonicalization: recurse into statements, skip empty nodes and...

extend symbol canonicalization: recurse into statements, skip empty nodes and raise if anything unknown is encountered
parent 3b9860fb
No related branches found
No related tags found
No related merge requests found
Pipeline #74218 passed
...@@ -3,7 +3,15 @@ from ..memory import PsSymbol ...@@ -3,7 +3,15 @@ from ..memory import PsSymbol
from ..exceptions import PsInternalCompilerError from ..exceptions import PsInternalCompilerError
from ..ast import PsAstNode from ..ast import PsAstNode
from ..ast.structural import PsDeclaration, PsAssignment, PsLoop, PsConditional, PsBlock from ..ast.structural import (
PsDeclaration,
PsAssignment,
PsLoop,
PsConditional,
PsBlock,
PsStatement,
PsEmptyLeafMixIn,
)
from ..ast.expressions import PsSymbolExpr, PsExpression from ..ast.expressions import PsSymbolExpr, PsExpression
from ...types import constify from ...types import constify
...@@ -117,3 +125,14 @@ class CanonicalizeSymbols: ...@@ -117,3 +125,14 @@ class CanonicalizeSymbols:
case PsBlock(statements): case PsBlock(statements):
for stmt in statements[::-1]: for stmt in statements[::-1]:
self.visit(stmt, cc) self.visit(stmt, cc)
case PsStatement(expr):
self.visit(expr, cc)
case PsEmptyLeafMixIn():
...
case unknown:
raise PsInternalCompilerError(
f"Can't canonicalize symbols in {unknown} ({repr(unknown)})."
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment