Pull to refresh

Comments 4

Недавно похожий модуль через чатгпт для cpp писал, код похожий получался. А на пхп есть symfony expression language

Symfony Expression - это универсальный подход. Иногда требуется узконаправленные вещи, ну например, давайте разыграем ситуацию:
У вас есть таблица, где пользователи могут сами добавлять колонки (а ля конструктор таблиц). Вы эти колонки соответственно храните в БД. Так вот, вам эти колонки надо использовать как переменные в вашей формуле. С Symfony Expression вы, конечно, найдёте выход, ну например, можно их все изначально проинициализировать, хотя это уже не хорошо, таких переменных может быть 1000, а использоваться будет только 2. Добавьте сюда ещё пару бизнес-специфичных требований, (например, автоматического пересчета колонок при изменении дочерних ) из которых вы также найдёте выход. Но вот вы уже икаете, когда кто-то читает ваш код. Плюс: количество абстракций, производительность и т.д.

все ваши хотелки упираются в основном в предварительное определение зависимых переменных .
вообще да, сам лет десять назад в одном проекте делал ексел в php без использования PHPExcel. хотя в то время уже были и expression language и twig (движок и принцип действия очень похожие, т.к. от одних авторов).
А вообще удачи, сам тоже подобным балуюсь, хотел только напомнить что есть готовые решения, которых в большинстве случаев достаточно.

И так нам нужны следующие заклинания:

На самом деле вам нужен дебаггер, или очень подробный логгер, а лучше и то и то. Потому что очень скоро надо будет ответить на вопрос - почему посчитано именно так, а не иначе. Да и визард не помешал бы.

Второй вопрос - зачем писать свой лексер/парсер? Напишите грамматику, если готовой нет, да сгенерите парсер.

Sign up to leave a comment.

Articles