osx DDMathParser - найти токен функции в строке - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь построить строку выражения, оцененную с помощью 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 голосов
/ 11 мая 2018

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

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

...