Обновить

Комментарии 11

Спасибо за оценку! Вроде, не забыл указать - 3й в списке в разделе "Интерпретаторы выражений от других авторов"

НЛО прилетело и опубликовало эту надпись здесь

(в предыдущем коменте не разобрался с кодом автора)

В RPN решатель на простом стеке, куда проще?

самым простым способом для меня оказалось построить sandbox для выполнения, а потом звать eval

Не знаю насколько эликсир позволяет огородить sandbox, но если вы даете пользователям вводить формулы, лучше чтобы так доверять не приходилось

НЛО прилетело и опубликовало эту надпись здесь

А в чём смысл был писать всё это с нуля, а не использовать phplrt или antlr? И код лучше будет в итоге и поддерживать проще и работать быстрее. А то вот от такого чуть-чуть глаза начинают кровоточить))) https://github.com/iustato/bql/blob/master/src/ExpressionInterpreter.php

P.S. А eval реализуется тупо выполнением метода eval у AST ноды выражения: $node->eval()

Есть ещё вот такая штука:

https://github.com/smuuf/primi

В какой-то момент использовал её, всё работало как надо, а позже и вовсе стал использовать lua модуль :)

Унарный минус у вас не поддерживается, я правильно понял?

$bql->evaluate("a = -(5 + b)");

походу мой косяк, поправлю

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации