JFS
JFS

Reputation: 3152

osx DDMathParser - Find Function Token in String

I try to build an expression string evaluated with DDMathParser from user input (string)

for example: 3 + ln(2) + var

I try to use the built-in Tokenizer function from DDMathParser in order to find all kind of tokens. But using the following code will not find any function tokens:

equationInputString = "3+ln(2)+var"
do{
   let token = try Tokenizer(string: equationInputString).tokenize()
   for element in token {
       let tokenString = element.string
       let tokenKind = element.kind
       print(tokenString, ";", tokenKind)
   }
} catch {
       print("Tokenizer error in VC!", error)
}

/* output:
3   ; number
+   ; operator
ln  ; identifier    <-- not recognized as "ln()" function
(   ; operator
2   ; number
)   ; operator
+   ; operator
var ; identifier
*/

Is there a way to extract ln as function token? Do I need to use another approach within DDMathParser to find standard function strings? Thanks!

Upvotes: 0

Views: 53

Answers (1)

Dave DeLong
Dave DeLong

Reputation: 243156

DDMathParser author here...

The answer is "it depends". What are you trying to do? Typical usage of DDMathParser would just be to turn the whole thing in to the final Expression type, and the recurse through the resulting tree looking for an Expression of kind .function that has a name of "ln".

Upvotes: 0

Related Questions