main: update IR locations + catch and print warnings

This commit is contained in:
Antoine Viallon 2024-01-05 23:34:42 +01:00
parent 5ed4c55522
commit 3e59cc84a7
Signed by: aviallon
GPG key ID: 186FC35EDEB25716

View file

@ -2,10 +2,11 @@ from __future__ import annotations
import argparse
import sys
import typing
from pprint import pprint
from . import semantic
from .errors import CompilationError
from . import semantic, ir, optimizations
from .errors import CompilationError, CompilationWarning
from .lexer import Lexer, Tokens
from .logger import rootLogger, LogLevel
from .parser import Parser
@ -52,9 +53,11 @@ def main():
context.check()
intermediate_representation = ast.intermediate_representation()
intermediate_representation = typing.cast(ast.intermediate_representation(), list[ir.IRAction])
pseudo_asm = [x.codegen() for x in intermediate_representation]
for i, action in enumerate(intermediate_representation):
action.ir_location.line = i
action.ir_location.ir = pseudo_asm
action.location.source = data
@ -70,6 +73,10 @@ def main():
raise e.__cause__
print(f"Caused by:\n{e.__cause__.__class__.__name__}: {e.__cause__}", file=sys.stderr)
finally:
CompilationWarning.show_warnings(data)
def print_ir(intermediate_representation: list[ir.IRAction]):
messages = []
for i, ir_item in enumerate(intermediate_representation):