我尝试从用户输入(字符串)构建一个用DDMathParser求值的表达式字符串
例如:3+ ln(2) + var
我尝试使用DDMathParser内置的Tokenizer函数来查找所有类型的令牌。但使用以下代码将找不到任何函数标记:
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中使用另一种方法来查找标准函数字符串?谢谢!
发布于 2018-05-11 08:15:37
DDMathParser作者在这里...
答案是“视情况而定”。你想做什么?DDMathParser的典型用法是将整个过程转换为最终的Expression类型,然后在结果树中递归查找具有"ln"类型的.function类型的Expression。
https://stackoverflow.com/questions/50198311
复制相似问题