Встраиваемый интерпретатор формул - PullRequest
2 голосов
/ 26 июля 2010

Мне нужно что-то встроить в мою программу на C / C ++, чтобы интерпретировать формулы типа x * log (x) или sin (x).Я хотел бы что-то маленькое и простое, иначе я могу просто встроить Python, или Ch, или Scheme, или вы называете это.Но все, что мне нужно, это простые формулы.Я искал в Интернете без удачи.Хотя мне это не нужно, производительность (например, использование простого JIT) будет бонусом.

Ответы [ 5 ]

5 голосов
/ 26 июля 2010

Использовать обратную польскую запись.Есть несколько алгоритмов:1. Разобрать уравнение и преобразовать его в инфиксную запись (это просто, вы просто идентифицируете цепочку символов)2. С помощью алгоритма маневрового двора Дейкстры конвертировать инфикс в RPN.3. С помощью DFS вычислим выражение

Я уверен, что в сети много реализаций.Я даже написал свой собственный несколько лет назад (без функции функции).

4 голосов
/ 26 июля 2010

Lua - безусловно, самый простой для встраивания и использования, и это очень маленькая и очень быстрая версия с JIT: http://luajit.org/

4 голосов
/ 26 июля 2010

Отличным переносимым языком для такого рода вещей является JavaScript.Существует более нескольких реализаций на выбор, для C и C ++ их как минимум:

Другим легко встраиваемым выбором может быть Lua .Конечно, проще использовать уже существующее, чем изобретать анализатор выражений.

0 голосов
/ 26 июля 2010

А как насчет написания собственного простого стека-машины для вычисления таких формул?

0 голосов
/ 26 июля 2010

У FFmpeg есть очень хороший, который вы должны проверить.

...