Каков рекомендуемый подход для анализа / интерпретации вложенной функции в строковом формате в код на C #? - PullRequest
0 голосов
/ 28 июня 2019

Я создал древовидную структуру, которая выполняет операции на основе содержимого данных в дочерних узлах. Инициализация 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 # и выполнить?

1 Ответ

0 голосов
/ 28 июня 2019

Если вам нужен полный анализатор языков, взгляните на Antlr.Он поддерживает .NET и Visual studio.

...