Интерпретация заданной пользователем математики

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

for(int i=1;i<LEN-1;++i)
   result[i]=operate(userfunc,i);

Внутри я могу определить несколько переменных, которые содержат значения различных соседей точки данных.

double operate(string userfunc, int i){
    double next=data[i+1];
    double prev=data[i-1];
    double me=data[i];
    userfunc(me,prev,next);
}

Я представляю, как пользователь предоставляет входную строку, содержащую математическую операцию, которую он хотел бы выполнить, а также переменные, с которыми он хотел бы работать, например:

0.5+me*min(prev,next)

Тогда мой вопрос заключается в том, существует ли библиотека, которая облегчила бы синтаксический анализ ввода пользователя. Мои текущие мысли включают использование Boost.Spirit или ряда регулярных выражений. Но, возможно, есть более простой способ.


person Richard    schedule 09.08.2013    source источник
comment
Возможно, это не более простой способ, но посмотрите мой ответ на аналогичный вопрос, чтобы узнать, поможет ли он: stackoverflow.com/questions/18043488/   -  person Lake    schedule 09.08.2013
comment
Я не уверен в размере и масштабе вашего приложения. Возможно, вам стоит подумать о встраивании lua или spidermonkey.   -  person Manuel del Castillo    schedule 09.08.2013