我尝试用用户输入(字符串)
构建一个用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
中使用另一种方法来查找标准函数字符串?
谢谢!
答案 0 :(得分:0)
DDMathParser作者在这里......
答案是“它取决于”。你想做什么? DDMathParser的典型用法就是将整个事件转换为最终的Expression
类型,并通过生成的树递归查找Expression
种.function
的{{1}}个name
1 {} "ln"
。