osx 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 ответ

Автор DDMathParser здесь...

Ответ "это зависит". Что ты пытаешься сделать? Типичное использование DDMathParser было бы просто превратить все это в финал Expression типа, и рекурс через результирующее дерево ищет Expression в своем роде .function это имеет name из "ln",

Другие вопросы по тегам