Skip to content

Commit 9a22a9d

Browse files
committed
cleanup. removed unused fields
1 parent ab9e313 commit 9a22a9d

File tree

1 file changed

+24
-43
lines changed
  • src/commonMain/kotlin/com/github/murzagalin/evaluator

1 file changed

+24
-43
lines changed

src/commonMain/kotlin/com/github/murzagalin/evaluator/Token.kt

Lines changed: 24 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -17,54 +17,37 @@ sealed interface Token {
1717
value class Variable(val value: String) : Operand
1818
}
1919

20-
sealed class Operator(val priority: Int, val associativity: Associativity) : Token {
21-
object Plus : Operator(6, Associativity.LEFT)
22-
object Minus : Operator(6, Associativity.LEFT)
23-
object Multiplication : Operator(7, Associativity.LEFT)
24-
object Division : Operator(7, Associativity.LEFT)
25-
object Modulo : Operator(7, Associativity.LEFT)
26-
object Power : Operator(9, Associativity.RIGHT)
27-
object UnaryMinus : Operator(8, Associativity.RIGHT)
28-
object UnaryPlus : Operator(8, Associativity.RIGHT)
29-
30-
object And : Operator(3, Associativity.LEFT)
31-
object Or : Operator(2, Associativity.LEFT)
32-
object Not : Operator(4, Associativity.LEFT)
33-
34-
object GreaterThan : Operator(5, Associativity.LEFT) //>
35-
object GreaterEqualThan : Operator(5, Associativity.LEFT) //>=
36-
object LessThan : Operator(5, Associativity.LEFT) //<
37-
object LessEqualThan : Operator(5, Associativity.LEFT) //<=
38-
object Equal : Operator(5, Associativity.LEFT) //==
39-
object NotEqual : Operator(5, Associativity.LEFT) //!=
40-
41-
object TernaryIf : Operator(1, Associativity.RIGHT)
42-
object TernaryElse : Operator(1, Associativity.LEFT)
43-
object TernaryIfElse : Operator(1, Associativity.RIGHT)
20+
sealed interface Operator : Token {
21+
object Plus : Operator
22+
object Minus : Operator
23+
object Multiplication : Operator
24+
object Division : Operator
25+
object Modulo : Operator
26+
object Power : Operator
27+
object UnaryMinus : Operator
28+
object UnaryPlus : Operator
29+
30+
object And : Operator
31+
object Or : Operator
32+
object Not : Operator
33+
34+
object GreaterThan : Operator //>
35+
object GreaterEqualThan : Operator //>=
36+
object LessThan : Operator //<
37+
object LessEqualThan : Operator //<=
38+
object Equal : Operator //==
39+
object NotEqual : Operator //!=
40+
41+
object TernaryIf : Operator
42+
object TernaryElse : Operator
43+
object TernaryIfElse : Operator
4444
}
4545

4646
data class FunctionCall(
4747
val argsCount: Int,
4848
val function: Function
4949
) : Token {
5050

51-
operator fun invoke(args: List<Operand>): Operand {
52-
val functionArgs = mutableListOf<Any>()
53-
args.forEach {
54-
when (it) {
55-
is Operand.Number -> functionArgs.add(it.value)
56-
is Operand.Boolean -> functionArgs.add(it.value)
57-
else -> error("operand type ${it::class.simpleName} is not supported in function calls")
58-
}
59-
}
60-
61-
return when (val result = function(*functionArgs.toTypedArray())) {
62-
is Number -> Operand.Number(result.toDouble())
63-
is Boolean -> Operand.Boolean(result)
64-
else -> error("function return type ${result::class.simpleName} is not supported")
65-
}
66-
}
67-
6851
operator fun invoke(args: List<Any>) = function(*args.toTypedArray())
6952

7053
object Delimiter: Token
@@ -74,6 +57,4 @@ sealed interface Token {
7457
object Left : Bracket()
7558
object Right : Bracket()
7659
}
77-
78-
enum class Associativity { LEFT, RIGHT }
7960
}

0 commit comments

Comments
 (0)