Интерпретиране на зададена от потребителя математика

Имам програма, която преминава през няколко точки от данни, извършва операция върху всяка точка от данни и връща резултат за всяка точка от данни. Казвам,

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