Scala — создание базового синтаксического анализатора динамических функций

Я новичок в Scala, но мне интересно, можно ли реализовать простой анализатор уравнений в язык.

Скажем, у меня есть несколько функций (очень похожих на функции Excel):

IF(Cond a=b, val_true, val_false)

MID(String, Start_pos, num_chars)- извлечение строки

LEN(String)- длина строки

OR(cond1, cond2, ... condn)

AND(cond1, cond2, ... condn)

Таким образом, идея была бы в том, что я мог бы передавать формулу во время выполнения в виде строки от пользователя в качестве аргумента командной строки вместе с любыми другими параметрами, например IF(LEN(param1)=4,MID(param1,2,1), MID(param1,0, LEN(param1)))

Идея состоит в том, чтобы вычислить функцию, поэтому, если пользователь введет приведенную выше формулу и строку "scat", то результатом будет "a". Если бы была дана строка "scala", вывод был бы "scala"...

Насколько легко это было бы реализовать на Scala? Каков наилучший подход к дизайну? Я знаю, что указателей на функции не существует (в C я бы разобрал строку формулы в набор функциональных точек и ушел оттуда)...

Любые советы о том, как подойти к этому в эффективном стиле Scala, будут оценены.

Ура!

8
задан NightWolf 20 March 2012 в 02:59
поделиться