CSharpUtils.Templates.ParserNodes.ParserNodeBinaryOperation.Optimize C# (CSharp) Метод

Optimize() публичный Метод

public Optimize ( ParserNodeContext Context ) : ParserNode
Context ParserNodeContext
Результат ParserNode
		public override ParserNode Optimize(ParserNodeContext Context)
		{
			var LeftNodeOptimized = LeftNode.Optimize(Context);
			var RightNodeOptimized = RightNode.Optimize(Context);

			if ((LeftNodeOptimized is ParserNodeNumericLiteral) && (RightNodeOptimized is ParserNodeNumericLiteral))
			{
				var LeftNodeLiteral = (ParserNodeNumericLiteral)LeftNodeOptimized;
				var RightNodeLiteral = (ParserNodeNumericLiteral)RightNodeOptimized;
				switch (Operator)
				{
					case "+": return new ParserNodeNumericLiteral() { Value = LeftNodeLiteral.Value + RightNodeLiteral.Value, };
					case "-": return new ParserNodeNumericLiteral() { Value = LeftNodeLiteral.Value - RightNodeLiteral.Value, };
					case "*": return new ParserNodeNumericLiteral() { Value = LeftNodeLiteral.Value * RightNodeLiteral.Value, };
					case "/": return new ParserNodeNumericLiteral() { Value = LeftNodeLiteral.Value / RightNodeLiteral.Value, };
				}
			}
			return this;
		}