Perform some code refactor

This commit is contained in:
2020-03-12 20:23:18 +01:00
parent 10a7dc8823
commit e7567a1078
8 changed files with 22 additions and 22 deletions

View File

@@ -37,7 +37,8 @@ class DefaultEnvironment : Environment {
}
if(foundFunctions.size > 1) {
throw RuntimeException("Found ${foundFunctions.size} functions with name of $foundFunctions")
throw RuntimeException("Found ${foundFunctions.size} functions with name of $name: [${foundFunctions.map { it.module.canonicalName }.joinToString()}]")
}
val function = foundFunctions[0]
@@ -56,7 +57,7 @@ class DefaultEnvironment : Environment {
}
if(foundMethods.size > 1) {
throw RuntimeException("Found ${foundMethods.size} methods with name of '$foundMethods' for ${format(obj)}")
throw RuntimeException("Found ${foundMethods.size} methods with name of $name for ${format(obj)}: [${foundMethods.map { it.module.canonicalName }.joinToString()}]")
}
val method = foundMethods[0]

View File

@@ -10,12 +10,12 @@ class RootEvaluator : Evaluator() {
override fun supportedNodes() = listOf(RootNode::class)
override fun tryToEvaluate(node: Node, environment: Environment): EvaluatorOutput {
val evaluator = oneOf(
val evaluator = assert(oneOf(
ImportEvaluator(),
ExpressionEvaluator(),
FunctionDefinitionEvaluator(),
DefaultEvaluator()
)
), "correct statement")
for(child in node.children) {
val output = evaluator.evaluate(child, environment)

View File

@@ -11,7 +11,7 @@ object DefaultModuleRegistry : ModuleRegistry {
pluginManager.startPlugins()
pluginManager.getExtensions(ModuleDefinition::class.java).forEach {
modules.add(Pair(it.modulePath(), Module.create(it.modulePath(), it.functions(), it.methods())))
modules.add(it.path to it.module())
}
}

View File

@@ -5,6 +5,7 @@ import io.smnp.dsl.token.tokenizer.DefaultTokenizer
import io.smnp.environment.DefaultEnvironment
import io.smnp.environment.Environment
import io.smnp.evaluation.evaluator.RootEvaluator
import io.smnp.evaluation.model.enumeration.EvaluationResult
import java.io.File
class Interpreter {
@@ -18,7 +19,11 @@ class Interpreter {
val ast = parser.parse(tokens)
val environment = createEnvironment()
evaluator.evaluate(ast.node, environment)
val result = evaluator.evaluate(ast.node, environment)
if(result.result == EvaluationResult.FAILED) {
throw RuntimeException("Evaluation failed")
}
}
private fun createEnvironment(): Environment {