NCalc с использованием символов в имени пользовательской функции

Предположим, что при вводе выражений мне нравится выделять функции специальным префиксом, например $:

var expr = "Your name is $proper([firstName]) $upper([lastName])";

где я бы написал пользовательские функции для $proper и $upper.

Однако я получаю сообщения об ошибках консоли «нет жизнеспособной альтернативы символу '$'». Это работает, если я избавлюсь от символа или использую подчеркивание.

Есть ли способ использовать символьные символы в именах функций в NCalc? Это также не работает, когда функция начинается с числа (например, если бы я хотел сократить имя функции double как 2x).

(Вроде похоже на Ошибка оценки NCalc нет жизнеспособной альтернативы на входе ',' )


person drzaus    schedule 05.12.2014    source источник
comment
Примерно такой синтаксис, который требуется для аналогичной библиотеки синтаксического анализа ExpressionEval expressioneval.codeplex.com.   -  person drzaus    schedule 05.12.2014
comment
К сожалению, для этого потребуется внести изменения в синтаксический анализатор NCalc, поскольку символ $ не может использоваться как часть имени функции. Вместо этого вы можете использовать что-то вроде fnProper и fnUpper, если это поможет.   -  person Chris Walsh    schedule 21.01.2015
comment
@ChrisWalsh Я надеялся, что есть какая-то недокументированная или скрытая функция, которая позволит вам легко включить это, но я подумал, что это так.   -  person drzaus    schedule 27.01.2015
comment
Лично я, как разработчик, счел бы имена функций с префиксом $ сбивающими с толку. Я, вероятно, неправильно истолковал бы это как имя переменной, которое используется в php. Подчеркивание, вероятно, является вашей ближайшей ставкой, как вы уже выяснили.   -  person Chris Walsh    schedule 27.01.2015
comment
@ChrisWalsh, да, это зависит от того, с какого языка вы работаете - на мой взгляд разработчика, я просто хотел, чтобы функция выделялась лучше, а не сливалась с математическим выражением. Я также стремился к большей кросс-совместимости с другой библиотекой синтаксического анализа ExpressionEval (которая использует префиксы $), чтобы я мог переходить существующие выражения.   -  person drzaus    schedule 28.01.2015