Мне нужен быстрый анализатор выражений во время выполнения

В PHP Вы должны будете или использовать многобайтовые функции или включить mbstring.func_overload. Тем путем вещи как strlen будут работать, если у Вас будут символы, которые берут больше чем один байт.

необходимо будет также определить набор символов ответов. Можно или использовать AddDefaultCharset, как выше, или записать код PHP, который возвращает заголовок. (Или можно добавить Метатег к документам HTML.)

28
задан NotMe 5 November 2012 в 16:05
поделиться

4 ответа

Как насчет Fast Lightweight Expression Evaluator ? Он позволяет устанавливать переменные и поддерживает логические операторы .

Если вам нужно что-то более громкое и у вас есть время, вы также можете создать свой собственный язык выражений с помощью Ирония .

14
ответ дан 28 November 2019 в 03:04
поделиться

Интерпретатор Hisystems поддерживает пользовательские функции, операторы и литералы, это легкий чистый код на C #. В настоящее время работает на iOS через MonoTouch и должен работать в любой другой среде Mono, а также в Windows. Бесплатно для коммерческого использования. Доступно на GitHub по адресу https://github.com/hisystems/Interpreter .

6
ответ дан 28 November 2019 в 03:04
поделиться

Я полностью ценю, насколько поздно этот ответ, однако я хотел бы добавить свое решение, потому что я считаю, что оно может добавить больше, чем принятый ответ об использовании NCalc , если кто-то захочет использовать выражения на нескольких платформах .

- Обновление -

Я создал парсер для C # с планами также реализовать его для Java и Swift в течение следующих нескольких месяцев. Это будет означать, что вы можете оценивать выражения на мультиплатформах без необходимости подстройки под платформу.

Хотя Java и Swift были запланированы, они так и не попали в полную версию. Вместо этого теперь есть поддержка .NET Standard, включающая поддержку Xamarin приложений.

- Окончание обновления -

Expressive - это инструмент, который доступен по адресу: GitHub или Nuget .

На сайте имеется достаточное количество документации, но для предотвращения гниения ссылок вот пример того, как его использовать:

Переменная поддержка

var expression = new Expression("1 * [variable]");
var result = expression.Evaluate(new Dictionary<string, object> { ["variable"] = 2);

Функции

var expression = new Expression("sum(1,2,3,4)");
var result = expression.Evaluate();

Он был разработан, чтобы максимально соответствовать NCalc, однако в него добавлена ​​поддержка таких вещей, как ключевое слово 'null'.

3
ответ дан 28 November 2019 в 03:04
поделиться

Самореклама здесь. Я написал универсальный генератор парсеров для c # https://github.com/b3b00/csly . Вы можете найти пример выражения parseras на моем github. вам может понадобиться настроить его под свои нужды

0
ответ дан 28 November 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: