osx DDMathParser - 在字符串中查找函数标记

时间:2018-05-06 09:43:44

标签: swift tokenize ddmathparser

我尝试用用户输入(字符串)

构建一个用DDMathParser评估的表达式字符串

例如:3 + ln(2)+ var

我尝试使用Tokenizer中的内置DDMathParser函数来查找所有类型的令牌。但是使用以下代码将找不到任何函数标记:

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
*/

有没有办法将ln提取为函数令牌?我是否需要在DDMathParser中使用另一种方法来查找标准函数字符串? 谢谢!

1 个答案:

答案 0 :(得分:0)

DDMathParser作者在这里......

答案是“它取决于”。你想做什么? DDMathParser的典型用法就是将整个事件转换为最终的Expression类型,并通过生成的树递归查找Expression.function的{​​{1}}个name 1 {} "ln"