코딩연습/C#
[C#]식트리
호아니
2020. 6. 15. 13:39
식트리란?
식을 트리로 표현한 자료구조
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; namespace ConsoleApp16 { class Program { static void Main(string[] args) { /* 식트리 */ //1*2+(x-y) Expression const1 = Expression.Constant(1); Expression const2 = Expression.Constant(2); Expression leftExp = Expression.Multiply(const1, const2); //1*2 Expression param1 = Expression.Parameter(typeof(int)); //x를 위한변수 Expression param2 = Expression.Parameter(typeof(int));//y를 위한 변수 Expression rightExp = Expression.Subtract(param1,param2); //x-y Expression exp = Expression.Add(leftExp, rightExp); Expression> expression = Expression >.Lambda >( exp, new ParameterExpression[] { (ParameterExpression)param1, (ParameterExpression)param2 }); Func func = expression.Compile(); //실행 가능한 코드로 컴파일 //X=7,Y=8 Console.WriteLine($"1*2+({7}-{8})={func(7, 8)}"); //컴파일한 무명함수 실행 //람다식을 이용해 식트리를 만드는 예) 위와 동일한 실행결과 Expression > ex = (a, b) => 1 * 2 + (a - b); Func func1 = expression.Compile(); Console.WriteLine($"1*2+({7}-{8})={func1(7, 8)}"); } } }