Я создал древовидную структуру, которая выполняет операции на основе содержимого данных в дочерних узлах. Инициализация C # выглядит следующим образом:
/create initial price series
var priceSeries1 = new TimeSeries("series1", 100000, 100, DateTime.Now, TimeSpan.FromSeconds(1));
var priceSeries2 = new TimeSeries("series1", 100000, 100, DateTime.Now, TimeSpan.FromSeconds(1));
//derived return series
var returnSeries1 = new ReturnSeries("return series 0", priceSeries1);
var returnSeries2 = new ReturnSeries("return series 0", priceSeries2);
//derived correlation series
var correlation1 = new CorrelationSeries("correlation1", 99990, priceSeries1, priceSeries2);
var correlation2 = new CorrelationSeries("correlation1",99990, returnSeries1, returnSeries2);
//update series
correlation1.Update();
correlation2.Update();
Я хочу создать синтаксический анализатор / интерпретатор, который позволит конечному пользователю не вводить весь этот код C #, а вместо этого предложит упрощенный язык сценариев, который позволил бы писать вышеизложенное в виде строки, такой как
CORREL(RETSERIES(PRICESERIES1), RETSERIES(PRICESERIES2), param1, param2)
Correl, RetSeries, PriceSeries - небольшое подмножество функций, которые я хочу в конечном итоге раскрыть. Каждый из этих объектов создает свои собственные временные ряды и выводит эти ряды в зависимости от дочерних узлов, которые вводятся через конструктор.
Мой вопрос, существуют ли фреймворки, которые помогают мне создавать такой синтаксический анализатор / интерпретатор и позволяют мне превратить приведенный выше пример скрипта в строковом формате в приведенный выше код C # и выполнить?