From 7eb77860e31f5a640d1a95ffb8c465f7d7aa6344 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Sat, 7 Mar 2020 20:11:56 +0100 Subject: [PATCH] Migrate block evaluator to Kotlin --- .../evaluation/evaluator/BlockEvaluator.kt | 20 +++++++++++++++++++ .../evaluation/evaluator/DefaultEvaluator.kt | 1 + 2 files changed, 21 insertions(+) create mode 100644 src/main/kotlin/io/smnp/evaluation/evaluator/BlockEvaluator.kt diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/BlockEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/BlockEvaluator.kt new file mode 100644 index 0000000..960b9b7 --- /dev/null +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/BlockEvaluator.kt @@ -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() + } +} \ No newline at end of file diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/DefaultEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/DefaultEvaluator.kt index e5ee530..0443b75 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/DefaultEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/DefaultEvaluator.kt @@ -9,6 +9,7 @@ class DefaultEvaluator : Evaluator() { override fun tryToEvaluate(node: Node, environment: Environment): EvaluatorOutput { return oneOf( + BlockEvaluator(), ThrowEvaluator(), ExpressionEvaluator() ).evaluate(node, environment)