mirror of
https://github.com/GayPizzaSpecifications/pork.git
synced 2025-08-03 21:21:33 +00:00
vm: very basic virtual machine
This commit is contained in:
@ -36,16 +36,16 @@ abstract class Tool {
|
||||
|
||||
fun <T> visit(visitor: NodeVisitor<T>): T = visitor.visit(parse())
|
||||
|
||||
fun loadMainFunction(scope: Scope, setupEvaluator: Evaluator.() -> Unit = {}): CallableFunction {
|
||||
fun loadMainFunction(setupEvaluator: Evaluator.() -> Unit = {}): CallableFunction {
|
||||
val world = buildWorld()
|
||||
val evaluator = Evaluator(world, scope)
|
||||
val evaluator = Evaluator(world)
|
||||
setupEvaluator(evaluator)
|
||||
val resultingScope = evaluator.evaluate(rootImportLocator)
|
||||
return resultingScope.value("main") as CallableFunction
|
||||
}
|
||||
|
||||
fun loadMainFunctionStandard(scope: Scope, quiet: Boolean = false): CallableFunction =
|
||||
loadMainFunction(scope, setupEvaluator = {
|
||||
fun loadMainFunctionStandard(quiet: Boolean = false): CallableFunction =
|
||||
loadMainFunction(setupEvaluator = {
|
||||
addNativeProvider("internal", InternalNativeProvider(quiet = quiet))
|
||||
addNativeProvider("ffi", FfiNativeProvider())
|
||||
addNativeProvider("java", JavaNativeProvider())
|
||||
@ -60,8 +60,8 @@ abstract class Tool {
|
||||
return World(dynamicImportSource)
|
||||
}
|
||||
|
||||
fun run(scope: Scope, quiet: Boolean = false) {
|
||||
val main = loadMainFunctionStandard(scope, quiet = quiet)
|
||||
fun run(quiet: Boolean = false) {
|
||||
val main = loadMainFunctionStandard(quiet = quiet)
|
||||
main.call(emptyList(), CallStack())
|
||||
}
|
||||
}
|
||||
|
@ -11,5 +11,5 @@ fun main(args: Array<String>) {
|
||||
}
|
||||
val path = PlatformFsProvider.resolve(args[0])
|
||||
val tool = FileTool(path)
|
||||
tool.run(Scope.root())
|
||||
tool.run()
|
||||
}
|
||||
|
Reference in New Issue
Block a user