[orx-expression-evaluator] Fix for antlr-kotlin 0.1.2

This commit is contained in:
Edwin Jakobs
2024-02-01 21:13:28 +01:00
parent 34d2321cc4
commit 2dec46accc

View File

@@ -87,11 +87,11 @@ internal class ExpressionListener(
val right = doubleStack.pop() val right = doubleStack.pop()
val left = doubleStack.pop() val left = doubleStack.pop()
val result = when (val operator = ctx.operator?.type) { val result = when (val operator = ctx.operator?.type) {
KeyLangLexer.Tokens.PLUS.id -> left + right KeyLangLexer.Tokens.PLUS -> left + right
KeyLangParser.Tokens.MINUS.id -> left - right KeyLangParser.Tokens.MINUS -> left - right
KeyLangParser.Tokens.ASTERISK.id -> left * right KeyLangParser.Tokens.ASTERISK -> left * right
KeyLangParser.Tokens.DIVISION.id -> left / right KeyLangParser.Tokens.DIVISION -> left / right
KeyLangParser.Tokens.PERCENTAGE.id -> mod(left, right) KeyLangParser.Tokens.PERCENTAGE -> mod(left, right)
else -> error("operator '$operator' not implemented") else -> error("operator '$operator' not implemented")
} }
doubleStack.push(result) doubleStack.push(result)
@@ -106,10 +106,10 @@ internal class ExpressionListener(
val left = doubleStack.pop() val left = doubleStack.pop()
val right = doubleStack.pop() val right = doubleStack.pop()
val result = when (val operator = ctx.operator?.type) { val result = when (val operator = ctx.operator?.type) {
KeyLangParser.Tokens.PLUS.id -> left + right KeyLangParser.Tokens.PLUS -> left + right
KeyLangParser.Tokens.MINUS.id -> right - left KeyLangParser.Tokens.MINUS -> right - left
KeyLangParser.Tokens.ASTERISK.id -> left * right KeyLangParser.Tokens.ASTERISK -> left * right
KeyLangParser.Tokens.DIVISION.id -> left / right KeyLangParser.Tokens.DIVISION -> left / right
else -> error("operator '$operator' not implemented") else -> error("operator '$operator' not implemented")
} }
doubleStack.push(result) doubleStack.push(result)
@@ -248,13 +248,13 @@ internal class ExpressionListener(
override fun visitTerminal(node: TerminalNode) { override fun visitTerminal(node: TerminalNode) {
val type = node.symbol?.type val type = node.symbol?.type
if (type == KeyLangParser.Tokens.INTLIT.id) { if (type == KeyLangParser.Tokens.INTLIT) {
doubleStack.push(node.text.toDouble()) doubleStack.push(node.text.toDouble())
} }
if (type == KeyLangParser.Tokens.DECLIT.id) { if (type == KeyLangParser.Tokens.DECLIT) {
doubleStack.push(node.text.toDouble()) doubleStack.push(node.text.toDouble())
} }
if (type == KeyLangParser.Tokens.ID.id) { if (type == KeyLangParser.Tokens.ID) {
val name = node.text.replace("`", "") val name = node.text.replace("`", "")
@Suppress("DIVISION_BY_ZERO") @Suppress("DIVISION_BY_ZERO")
when (val idType = idTypeStack.pop()) { when (val idType = idTypeStack.pop()) {