2010-07-26 2 views
2

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

ответ

4

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

+0

Я успешно ассимилировал luajit в своем коде сейчас. Хотя мне понадобилось пару часов для выяснения того, что luaL_loadbuffer нуждается в luaL_pcall после него ... кроме того, что он работает o.k. – dsign

+0

Прохладный! Удачи с вашим проектом! –

4

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

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

5

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

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

0

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

0

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