Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.appypie.testapp
- import androidx.core.text.isDigitsOnly
- import com.appypie.VARIABLE_TYPE
- import java.util.*
- import kotlin.collections.ArrayList
- class FormulaUtil {
- var operatorArr = arrayOf("+" , "-" , "/" , "%" , "*")
- var functionArr = arrayOf("UPPER","LOWER","CONCATENATE","SQRT","AVERAGE",
- "DISTANCE","POWER","ABS","MAX","MIN","AVERAGE","COUNT","ROUND",
- "STDEVP","FLOOR","CEILING","NUMBER","DECIMAL","SUM")
- companion object{
- fun getStackTokenArr(str:String):ArrayList<String>{
- var stackArr:ArrayList<String> = arrayListOf<String>()
- var getVal:String= ""
- var breakExpressions ="(,)"
- str.forEachIndexed { index, charData ->
- if(charData != null && breakExpressions.contains(charData)){
- stackArr.add(getVal)
- stackArr.add(charData.toString())
- getVal = ""
- }else{
- getVal = "${getVal}${charData}"
- }
- }
- stackArr.add(getVal)
- return stackArr
- }
- fun calculateValueStack(expStr:String){
- var ops = Stack<String>()
- var vals = Stack<Double>()
- var stackTokenArr:ArrayList<String> = getStackTokenArr(expStr)
- stackTokenArr.forEachIndexed { index, stringData ->
- var data = checkVariableType(stringData)
- print()
- }
- }
- //Function To Get Type Of Variables in Operator Operand Stack
- fun checkVariableType(variable:String) : VARIABLE_TYPE {
- if(functionArr.any{ it == variable}){
- return VARIABLE_TYPE.FUNCTION
- }else if(operatorArr.any{ it == variable}){
- return VARIABLE_TYPE.OPERATOR
- }else if(variable.contains("[") && variable.contains("]")){
- return VARIABLE_TYPE.COLOUM_VALUE
- }else if(variable.equals("(")){
- return VARIABLE_TYPE.START_BRACKET
- }else if(variable.equals(")")){
- return VARIABLE_TYPE.POP_TO_EVALUATE
- }else if(variable.isDigitsOnly()){
- return VARIABLE_TYPE.CONSTANT
- }
- return VARIABLE_TYPE.IGNORE
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement