feat(core): add compile and run pipeline

This commit is contained in:
dualfroz committed 2026-08-26 12:25:00 +02:00
1 parent 79c256af68
commit cf1992f73c
1 file changed
+43
+43
View File
@@ -0,0 +1,43 @@
package lumen
import lumen.ast.Stmt
import lumen.compiler.Compiler
import lumen.lexer.Lexer
import lumen.lexer.Token
import lumen.module.ModuleLoader
import lumen.parser.Parser
import lumen.runtime.FunctionValue
import lumen.vm.Vm
import java.io.File
object Lumen {
fun tokenize(source: String): List<Token> = Lexer(source).scan()
fun parse(source: String): List<Stmt> = Parser(tokenize(source)).parseProgram()
fun compile(source: String): FunctionValue = Compiler().compile(parse(source))
fun run(source: String, out: Appendable = System.out): Value {
val script = compile(source)
return Vm(out).interpret(script)
}
fun runToString(source: String): String {
val buffer = StringBuilder()
run(source, buffer)
return buffer.toString()
}
fun runFile(file: File, out: Appendable = System.out): Value {
val vm = Vm(out)
return ModuleLoader(vm).load(file)
}
fun runFileToString(path: String): String {
val buffer = StringBuilder()
runFile(File(path), buffer)
return buffer.toString()
}
}
typealias Value = lumen.runtime.Value