1
0
mirror of https://github.com/DanilaFe/abacus synced 2024-11-17 16:09:32 -08:00

Add comments to the newly created Kotlin implementations.

This commit is contained in:
Danila Fedorin 2017-08-07 19:11:13 -07:00
parent 62e8971db2
commit 5aab7891f2
5 changed files with 52 additions and 0 deletions

View File

@ -1,5 +1,16 @@
package org.nwapw.abacus.tree package org.nwapw.abacus.tree
/**
* A tree node that holds a binary operation.
*
* This node represents any binary operation, such as binary infix or binary postfix. The only
* currently implemented into Abacus is binary infix, but that has more to do with the parser than
* this class, which doesn't care about the order that its operation and nodes were found in text.
*
* @param operation the operation this node performs on its children.
* @param left the left node.
* @param right the right node.
*/
data class BinaryNode(val operation: String, val left: TreeNode? = null, val right: TreeNode?) : TreeNode() { data class BinaryNode(val operation: String, val left: TreeNode? = null, val right: TreeNode?) : TreeNode() {
override fun <T : Any> reduce(reducer: Reducer<T>): T? { override fun <T : Any> reduce(reducer: Reducer<T>): T? {

View File

@ -1,7 +1,18 @@
package org.nwapw.abacus.tree package org.nwapw.abacus.tree
/**
* A tree node that holds a function call.
*
* The function call node can hold any number of children, and passes the to the appropriate reducer,
* but that is its sole purpose.
*
* @param function the function string.
*/
data class FunctionNode(val function: String) : TreeNode() { data class FunctionNode(val function: String) : TreeNode() {
/**
* List of function parameters added to this node.
*/
val children: MutableList<TreeNode> = mutableListOf() val children: MutableList<TreeNode> = mutableListOf()
override fun <T : Any> reduce(reducer: Reducer<T>): T? { override fun <T : Any> reduce(reducer: Reducer<T>): T? {
@ -20,10 +31,20 @@ data class FunctionNode(val function: String) : TreeNode() {
return super.toString() return super.toString()
} }
/**
* Appends a child to this node's list of children.
*
* @node the node to append.
*/
fun appendChild(node: TreeNode){ fun appendChild(node: TreeNode){
children.add(node) children.add(node)
} }
/**
* Prepends a child to this node's list of children.
*
* @node the node to prepend.
*/
fun prependChild(node: TreeNode){ fun prependChild(node: TreeNode){
children.add(0, node) children.add(0, node)
} }

View File

@ -2,6 +2,14 @@ package org.nwapw.abacus.tree
import org.nwapw.abacus.number.NumberInterface import org.nwapw.abacus.number.NumberInterface
/**
* A tree node that holds a single number value.
*
* This is a tree node that holds a single NumberInterface, which represents any number,
* and is not defined during compile time.
*
* @number the number value of this node.
*/
data class NumberNode(val number: NumberInterface) : TreeNode() { data class NumberNode(val number: NumberInterface) : TreeNode() {
override fun <T : Any> reduce(reducer: Reducer<T>): T? { override fun <T : Any> reduce(reducer: Reducer<T>): T? {

View File

@ -1,5 +1,8 @@
package org.nwapw.abacus.tree package org.nwapw.abacus.tree
/**
* A tree node.
*/
abstract class TreeNode { abstract class TreeNode {
abstract fun <T: Any> reduce(reducer: Reducer<T>) : T? abstract fun <T: Any> reduce(reducer: Reducer<T>) : T?

View File

@ -1,5 +1,14 @@
package org.nwapw.abacus.tree package org.nwapw.abacus.tree
/**
* A tree node that holds a unary operation.
*
* This node holds a single operator applied to a single parameter, and does not care
* whether the operation was found before or after the parameter in the text.
*
* @param operation the operation applied to the given node.
* @param applyTo the node to which the operation will be applied.
*/
data class UnaryNode(val operation: String, val applyTo: TreeNode? = null) : TreeNode() { data class UnaryNode(val operation: String, val applyTo: TreeNode? = null) : TreeNode() {
override fun <T : Any> reduce(reducer: Reducer<T>): T? { override fun <T : Any> reduce(reducer: Reducer<T>): T? {