private CompiledExpression(ExpressionSyntax syntax, IMathContext context = null) { Syntax = syntax; Context = context; Intermediate = IntermediateExpression.Compile(syntax, context); calculationBuffer = new MathValue[Intermediate.DistSize]; }
private SimpleMathExpression(string expression, IMathContext?context = null) { Expression = expression; Context = context; Intermediate = IntermediateCompiler.Compile(expression, context); runtimeBuffer = new MathValue[Intermediate.DistSize]; }
private static IEnumerable<ParameterAnnotationInfo> GetParameterAnnotationInfoFromExpression(IntermediateExpression expression) { var fromCall = GetAnnotationInfoFromMethodCall(expression.TargetMethodCall); var fromNew = GetAnnotationInfoFromNew(expression.TargetNew); return fromCall.Concat(fromNew); }
private static MemberInfo GetMemberInfo(IntermediateExpression expression) { if (expression.TargetMethodCall != null) { return expression.TargetMethodCall.Method; } if (expression.TargetMemberAccess != null) { return expression.TargetMemberAccess.Member; } if (expression.TargetNew != null) { return expression.TargetNew.Constructor; } throw new ArgumentException("Unexpected expression structure", nameof(expression)); }
private static IEnumerable<MemberAnnotationInfo> GetAnnotationInfoFromExpression(IntermediateExpression expression) { var fromEquals = GetAnnotationInfoFromMemberEquals(expression.EqualsMethodCall); return fromEquals; }