import { Checker } from "./checker.ts"; import { Reporter } from "./info.ts"; import { Lexer } from "./lexer.ts"; import { Lowerer } from "./lowerer.ts"; import { Parser } from "./parser.ts"; import { Resolver } from "./resolver.ts"; /// TODO: find a better place for this function export async function compileWithDebug(path: string): Promise { const text = await Deno.readTextFile(path); const reporter = new Reporter(); const lexer = new Lexer(text, reporter); const parser = new Parser(lexer, reporter); const ast = parser.parseStmts(); new Resolver(reporter).resolve(ast); new Checker(reporter).check(ast); if (reporter.errorOccured()) { console.error("Errors occurred, stopping compilation."); } const lowerer = new Lowerer(); lowerer.lower(ast); lowerer.printProgram(); const program = lowerer.finish(); return program; }