From 207a7e5160960ba5b132b0a2a66727f5489b34e7 Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Sun, 10 Apr 2022 13:24:17 +0200 Subject: [PATCH] move operator lists --- codeCore/src/prog8/code/core/Operators.kt | 18 ++++++++++++++++++ .../src/prog8/optimizer/BinExprSplitter.kt | 1 + .../optimizer/ConstantFoldingOptimizer.kt | 1 + .../prog8/optimizer/ExpressionSimplifier.kt | 5 +---- .../compiler/astprocessing/VariousCleanups.kt | 5 +---- .../prog8/ast/expressions/AstExpressions.kt | 17 ----------------- compilerAst/src/prog8/ast/walk/AstWalker.kt | 1 + 7 files changed, 23 insertions(+), 25 deletions(-) create mode 100644 codeCore/src/prog8/code/core/Operators.kt diff --git a/codeCore/src/prog8/code/core/Operators.kt b/codeCore/src/prog8/code/core/Operators.kt new file mode 100644 index 000000000..ca4e40abb --- /dev/null +++ b/codeCore/src/prog8/code/core/Operators.kt @@ -0,0 +1,18 @@ +package prog8.code.core + +val AssociativeOperators = setOf("+", "*", "&", "|", "^", "or", "and", "xor", "==", "!=") +val ComparisonOperators = setOf("==", "!=", "<", ">", "<=", ">=") +val AugmentAssignmentOperators = setOf("+", "-", "/", "*", "&", "|", "^", "<<", ">>", "%", "and", "or", "xor") +val LogicalOperators = setOf("and", "or", "xor", "not") +val BitwiseOperators = setOf("&", "|", "^") + +fun invertedComparisonOperator(operator: String) = + when (operator) { + "==" -> "!=" + "!=" -> "==" + "<" -> ">=" + ">" -> "<=" + "<=" -> ">" + ">=" -> "<" + else -> null + } diff --git a/codeOptimizers/src/prog8/optimizer/BinExprSplitter.kt b/codeOptimizers/src/prog8/optimizer/BinExprSplitter.kt index 7f1d453ee..408fdc76c 100644 --- a/codeOptimizers/src/prog8/optimizer/BinExprSplitter.kt +++ b/codeOptimizers/src/prog8/optimizer/BinExprSplitter.kt @@ -10,6 +10,7 @@ import prog8.ast.statements.Assignment import prog8.ast.statements.AssignmentOrigin import prog8.ast.walk.AstWalker import prog8.ast.walk.IAstModification +import prog8.code.core.AugmentAssignmentOperators import prog8.code.core.CompilationOptions import prog8.code.core.DataType import prog8.code.target.VMTarget diff --git a/codeOptimizers/src/prog8/optimizer/ConstantFoldingOptimizer.kt b/codeOptimizers/src/prog8/optimizer/ConstantFoldingOptimizer.kt index 4b8ec2845..4ec7cd7c6 100644 --- a/codeOptimizers/src/prog8/optimizer/ConstantFoldingOptimizer.kt +++ b/codeOptimizers/src/prog8/optimizer/ConstantFoldingOptimizer.kt @@ -11,6 +11,7 @@ import prog8.ast.statements.VarDecl import prog8.ast.statements.VarDeclType import prog8.ast.walk.AstWalker import prog8.ast.walk.IAstModification +import prog8.code.core.AssociativeOperators import prog8.code.core.DataType import prog8.code.core.IntegerDatatypes diff --git a/codeOptimizers/src/prog8/optimizer/ExpressionSimplifier.kt b/codeOptimizers/src/prog8/optimizer/ExpressionSimplifier.kt index 56f3531b0..fc571bd7f 100644 --- a/codeOptimizers/src/prog8/optimizer/ExpressionSimplifier.kt +++ b/codeOptimizers/src/prog8/optimizer/ExpressionSimplifier.kt @@ -6,10 +6,7 @@ import prog8.ast.expressions.* import prog8.ast.statements.* import prog8.ast.walk.AstWalker import prog8.ast.walk.IAstModification -import prog8.code.core.DataType -import prog8.code.core.IErrorReporter -import prog8.code.core.IntegerDatatypes -import prog8.code.core.NumericDatatypes +import prog8.code.core.* import kotlin.math.abs import kotlin.math.log2 import kotlin.math.pow diff --git a/compiler/src/prog8/compiler/astprocessing/VariousCleanups.kt b/compiler/src/prog8/compiler/astprocessing/VariousCleanups.kt index 356ef430d..fd5918640 100644 --- a/compiler/src/prog8/compiler/astprocessing/VariousCleanups.kt +++ b/compiler/src/prog8/compiler/astprocessing/VariousCleanups.kt @@ -11,10 +11,7 @@ import prog8.ast.statements.Assignment import prog8.ast.statements.FunctionCallStatement import prog8.ast.walk.AstWalker import prog8.ast.walk.IAstModification -import prog8.code.core.ArrayDatatypes -import prog8.code.core.CompilationOptions -import prog8.code.core.DataType -import prog8.code.core.IErrorReporter +import prog8.code.core.* internal class VariousCleanups(val program: Program, val errors: IErrorReporter, val options: CompilationOptions): AstWalker() { diff --git a/compilerAst/src/prog8/ast/expressions/AstExpressions.kt b/compilerAst/src/prog8/ast/expressions/AstExpressions.kt index debab503b..89de744d7 100644 --- a/compilerAst/src/prog8/ast/expressions/AstExpressions.kt +++ b/compilerAst/src/prog8/ast/expressions/AstExpressions.kt @@ -13,23 +13,6 @@ import java.util.* import kotlin.math.abs import kotlin.math.round -val AssociativeOperators = setOf("+", "*", "&", "|", "^", "or", "and", "xor", "==", "!=") -val ComparisonOperators = setOf("==", "!=", "<", ">", "<=", ">=") -val AugmentAssignmentOperators = setOf("+", "-", "/", "*", "&", "|", "^", "<<", ">>", "%", "and", "or", "xor") -val LogicalOperators = setOf("and", "or", "xor", "not") -val BitwiseOperators = setOf("&", "|", "^") - -fun invertedComparisonOperator(operator: String) = - when (operator) { - "==" -> "!=" - "!=" -> "==" - "<" -> ">=" - ">" -> "<=" - "<=" -> ">" - ">=" -> "<" - else -> null - } - sealed class Expression: Node { abstract override fun copy(): Expression diff --git a/compilerAst/src/prog8/ast/walk/AstWalker.kt b/compilerAst/src/prog8/ast/walk/AstWalker.kt index b72b02fa4..ede2280bc 100644 --- a/compilerAst/src/prog8/ast/walk/AstWalker.kt +++ b/compilerAst/src/prog8/ast/walk/AstWalker.kt @@ -4,6 +4,7 @@ import prog8.ast.* import prog8.ast.base.FatalAstException import prog8.ast.expressions.* import prog8.ast.statements.* +import prog8.code.core.AssociativeOperators interface IAstModification {