diff --git a/src/main/kotlin/io/smnp/SMNP.kt b/src/main/kotlin/io/smnp/SMNP.kt index 50291ed..3f314b8 100644 --- a/src/main/kotlin/io/smnp/SMNP.kt +++ b/src/main/kotlin/io/smnp/SMNP.kt @@ -1,21 +1,32 @@ package io.smnp +import io.smnp.api.enumeration.DataType +import io.smnp.api.model.Value +import io.smnp.api.matcher.Matcher.Companion.listOf +import io.smnp.api.matcher.Matcher.Companion.ofType +import io.smnp.api.signature.Signature import io.smnp.dsl.ast.parser.RootParser import io.smnp.dsl.token.tokenizer.DefaultTokenizer import io.smnp.evaluation.environment.Environment -import io.smnp.evaluation.evaluator.RootEvaluator +import io.smnp.evaluation.evaluator.DefaultEvaluator fun main(args: Array) { - val code = "{ \"a\" -> [14, 15, 16], 4 -> @c }" + val code = "[false, [@D], 1, 2, 3, 4]" val tokenizer = DefaultTokenizer() val parser = RootParser() - val evaluator = RootEvaluator() + val evaluator = DefaultEvaluator() val lines = code.split("\n") val tokens = tokenizer.tokenize(lines) val ast = parser.parse(tokens) - val value = evaluator.evaluate(ast.node, Environment()) - println(value) + val value = evaluator.evaluate(ast.node.children[0], Environment()).value!! + + val signature = Signature.vararg(ofType(DataType.INT), ofType( + DataType.BOOL), listOf(DataType.NOTE)) + + println(signature) + + println(signature.parse(value.value!! as List)) } \ No newline at end of file diff --git a/src/main/kotlin/io/smnp/data/enumeration/DataType.kt b/src/main/kotlin/io/smnp/api/enumeration/DataType.kt similarity index 96% rename from src/main/kotlin/io/smnp/data/enumeration/DataType.kt rename to src/main/kotlin/io/smnp/api/enumeration/DataType.kt index 6c6b11f..9f0d314 100644 --- a/src/main/kotlin/io/smnp/data/enumeration/DataType.kt +++ b/src/main/kotlin/io/smnp/api/enumeration/DataType.kt @@ -1,4 +1,4 @@ -package io.smnp.data.enumeration +package io.smnp.api.enumeration import io.smnp.data.entity.Note import kotlin.reflect.KClass diff --git a/src/main/kotlin/io/smnp/api/environment/Environment.kt b/src/main/kotlin/io/smnp/api/environment/Environment.kt new file mode 100644 index 0000000..6fd6be6 --- /dev/null +++ b/src/main/kotlin/io/smnp/api/environment/Environment.kt @@ -0,0 +1,4 @@ +package io.smnp.api.environment + +class Environment { +} \ No newline at end of file diff --git a/src/main/kotlin/io/smnp/data/signature/Matcher.kt b/src/main/kotlin/io/smnp/api/matcher/Matcher.kt similarity index 89% rename from src/main/kotlin/io/smnp/data/signature/Matcher.kt rename to src/main/kotlin/io/smnp/api/matcher/Matcher.kt index 22573a6..098cc96 100644 --- a/src/main/kotlin/io/smnp/data/signature/Matcher.kt +++ b/src/main/kotlin/io/smnp/api/matcher/Matcher.kt @@ -1,7 +1,7 @@ -package io.smnp.data.signature +package io.smnp.api.matcher -import io.smnp.data.enumeration.DataType -import io.smnp.data.model.Value +import io.smnp.api.enumeration.DataType +import io.smnp.api.model.Value class Matcher(val type: DataType?, private val matcher: (Value) -> Boolean, private val string: String, val optional: Boolean = false) { @@ -32,7 +32,12 @@ class Matcher(val type: DataType?, private val matcher: (Value) -> Boolean, priv companion object { fun optional(matcher: Matcher): Matcher { - return Matcher(matcher.type, matcher.matcher, "${matcher.string}?", true) + return Matcher( + matcher.type, + matcher.matcher, + "${matcher.string}?", + true + ) } fun mapOfMatchers(keyMatchers: List, valueMatchers: List): Matcher { @@ -92,7 +97,11 @@ class Matcher(val type: DataType?, private val matcher: (Value) -> Boolean, priv } fun ofTypes(vararg types: DataType): Matcher { - return Matcher(null, { it.type in types }, "<${types.joinToString(", ") { it.name.toLowerCase() }}>") + return Matcher( + null, + { it.type in types }, + "<${types.joinToString(", ") { it.name.toLowerCase() }}>" + ) } fun ofType(type: DataType): Matcher { diff --git a/src/main/kotlin/io/smnp/data/signature/ArgumentsList.kt b/src/main/kotlin/io/smnp/api/model/ArgumentsList.kt similarity index 88% rename from src/main/kotlin/io/smnp/data/signature/ArgumentsList.kt rename to src/main/kotlin/io/smnp/api/model/ArgumentsList.kt index ef96622..afff450 100644 --- a/src/main/kotlin/io/smnp/data/signature/ArgumentsList.kt +++ b/src/main/kotlin/io/smnp/api/model/ArgumentsList.kt @@ -1,6 +1,4 @@ -package io.smnp.data.signature - -import io.smnp.data.model.Value +package io.smnp.api.model class ArgumentsList(val isValid: Boolean, val arguments: List) { operator fun get(index: Int) = arguments[index] diff --git a/src/main/kotlin/io/smnp/data/model/Value.kt b/src/main/kotlin/io/smnp/api/model/Value.kt similarity index 84% rename from src/main/kotlin/io/smnp/data/model/Value.kt rename to src/main/kotlin/io/smnp/api/model/Value.kt index 33948fd..27d7eb9 100644 --- a/src/main/kotlin/io/smnp/data/model/Value.kt +++ b/src/main/kotlin/io/smnp/api/model/Value.kt @@ -1,7 +1,7 @@ -package io.smnp.data.model +package io.smnp.api.model import io.smnp.data.entity.Note -import io.smnp.data.enumeration.DataType +import io.smnp.api.enumeration.DataType import io.smnp.error.ShouldNeverReachThisLineException class Value private constructor(val type: DataType, val value: Any?, val properties: Map = emptyMap()) { @@ -33,19 +33,22 @@ class Value private constructor(val type: DataType, val value: Any?, val propert } fun string(value: String): Value { - return Value(DataType.STRING, value, hashMapOf( + return Value( + DataType.STRING, value, hashMapOf( Pair("length", int(value.length)) )) } fun list(value: List): Value { - return Value(DataType.LIST, value, hashMapOf( + return Value( + DataType.LIST, value, hashMapOf( Pair("size", int(value.size)) )) } fun map(value: Map): Value { - return Value(DataType.MAP, value, hashMapOf( + return Value( + DataType.MAP, value, hashMapOf( Pair("size", int(value.size)), Pair("keys", list(value.keys.toList())), Pair("values", list(value.values.toList())) @@ -53,7 +56,8 @@ class Value private constructor(val type: DataType, val value: Any?, val propert } fun note(value: Note): Value { - return Value(DataType.NOTE, value, hashMapOf( + return Value( + DataType.NOTE, value, hashMapOf( Pair("pitch", string(value.pitch.toString())), Pair("octave", int(value.octave)), Pair("duration", int(value.duration)), diff --git a/src/main/kotlin/io/smnp/data/signature/Signature.kt b/src/main/kotlin/io/smnp/api/signature/Signature.kt similarity index 73% rename from src/main/kotlin/io/smnp/data/signature/Signature.kt rename to src/main/kotlin/io/smnp/api/signature/Signature.kt index c418405..2869bd0 100644 --- a/src/main/kotlin/io/smnp/data/signature/Signature.kt +++ b/src/main/kotlin/io/smnp/api/signature/Signature.kt @@ -1,6 +1,8 @@ -package io.smnp.data.signature +package io.smnp.api.signature -import io.smnp.data.model.Value +import io.smnp.api.matcher.Matcher +import io.smnp.api.model.ArgumentsList +import io.smnp.api.model.Value interface Signature { fun parse(arguments: List): ArgumentsList diff --git a/src/main/kotlin/io/smnp/data/signature/SimpleSignature.kt b/src/main/kotlin/io/smnp/api/signature/SimpleSignature.kt similarity index 64% rename from src/main/kotlin/io/smnp/data/signature/SimpleSignature.kt rename to src/main/kotlin/io/smnp/api/signature/SimpleSignature.kt index ce9f4bf..8b61eb3 100644 --- a/src/main/kotlin/io/smnp/data/signature/SimpleSignature.kt +++ b/src/main/kotlin/io/smnp/api/signature/SimpleSignature.kt @@ -1,6 +1,8 @@ -package io.smnp.data.signature +package io.smnp.api.signature -import io.smnp.data.model.Value +import io.smnp.api.matcher.Matcher +import io.smnp.api.model.ArgumentsList +import io.smnp.api.model.Value class SimpleSignature(private vararg val signature: Matcher) : Signature { override fun parse(arguments: List): ArgumentsList { @@ -8,7 +10,11 @@ class SimpleSignature(private vararg val signature: Matcher) : Signature { return ArgumentsList.invalid() } - return ArgumentsList(signature.zip(arguments).all { (matcher, argument) -> matcher.match(argument) }, arguments) + return ArgumentsList(signature.zip(arguments).all { (matcher, argument) -> + matcher.match( + argument + ) + }, arguments) } override fun toString() = "(${signature.joinToString(", ")})" diff --git a/src/main/kotlin/io/smnp/data/signature/VarargSignature.kt b/src/main/kotlin/io/smnp/api/signature/VarargSignature.kt similarity index 90% rename from src/main/kotlin/io/smnp/data/signature/VarargSignature.kt rename to src/main/kotlin/io/smnp/api/signature/VarargSignature.kt index 1fda364..f10f3e2 100644 --- a/src/main/kotlin/io/smnp/data/signature/VarargSignature.kt +++ b/src/main/kotlin/io/smnp/api/signature/VarargSignature.kt @@ -1,6 +1,8 @@ -package io.smnp.data.signature +package io.smnp.api.signature -import io.smnp.data.model.Value +import io.smnp.api.matcher.Matcher +import io.smnp.api.model.ArgumentsList +import io.smnp.api.model.Value class VarargSignature(private val varargMatcher: Matcher, private vararg val signature: Matcher) : Signature { override fun parse(arguments: List): ArgumentsList { diff --git a/src/main/kotlin/io/smnp/evaluation/environment/Environment.kt b/src/main/kotlin/io/smnp/evaluation/environment/Environment.kt deleted file mode 100644 index 7b3a9b6..0000000 --- a/src/main/kotlin/io/smnp/evaluation/environment/Environment.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.smnp.evaluation.environment - -class Environment { -} \ No newline at end of file diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/AccessOperatorEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/AccessOperatorEvaluator.kt index 98bddb7..7d5a1f9 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/AccessOperatorEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/AccessOperatorEvaluator.kt @@ -5,7 +5,7 @@ import io.smnp.dsl.ast.model.node.FunctionCallNode import io.smnp.dsl.ast.model.node.IdentifierNode import io.smnp.dsl.ast.model.node.Node import io.smnp.error.EvaluationException -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput class AccessOperatorEvaluator : Evaluator() { diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/BlockEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/BlockEvaluator.kt index 960b9b7..8a981d1 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/BlockEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/BlockEvaluator.kt @@ -2,7 +2,7 @@ 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.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput import io.smnp.evaluation.model.enumeration.EvaluationResult diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/BoolLiteralEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/BoolLiteralEvaluator.kt index 9cb4d93..b6ec34c 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/BoolLiteralEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/BoolLiteralEvaluator.kt @@ -1,9 +1,9 @@ package io.smnp.evaluation.evaluator -import io.smnp.data.model.Value +import io.smnp.api.model.Value import io.smnp.dsl.ast.model.node.BoolLiteralNode import io.smnp.dsl.ast.model.node.Node -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput class BoolLiteralEvaluator : Evaluator() { diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/ConditionEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/ConditionEvaluator.kt index 634be75..cb09394 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/ConditionEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/ConditionEvaluator.kt @@ -1,11 +1,11 @@ package io.smnp.evaluation.evaluator -import io.smnp.data.enumeration.DataType +import io.smnp.api.enumeration.DataType import io.smnp.dsl.ast.model.node.ConditionNode import io.smnp.dsl.ast.model.node.Node import io.smnp.dsl.ast.model.node.NoneNode import io.smnp.error.EvaluationException -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput class ConditionEvaluator : Evaluator() { diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/DefaultEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/DefaultEvaluator.kt index 0249035..9602447 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/DefaultEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/DefaultEvaluator.kt @@ -1,7 +1,7 @@ package io.smnp.evaluation.evaluator import io.smnp.dsl.ast.model.node.Node -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput class DefaultEvaluator : Evaluator() { diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/Evaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/Evaluator.kt index ed5e0fe..7aa89b1 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/Evaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/Evaluator.kt @@ -2,7 +2,7 @@ package io.smnp.evaluation.evaluator import io.smnp.dsl.ast.model.node.Node import io.smnp.error.EvaluationException -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput import io.smnp.evaluation.model.enumeration.EvaluationResult import kotlin.reflect.KClass diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/ExpressionEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/ExpressionEvaluator.kt index a34544f..1e06a42 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/ExpressionEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/ExpressionEvaluator.kt @@ -1,7 +1,7 @@ package io.smnp.evaluation.evaluator import io.smnp.dsl.ast.model.node.Node -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput import io.smnp.evaluation.model.enumeration.EvaluationResult diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/FloatLiteralEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/FloatLiteralEvaluator.kt index 194247e..150a9c9 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/FloatLiteralEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/FloatLiteralEvaluator.kt @@ -1,9 +1,9 @@ package io.smnp.evaluation.evaluator -import io.smnp.data.model.Value +import io.smnp.api.model.Value import io.smnp.dsl.ast.model.node.FloatLiteralNode import io.smnp.dsl.ast.model.node.Node -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput class FloatLiteralEvaluator : Evaluator() { diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/IntegerLiteralEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/IntegerLiteralEvaluator.kt index e7affbe..7ae9122 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/IntegerLiteralEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/IntegerLiteralEvaluator.kt @@ -1,9 +1,9 @@ package io.smnp.evaluation.evaluator -import io.smnp.data.model.Value +import io.smnp.api.model.Value import io.smnp.dsl.ast.model.node.IntegerLiteralNode import io.smnp.dsl.ast.model.node.Node -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput class IntegerLiteralEvaluator : Evaluator() { diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/ListEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/ListEvaluator.kt index 00245c3..d3cc5d9 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/ListEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/ListEvaluator.kt @@ -1,9 +1,9 @@ package io.smnp.evaluation.evaluator -import io.smnp.data.model.Value +import io.smnp.api.model.Value import io.smnp.dsl.ast.model.node.ListNode import io.smnp.dsl.ast.model.node.Node -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput class ListEvaluator : Evaluator() { diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/LogicOperatorEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/LogicOperatorEvaluator.kt index 1f8d389..20e6d4a 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/LogicOperatorEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/LogicOperatorEvaluator.kt @@ -1,14 +1,14 @@ package io.smnp.evaluation.evaluator -import io.smnp.data.enumeration.DataType -import io.smnp.data.model.Value +import io.smnp.api.enumeration.DataType +import io.smnp.api.model.Value import io.smnp.dsl.ast.model.node.LogicOperatorNode import io.smnp.dsl.ast.model.node.Node import io.smnp.dsl.ast.model.node.TokenNode import io.smnp.dsl.token.model.enumeration.TokenType import io.smnp.error.EvaluationException import io.smnp.error.ShouldNeverReachThisLineException -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput class LogicOperatorEvaluator : Evaluator() { diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/MapEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/MapEvaluator.kt index d282733..2a1bf72 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/MapEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/MapEvaluator.kt @@ -1,10 +1,10 @@ package io.smnp.evaluation.evaluator -import io.smnp.data.model.Value +import io.smnp.api.model.Value import io.smnp.dsl.ast.model.node.MapEntryNode import io.smnp.dsl.ast.model.node.MapNode import io.smnp.dsl.ast.model.node.Node -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput class MapEvaluator : Evaluator() { diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/MinusOperatorEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/MinusOperatorEvaluator.kt index bda4d8a..fe71837 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/MinusOperatorEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/MinusOperatorEvaluator.kt @@ -1,11 +1,11 @@ package io.smnp.evaluation.evaluator -import io.smnp.data.enumeration.DataType -import io.smnp.data.model.Value +import io.smnp.api.enumeration.DataType +import io.smnp.api.model.Value import io.smnp.dsl.ast.model.node.MinusOperatorNode import io.smnp.dsl.ast.model.node.Node import io.smnp.error.EvaluationException -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput class MinusOperatorEvaluator : Evaluator() { diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/NotOperatorEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/NotOperatorEvaluator.kt index ec9349d..46750dd 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/NotOperatorEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/NotOperatorEvaluator.kt @@ -1,9 +1,9 @@ package io.smnp.evaluation.evaluator -import io.smnp.data.model.Value +import io.smnp.api.model.Value import io.smnp.dsl.ast.model.node.Node import io.smnp.dsl.ast.model.node.NotOperatorNode -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput class NotOperatorEvaluator : Evaluator() { diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/NoteLiteralEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/NoteLiteralEvaluator.kt index 6631e4c..b14506a 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/NoteLiteralEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/NoteLiteralEvaluator.kt @@ -1,10 +1,10 @@ package io.smnp.evaluation.evaluator import io.smnp.data.entity.Note -import io.smnp.data.model.Value +import io.smnp.api.model.Value import io.smnp.dsl.ast.model.node.Node import io.smnp.dsl.ast.model.node.NoteLiteralNode -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput class NoteLiteralEvaluator : Evaluator() { diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/PowerOperatorEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/PowerOperatorEvaluator.kt index 17bc483..bb5ba14 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/PowerOperatorEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/PowerOperatorEvaluator.kt @@ -1,10 +1,10 @@ package io.smnp.evaluation.evaluator -import io.smnp.data.model.Value +import io.smnp.api.model.Value import io.smnp.dsl.ast.model.node.Node import io.smnp.dsl.ast.model.node.PowerOperatorNode import io.smnp.error.EvaluationException -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput import kotlin.math.pow diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/ProductOperatorEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/ProductOperatorEvaluator.kt index 06377d8..074dea4 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/ProductOperatorEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/ProductOperatorEvaluator.kt @@ -1,13 +1,13 @@ package io.smnp.evaluation.evaluator -import io.smnp.data.model.Value +import io.smnp.api.model.Value import io.smnp.dsl.ast.model.node.Node import io.smnp.dsl.ast.model.node.ProductOperatorNode import io.smnp.dsl.ast.model.node.TokenNode import io.smnp.dsl.token.model.enumeration.TokenType import io.smnp.error.EvaluationException import io.smnp.error.ShouldNeverReachThisLineException -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput import io.smnp.evaluation.util.NumberUnification.unify diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/RelationOperatorEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/RelationOperatorEvaluator.kt index e09ae76..6459766 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/RelationOperatorEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/RelationOperatorEvaluator.kt @@ -1,12 +1,12 @@ package io.smnp.evaluation.evaluator -import io.smnp.data.model.Value +import io.smnp.api.model.Value import io.smnp.dsl.ast.model.node.Node import io.smnp.dsl.ast.model.node.RelationOperatorNode import io.smnp.dsl.ast.model.node.TokenNode import io.smnp.error.EvaluationException import io.smnp.error.ShouldNeverReachThisLineException -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput import io.smnp.evaluation.util.NumberUnification.unify diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/RootEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/RootEvaluator.kt index 7274ede..c35097c 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/RootEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/RootEvaluator.kt @@ -2,7 +2,7 @@ package io.smnp.evaluation.evaluator import io.smnp.dsl.ast.model.node.Node import io.smnp.dsl.ast.model.node.RootNode -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput import io.smnp.evaluation.model.enumeration.EvaluationResult diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/StringLiteralEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/StringLiteralEvaluator.kt index 2d9f2b5..ff1ec4a 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/StringLiteralEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/StringLiteralEvaluator.kt @@ -1,9 +1,9 @@ package io.smnp.evaluation.evaluator -import io.smnp.data.model.Value +import io.smnp.api.model.Value import io.smnp.dsl.ast.model.node.Node import io.smnp.dsl.ast.model.node.StringLiteralNode -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput class StringLiteralEvaluator : Evaluator() { diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/SumOperatorEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/SumOperatorEvaluator.kt index 6a73153..67ad77b 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/SumOperatorEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/SumOperatorEvaluator.kt @@ -1,13 +1,13 @@ package io.smnp.evaluation.evaluator -import io.smnp.data.model.Value +import io.smnp.api.model.Value import io.smnp.dsl.ast.model.node.Node import io.smnp.dsl.ast.model.node.SumOperatorNode import io.smnp.dsl.ast.model.node.TokenNode import io.smnp.dsl.token.model.enumeration.TokenType import io.smnp.error.EvaluationException import io.smnp.error.ShouldNeverReachThisLineException -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput import io.smnp.evaluation.util.NumberUnification.unify diff --git a/src/main/kotlin/io/smnp/evaluation/evaluator/ThrowEvaluator.kt b/src/main/kotlin/io/smnp/evaluation/evaluator/ThrowEvaluator.kt index 2e8577c..df3ac64 100644 --- a/src/main/kotlin/io/smnp/evaluation/evaluator/ThrowEvaluator.kt +++ b/src/main/kotlin/io/smnp/evaluation/evaluator/ThrowEvaluator.kt @@ -3,7 +3,7 @@ package io.smnp.evaluation.evaluator import io.smnp.dsl.ast.model.node.Node import io.smnp.dsl.ast.model.node.ThrowNode import io.smnp.error.CustomException -import io.smnp.evaluation.environment.Environment +import io.smnp.api.environment.Environment import io.smnp.evaluation.model.entity.EvaluatorOutput class ThrowEvaluator : Evaluator() { diff --git a/src/main/kotlin/io/smnp/evaluation/model/entity/EvaluatorOutput.kt b/src/main/kotlin/io/smnp/evaluation/model/entity/EvaluatorOutput.kt index fc8e1f4..9880c13 100644 --- a/src/main/kotlin/io/smnp/evaluation/model/entity/EvaluatorOutput.kt +++ b/src/main/kotlin/io/smnp/evaluation/model/entity/EvaluatorOutput.kt @@ -1,6 +1,6 @@ package io.smnp.evaluation.model.entity -import io.smnp.data.model.Value +import io.smnp.api.model.Value import io.smnp.evaluation.model.enumeration.EvaluationResult class EvaluatorOutput private constructor(val result: EvaluationResult, val value: Value?) { diff --git a/src/main/kotlin/io/smnp/evaluation/util/NumberUnification.kt b/src/main/kotlin/io/smnp/evaluation/util/NumberUnification.kt index 53bbce3..49574d9 100644 --- a/src/main/kotlin/io/smnp/evaluation/util/NumberUnification.kt +++ b/src/main/kotlin/io/smnp/evaluation/util/NumberUnification.kt @@ -1,7 +1,7 @@ package io.smnp.evaluation.util -import io.smnp.data.enumeration.DataType -import io.smnp.data.model.Value +import io.smnp.api.enumeration.DataType +import io.smnp.api.model.Value object NumberUnification { fun unify(vararg numbers: Value, int: (List) -> Value, float: (List) -> Value): Value {