mirror of
https://github.com/DanilaFe/abacus
synced 2026-09-22 03:12:33 +00:00
More around files into more applicable packages.
This commit is contained in:
@@ -3,15 +3,14 @@ package org.nwapw.abacus
|
||||
import org.nwapw.abacus.config.Configuration
|
||||
import org.nwapw.abacus.context.MutableEvaluationContext
|
||||
import org.nwapw.abacus.context.EvaluationContext
|
||||
import org.nwapw.abacus.number.PromotionManager
|
||||
import org.nwapw.abacus.parsing.LexerTokenizer
|
||||
import org.nwapw.abacus.parsing.ShuntingYardParser
|
||||
import org.nwapw.abacus.number.promotion.PromotionManager
|
||||
import org.nwapw.abacus.parsing.standard.LexerTokenizer
|
||||
import org.nwapw.abacus.parsing.standard.ShuntingYardParser
|
||||
import org.nwapw.abacus.parsing.TreeBuilder
|
||||
import org.nwapw.abacus.plugin.PluginManager
|
||||
import org.nwapw.abacus.plugin.standard.StandardPlugin
|
||||
import org.nwapw.abacus.tree.EvaluationResult
|
||||
import org.nwapw.abacus.tree.NumberReducer
|
||||
import org.nwapw.abacus.tree.TreeNode
|
||||
import org.nwapw.abacus.tree.standard.NumberReducer
|
||||
import org.nwapw.abacus.tree.nodes.TreeNode
|
||||
|
||||
/**
|
||||
* Core class to handle all mathematics.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nwapw.abacus.tree
|
||||
package org.nwapw.abacus
|
||||
|
||||
import org.nwapw.abacus.context.MutableEvaluationContext
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
@@ -3,7 +3,7 @@ package org.nwapw.abacus.context
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
import org.nwapw.abacus.plugin.NumberImplementation
|
||||
import org.nwapw.abacus.tree.Reducer
|
||||
import org.nwapw.abacus.tree.TreeNode
|
||||
import org.nwapw.abacus.tree.nodes.TreeNode
|
||||
|
||||
/**
|
||||
* A context for the reduction of a [org.nwapw.abacus.tree.TreeNode] into a number.
|
||||
|
||||
@@ -3,7 +3,7 @@ package org.nwapw.abacus.context
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
import org.nwapw.abacus.plugin.NumberImplementation
|
||||
import org.nwapw.abacus.tree.Reducer
|
||||
import org.nwapw.abacus.tree.TreeNode
|
||||
import org.nwapw.abacus.tree.nodes.TreeNode
|
||||
|
||||
/**
|
||||
* A reduction context that is mutable.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nwapw.abacus.function.applicable
|
||||
package org.nwapw.abacus.function
|
||||
|
||||
import org.nwapw.abacus.context.MutableEvaluationContext
|
||||
import org.nwapw.abacus.exception.DomainException
|
||||
@@ -1,6 +1,6 @@
|
||||
package org.nwapw.abacus.function
|
||||
package org.nwapw.abacus.function.interfaces
|
||||
|
||||
import org.nwapw.abacus.function.applicable.Applicable
|
||||
import org.nwapw.abacus.function.Applicable
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
|
||||
/**
|
||||
@@ -1,6 +1,9 @@
|
||||
package org.nwapw.abacus.function
|
||||
package org.nwapw.abacus.function.interfaces
|
||||
|
||||
import org.nwapw.abacus.function.applicable.Applicable
|
||||
import org.nwapw.abacus.function.Applicable
|
||||
import org.nwapw.abacus.function.Operator
|
||||
import org.nwapw.abacus.function.OperatorAssociativity
|
||||
import org.nwapw.abacus.function.OperatorType
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
|
||||
/**
|
||||
@@ -1,8 +1,8 @@
|
||||
package org.nwapw.abacus.function
|
||||
package org.nwapw.abacus.function.interfaces
|
||||
|
||||
import org.nwapw.abacus.function.applicable.Applicable
|
||||
import org.nwapw.abacus.function.Applicable
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
import org.nwapw.abacus.tree.TreeNode
|
||||
import org.nwapw.abacus.tree.nodes.TreeNode
|
||||
|
||||
/**
|
||||
* A function that operates on trees.
|
||||
@@ -1,8 +1,11 @@
|
||||
package org.nwapw.abacus.function
|
||||
package org.nwapw.abacus.function.interfaces
|
||||
|
||||
import org.nwapw.abacus.function.applicable.Applicable
|
||||
import org.nwapw.abacus.function.Applicable
|
||||
import org.nwapw.abacus.function.Operator
|
||||
import org.nwapw.abacus.function.OperatorAssociativity
|
||||
import org.nwapw.abacus.function.OperatorType
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
import org.nwapw.abacus.tree.TreeNode
|
||||
import org.nwapw.abacus.tree.nodes.TreeNode
|
||||
|
||||
/**
|
||||
* An operator that operates on trees.
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nwapw.abacus.number
|
||||
|
||||
import org.nwapw.abacus.exception.ComputationInterruptedException
|
||||
import org.nwapw.abacus.number.range.NumberRangeBuilder
|
||||
|
||||
abstract class NumberInterface: Comparable<NumberInterface> {
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
@file:JvmName("NumberUtils")
|
||||
package org.nwapw.abacus.number
|
||||
package org.nwapw.abacus.number.promotion
|
||||
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
|
||||
typealias PromotionFunction = java.util.function.Function<NumberInterface, NumberInterface>
|
||||
typealias PromotionPath = List<PromotionFunction>
|
||||
@@ -1,7 +1,8 @@
|
||||
package org.nwapw.abacus.number
|
||||
package org.nwapw.abacus.number.promotion
|
||||
|
||||
import org.nwapw.abacus.Abacus
|
||||
import org.nwapw.abacus.exception.PromotionException
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
import org.nwapw.abacus.plugin.NumberImplementation
|
||||
import org.nwapw.abacus.plugin.PluginListener
|
||||
import org.nwapw.abacus.plugin.PluginManager
|
||||
@@ -51,7 +52,7 @@ class PromotionManager(val abacus: Abacus) : PluginListener {
|
||||
val implementations = numbers.map { pluginManager.interfaceImplementationFor(it.javaClass) }
|
||||
val highestPriority = implementations.sortedBy { it.priority }.last()
|
||||
return PromotionResult(items = numbers.map {
|
||||
if(it.javaClass == highestPriority.implementation) it
|
||||
if (it.javaClass == highestPriority.implementation) it
|
||||
else computePaths[pluginManager.interfaceImplementationFor(it.javaClass) to highestPriority]
|
||||
?.promote(it) ?: throw PromotionException()
|
||||
}.toTypedArray(), promotedTo = highestPriority)
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nwapw.abacus.number
|
||||
package org.nwapw.abacus.number.promotion
|
||||
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
import org.nwapw.abacus.plugin.NumberImplementation
|
||||
|
||||
/**
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nwapw.abacus.number
|
||||
package org.nwapw.abacus.number.range
|
||||
|
||||
import org.nwapw.abacus.Abacus
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
|
||||
/**
|
||||
* A closed range designed specifically for [NumberInterface]
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nwapw.abacus.number
|
||||
package org.nwapw.abacus.number.range
|
||||
|
||||
import org.nwapw.abacus.Abacus
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
|
||||
/**
|
||||
* A utility class for creating [NumberRange] instances.
|
||||
@@ -1,6 +1,6 @@
|
||||
package org.nwapw.abacus.parsing
|
||||
|
||||
import org.nwapw.abacus.tree.TreeNode
|
||||
import org.nwapw.abacus.tree.nodes.TreeNode
|
||||
|
||||
/**
|
||||
* Converter from tokens into a parse tree.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package org.nwapw.abacus.parsing
|
||||
|
||||
import org.nwapw.abacus.tree.TreeNode
|
||||
import org.nwapw.abacus.tree.nodes.TreeNode
|
||||
|
||||
/**
|
||||
* Class to combine a [Tokenizer] and a [Parser]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.nwapw.abacus.plugin.standard.operator
|
||||
|
||||
import org.nwapw.abacus.context.MutableEvaluationContext
|
||||
import org.nwapw.abacus.function.NumberOperator
|
||||
import org.nwapw.abacus.function.interfaces.NumberOperator
|
||||
import org.nwapw.abacus.function.OperatorAssociativity
|
||||
import org.nwapw.abacus.function.OperatorType
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.nwapw.abacus.plugin.standard.operator
|
||||
|
||||
import org.nwapw.abacus.context.MutableEvaluationContext
|
||||
import org.nwapw.abacus.function.NumberOperator
|
||||
import org.nwapw.abacus.function.interfaces.NumberOperator
|
||||
import org.nwapw.abacus.function.OperatorAssociativity
|
||||
import org.nwapw.abacus.function.OperatorType
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
|
||||
@@ -3,10 +3,10 @@ package org.nwapw.abacus.plugin.standard.operator
|
||||
import org.nwapw.abacus.context.MutableEvaluationContext
|
||||
import org.nwapw.abacus.function.OperatorAssociativity
|
||||
import org.nwapw.abacus.function.OperatorType
|
||||
import org.nwapw.abacus.function.TreeValueOperator
|
||||
import org.nwapw.abacus.function.interfaces.TreeValueOperator
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
import org.nwapw.abacus.tree.TreeNode
|
||||
import org.nwapw.abacus.tree.VariableNode
|
||||
import org.nwapw.abacus.tree.nodes.TreeNode
|
||||
import org.nwapw.abacus.tree.nodes.VariableNode
|
||||
|
||||
/**
|
||||
* The definition operator.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.nwapw.abacus.plugin.standard.operator
|
||||
|
||||
import org.nwapw.abacus.context.MutableEvaluationContext
|
||||
import org.nwapw.abacus.function.NumberOperator
|
||||
import org.nwapw.abacus.function.interfaces.NumberOperator
|
||||
import org.nwapw.abacus.function.OperatorAssociativity
|
||||
import org.nwapw.abacus.function.OperatorType
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.nwapw.abacus.plugin.standard.operator
|
||||
|
||||
import org.nwapw.abacus.context.MutableEvaluationContext
|
||||
import org.nwapw.abacus.function.NumberOperator
|
||||
import org.nwapw.abacus.function.interfaces.NumberOperator
|
||||
import org.nwapw.abacus.function.OperatorAssociativity
|
||||
import org.nwapw.abacus.function.OperatorType
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.nwapw.abacus.plugin.standard.operator
|
||||
|
||||
import org.nwapw.abacus.context.MutableEvaluationContext
|
||||
import org.nwapw.abacus.function.NumberOperator
|
||||
import org.nwapw.abacus.function.interfaces.NumberOperator
|
||||
import org.nwapw.abacus.function.OperatorAssociativity
|
||||
import org.nwapw.abacus.function.OperatorType
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.nwapw.abacus.plugin.standard.operator
|
||||
|
||||
import org.nwapw.abacus.context.MutableEvaluationContext
|
||||
import org.nwapw.abacus.function.NumberOperator
|
||||
import org.nwapw.abacus.function.interfaces.NumberOperator
|
||||
import org.nwapw.abacus.function.OperatorAssociativity
|
||||
import org.nwapw.abacus.function.OperatorType
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.nwapw.abacus.plugin.standard.operator
|
||||
|
||||
import org.nwapw.abacus.context.MutableEvaluationContext
|
||||
import org.nwapw.abacus.function.NumberOperator
|
||||
import org.nwapw.abacus.function.interfaces.NumberOperator
|
||||
import org.nwapw.abacus.function.OperatorAssociativity
|
||||
import org.nwapw.abacus.function.OperatorType
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.nwapw.abacus.plugin.standard.operator
|
||||
|
||||
import org.nwapw.abacus.context.MutableEvaluationContext
|
||||
import org.nwapw.abacus.function.NumberOperator
|
||||
import org.nwapw.abacus.function.interfaces.NumberOperator
|
||||
import org.nwapw.abacus.function.OperatorAssociativity
|
||||
import org.nwapw.abacus.function.OperatorType
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
|
||||
@@ -3,10 +3,10 @@ package org.nwapw.abacus.plugin.standard.operator
|
||||
import org.nwapw.abacus.context.MutableEvaluationContext
|
||||
import org.nwapw.abacus.function.OperatorAssociativity
|
||||
import org.nwapw.abacus.function.OperatorType
|
||||
import org.nwapw.abacus.function.TreeValueOperator
|
||||
import org.nwapw.abacus.function.interfaces.TreeValueOperator
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
import org.nwapw.abacus.tree.TreeNode
|
||||
import org.nwapw.abacus.tree.VariableNode
|
||||
import org.nwapw.abacus.tree.nodes.TreeNode
|
||||
import org.nwapw.abacus.tree.nodes.VariableNode
|
||||
|
||||
/**
|
||||
* The set operator.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.nwapw.abacus.plugin.standard.operator
|
||||
|
||||
import org.nwapw.abacus.context.MutableEvaluationContext
|
||||
import org.nwapw.abacus.function.NumberOperator
|
||||
import org.nwapw.abacus.function.interfaces.NumberOperator
|
||||
import org.nwapw.abacus.function.OperatorAssociativity
|
||||
import org.nwapw.abacus.function.OperatorType
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.nwapw.abacus.tree
|
||||
|
||||
import org.nwapw.abacus.tree.nodes.TreeNode
|
||||
|
||||
/**
|
||||
* Reducer interface that takes a tree and returns a single value.
|
||||
*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nwapw.abacus.tree
|
||||
package org.nwapw.abacus.tree.nodes
|
||||
|
||||
/**
|
||||
* A tree node that holds a binary operation.
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nwapw.abacus.tree
|
||||
package org.nwapw.abacus.tree.nodes
|
||||
|
||||
/**
|
||||
* Represents a more generic function call.
|
||||
@@ -1,4 +1,6 @@
|
||||
package org.nwapw.abacus.tree
|
||||
package org.nwapw.abacus.tree.nodes
|
||||
|
||||
import org.nwapw.abacus.tree.Reducer
|
||||
|
||||
/**
|
||||
* A binary operator node that reduces its children.
|
||||
@@ -1,4 +1,6 @@
|
||||
package org.nwapw.abacus.tree
|
||||
package org.nwapw.abacus.tree.nodes
|
||||
|
||||
import org.nwapw.abacus.tree.Reducer
|
||||
|
||||
/**
|
||||
* A tree node that holds a function call.
|
||||
@@ -8,7 +10,7 @@ package org.nwapw.abacus.tree
|
||||
*
|
||||
* @param function the function string.
|
||||
*/
|
||||
class FunctionNode(function: String, children: List<TreeNode>) : CallNode(function, children) {
|
||||
class NumberFunctionNode(function: String, children: List<TreeNode>) : CallNode(function, children) {
|
||||
|
||||
override fun <T : Any> reduce(reducer: Reducer<T>): T {
|
||||
val children = Array<Any>(children.size, { children[it].reduce(reducer) })
|
||||
@@ -1,4 +1,6 @@
|
||||
package org.nwapw.abacus.tree
|
||||
package org.nwapw.abacus.tree.nodes
|
||||
|
||||
import org.nwapw.abacus.tree.Reducer
|
||||
|
||||
/**
|
||||
* A tree node that holds a single number value.
|
||||
@@ -1,4 +1,6 @@
|
||||
package org.nwapw.abacus.tree
|
||||
package org.nwapw.abacus.tree.nodes
|
||||
|
||||
import org.nwapw.abacus.tree.Reducer
|
||||
|
||||
/**
|
||||
* A unary operator node that reduces its children.
|
||||
@@ -1,4 +1,6 @@
|
||||
package org.nwapw.abacus.tree
|
||||
package org.nwapw.abacus.tree.nodes
|
||||
|
||||
import org.nwapw.abacus.tree.Reducer
|
||||
|
||||
/**
|
||||
* A tree node.
|
||||
@@ -1,4 +1,6 @@
|
||||
package org.nwapw.abacus.tree
|
||||
package org.nwapw.abacus.tree.nodes
|
||||
|
||||
import org.nwapw.abacus.tree.Reducer
|
||||
|
||||
/**
|
||||
* A tree node that represents a binary tree value operator.
|
||||
@@ -1,4 +1,6 @@
|
||||
package org.nwapw.abacus.tree
|
||||
package org.nwapw.abacus.tree.nodes
|
||||
|
||||
import org.nwapw.abacus.tree.Reducer
|
||||
|
||||
/**
|
||||
* A tree node that represents a tree value function call.
|
||||
@@ -1,4 +1,6 @@
|
||||
package org.nwapw.abacus.tree
|
||||
package org.nwapw.abacus.tree.nodes
|
||||
|
||||
import org.nwapw.abacus.tree.Reducer
|
||||
|
||||
/**
|
||||
* A tree node that represents a unary tree value operator.
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nwapw.abacus.tree
|
||||
package org.nwapw.abacus.tree.nodes
|
||||
|
||||
/**
|
||||
* A tree node that holds a unary operation.
|
||||
@@ -1,4 +1,6 @@
|
||||
package org.nwapw.abacus.tree
|
||||
package org.nwapw.abacus.tree.nodes
|
||||
|
||||
import org.nwapw.abacus.tree.Reducer
|
||||
|
||||
/**
|
||||
* A tree node that holds a placeholder variable.
|
||||
@@ -1,10 +1,12 @@
|
||||
package org.nwapw.abacus.tree
|
||||
package org.nwapw.abacus.tree.standard
|
||||
|
||||
import org.nwapw.abacus.Abacus
|
||||
import org.nwapw.abacus.context.EvaluationContext
|
||||
import org.nwapw.abacus.exception.NumberReducerException
|
||||
import org.nwapw.abacus.exception.ReductionException
|
||||
import org.nwapw.abacus.number.NumberInterface
|
||||
import org.nwapw.abacus.tree.Reducer
|
||||
import org.nwapw.abacus.tree.nodes.*
|
||||
|
||||
class NumberReducer(val abacus: Abacus, context: EvaluationContext) : Reducer<NumberInterface> {
|
||||
|
||||
@@ -40,7 +42,7 @@ class NumberReducer(val abacus: Abacus, context: EvaluationContext) : Reducer<Nu
|
||||
context.numberImplementation = promotionResult.promotedTo
|
||||
abacus.pluginManager.operatorFor(treeNode.operation).apply(context, *promotionResult.items)
|
||||
}
|
||||
is FunctionNode -> {
|
||||
is NumberFunctionNode -> {
|
||||
val promotionResult = promotionManager
|
||||
.promote(*children.map { it as NumberInterface }.toTypedArray())
|
||||
context.numberImplementation = promotionResult.promotedTo
|
||||
Reference in New Issue
Block a user