elwood.su

Just my blog

Archive for January, 2009

.NET Парсер математических выражений

without comments

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

Представляю вниманию товарищей-дотнетчиков библиотечку собственного написания, с помощью которой можно легко обращаться с несложными математическими функциями, переводя их из строковой формы инфиксной записи в обработанное представление, составленное в постфиксной нотации, и обратно. Для чего это может понадобиться ?

К примеру, можно написать приложение, которое принимает ввод функции пользователем в виде строки, анализирует корректность синтаксиса, вычисляет его значение в указанных точках, оптимизирует введенное выражение, минимизируя количество операций, требуемых для вычисления, и может выдавать результат в виде строки, представляющей собой корректное строковое представление оптимизированной функции. В качестве конкретных применений можно отметить различные специализированные калькуляторы (в том числе, построенные наподобие программируемых), приложения, используемые для построения графиков или других отчетов, требующие задания начальных функций, или как оригинальное средство для построения защиты от спама / автоматических регистраций.

Read the rest of this entry »

Written by elwood

January 24th, 2009 at 9:53 pm

Posted in .NET

Дополнения к блогу

without comments

Сегодня решил немного заняться блогом и создал отдельные страницы для MathCompiler’a, куда поместил последнюю версию библиотеки, и отдельную страницу, в которой разместил свои старые программы, написанные еще в школе. Ссылки в меню навигации, enjoy !

UPD: Добавил re-capthca, теперь постить комментарии может любой анонимный пользователь без регистрации.

Written by elwood

January 8th, 2009 at 5:45 am

Posted in .NET

mathcompiler rc1 )

without comments

Допинал наконец-то эту библиотечку. Теперь, помимо преобразования инфиксных выражений из строки в ПОЛИЗ и вычислений также можно делать обратное преобразование, а также частичную оптимизацию вычисляемого выражения за счет предвычисления констант. Это означает, что можно, к примеру, дать на вход выражение 7+1-sin((13*4)-x) и получить на выходе 8-sin(52-x). Как можно заметить, 7+1 было заменено на 8, 13*4 – на 52, и убрана лишняя пара скобок вокруг 13*4. Конфигурирование через xml сохранено, можно изобретать собственные операторы, подключать функции и экспериментировать.
См тестовое приложение, которое прилагается к архиву в директории precompiled.
Осталось только написать nant-скрипты и проверить на совместимость с .NET 2.0.

math-compiler

Written by elwood

January 3rd, 2009 at 1:46 am

Posted in .NET