Migrate block evaluator to Kotlin

This commit is contained in:
2020-03-07 20:11:56 +01:00
parent 31e194a566
commit 7eb77860e3
2 changed files with 21 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
package io.smnp.evaluation.evaluator
import io.smnp.dsl.ast.model.node.BlockNode
import io.smnp.dsl.ast.model.node.Node
import io.smnp.evaluation.environment.Environment
import io.smnp.evaluation.model.entity.EvaluatorOutput
import io.smnp.evaluation.model.enumeration.EvaluationResult
class BlockEvaluator : Evaluator() {
override fun supportedNodes() = listOf(BlockNode::class)
override fun tryToEvaluate(node: Node, environment: Environment): EvaluatorOutput {
val evaluator = DefaultEvaluator()
val ok = (node as BlockNode).statements.all {
evaluator.evaluate(it, environment).result == EvaluationResult.OK
}
return if(ok) EvaluatorOutput.ok() else EvaluatorOutput.fail()
}
}

View File

@@ -9,6 +9,7 @@ class DefaultEvaluator : Evaluator() {
override fun tryToEvaluate(node: Node, environment: Environment): EvaluatorOutput {
return oneOf(
BlockEvaluator(),
ThrowEvaluator(),
ExpressionEvaluator()
).evaluate(node, environment)