2015-10-25 2 views
-2

Как преобразовать это в дерево выражений или использовать linq, чтобы я мог написать функциональную базу в этой иерархии выражений ?.Дерево выражений в C#

Я видел эту библиотеку, но я не уверен, что я на правильном пути к https://csharpeval.codeplex.com/wikipage?title=Usage&referringTitle=Documentation

max(avg(high1:3),avg(low1:3)) - min(avg(high1:3),avg(low1:3)) 
+0

Это не похоже на C# –

ответ

1

Компиляция и выполнение кода во время выполнения всегда немного сложная задача. Библиотека, о которой вы упомянули, - это просто способ.

Вы можете использовать Roslyn, который поставляется с C# 6.0 и Visual Studio 2015 Microsoft и командой C#. Вы не можете себе представить, насколько он силен. Вот некоторые примеры и пошаговые:

https://github.com/dotnet/roslyn/wiki/Samples-and-Walkthroughs

и некоторые другие введений:

https://en.wikipedia.org/wiki/.NET_Compiler_Platform

А вот некоторые примеры, чтобы создать REPL (что-то вроде того, что вы хотите):

http://www.jayway.com/2015/05/09/using-roslyn-to-build-a-simple-c-interactive-script-engine/

Использование Roslyn может просто иметь что-то hing вот так:

var csScript = 
    string.Format(@" 
     var x = Math.Max(Math.Avg({0},3),Math.Avg(low1:3)); 
     x; 
    ", high1, low1); 
    //And this from the REPL 
    Console.WriteLine(CSharpScriptEngine.Execute(csScript)); 
Смежные вопросы