diff --git a/orx-expression-evaluator/build.gradle.kts b/orx-expression-evaluator/build.gradle.kts index 8c28caef..4f59af37 100644 --- a/orx-expression-evaluator/build.gradle.kts +++ b/orx-expression-evaluator/build.gradle.kts @@ -1,5 +1,5 @@ import com.strumenta.antlrkotlin.gradle.AntlrKotlinTask -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.KotlinCompile plugins { org.openrndr.extra.convention.`kotlin-multiplatform` @@ -29,9 +29,6 @@ val generateKotlinGrammarSource = tasks.register("generateKotli outputDirectory = layout.buildDirectory.dir(outDir).get().asFile } -tasks.withType { - kotlinOptions.freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn") -} kotlin { sourceSets { @@ -61,6 +58,6 @@ kotlin { } } -tasks.withType { +tasks.withType> { dependsOn(generateKotlinGrammarSource) } diff --git a/orx-expression-evaluator/src/commonMain/kotlin/Expressions.kt b/orx-expression-evaluator/src/commonMain/kotlin/Expressions.kt index 7178cae7..2796b703 100644 --- a/orx-expression-evaluator/src/commonMain/kotlin/Expressions.kt +++ b/orx-expression-evaluator/src/commonMain/kotlin/Expressions.kt @@ -5,13 +5,14 @@ package org.openrndr.extra.expressions import org.antlr.v4.kotlinruntime.* import org.antlr.v4.kotlinruntime.tree.ParseTreeWalker import org.antlr.v4.kotlinruntime.tree.TerminalNode +import org.openrndr.collections.pop +import org.openrndr.collections.push import org.openrndr.expressions.parser.KeyLangLexer import org.openrndr.expressions.parser.KeyLangParser import org.openrndr.expressions.parser.KeyLangParserBaseListener import org.openrndr.extra.noise.uniform import org.openrndr.math.* -import java.util.* import kotlin.math.* typealias Function0 = () -> Double @@ -49,14 +50,14 @@ internal class ExpressionListener( val constants: Map = mapOf() ) : KeyLangParserBaseListener() { - val doubleStack = Stack() - val functionStack = Stack<(DoubleArray) -> Double>() + val doubleStack = ArrayDeque() + val functionStack = ArrayDeque<(DoubleArray) -> Double>() - val idTypeStack = Stack() + val idTypeStack = ArrayDeque() var lastExpressionResult: Double? = null - val exceptionStack = Stack() + val exceptionStack = ArrayDeque() override fun exitExpressionStatement(ctx: KeyLangParser.ExpressionStatementContext) { @@ -280,8 +281,8 @@ internal class ExpressionListener( val function: (DoubleArray) -> Double = when (name) { "sqrt" -> { x -> sqrt(x[0]) } - "radians" -> { x -> Math.toRadians(x[0]) } - "degrees" -> { x -> Math.toDegrees(x[0]) } + "radians" -> { x -> x[0].asRadians } + "degrees" -> { x -> x[0].asDegrees } "cos" -> { x -> cos(x[0]) } "sin" -> { x -> sin(x[0]) } "tan" -> { x -> tan(x[0]) }