feat(cli): integrate checker in compile command

This commit is contained in:
2026-05-28 17:35:38 +02:00
parent f882eebaf5
commit 4b62c78874

View File

@@ -1,5 +1,7 @@
import ast import ast
import logging
from dataclasses import dataclass from dataclasses import dataclass
from pathlib import Path
from typing import Optional, TextIO from typing import Optional, TextIO
import click import click
@@ -8,11 +10,13 @@ import midas.ast.midas as m
import midas.ast.python as p import midas.ast.python as p
from midas.ast.location import Location from midas.ast.location import Location
from midas.ast.printer import PythonAstPrinter from midas.ast.printer import PythonAstPrinter
from midas.checker.checker import Checker
from midas.cli.highlighter import Highlighter, MidasHighlighter, PythonHighlighter from midas.cli.highlighter import Highlighter, MidasHighlighter, PythonHighlighter
from midas.lexer.midas import MidasLexer from midas.lexer.midas import MidasLexer
from midas.lexer.token import Token, TokenType from midas.lexer.token import Token, TokenType
from midas.parser.midas import MidasParser from midas.parser.midas import MidasParser
from midas.parser.python import PythonParser from midas.parser.python import PythonParser
from midas.resolver.resolver import Resolver
@click.group() @click.group()
@@ -23,7 +27,15 @@ def midas():
@midas.command() @midas.command()
@click.argument("file", type=click.File("r")) @click.argument("file", type=click.File("r"))
def compile(file: TextIO): def compile(file: TextIO):
raise NotImplementedError logging.basicConfig(level=logging.DEBUG)
source: str = file.read()
tree: ast.Module = ast.parse(source, filename=file.name)
parser = PythonParser()
stmts: list[p.Stmt] = parser.parse_module(tree)
resolver = Resolver()
resolver.resolve(*stmts)
checker = Checker(resolver.locals, base_dir=Path(file.name).resolve().parent)
checker.check(stmts)
@midas.group() @midas.group()
@@ -109,3 +121,7 @@ def highlight(output: TextIO, file: TextIO):
else: else:
raise ValueError("Unsupported file type") raise ValueError("Unsupported file type")
highlighter.dump(output) highlighter.dump(output)
if __name__ == "__main__":
midas()