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
from ..exceptions import PsInternalCompilerError
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 ...types import constify
......@@ -117,3 +125,14 @@ class CanonicalizeSymbols:
case PsBlock(statements):
for stmt in statements[::-1]:
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