internal static IErrorCollector ParseError(string expression) { var builder = FileBuilder.ParseExpression( null, new Type[] { typeof(ExpressionParser) }, expression); return(builder.Errors); }
private void AssertTypeExpression(Type expected, string expression) { var builder = FileBuilder.ParseExpression(expression); var result = builder.Listener.GetExpressionResult(); Assert.IsTrue(result.IsConstant); Assert.IsTrue(result.Value is TypeReference); Assert.AreEqual(expected, (((TypeReference)result.Value).Type)); }
private void AssertConstantExpression <T>(T expected, string expression) { var builder = FileBuilder.ParseExpression(expression); var result = builder.Listener.GetExpressionResult(); Assert.IsTrue(result.IsConstant); Assert.IsTrue(result.Value is T); Assert.AreEqual(expected, (T)result.Value); }
internal static SBExpressionData Parse(string expression) { var builder = FileBuilder.ParseExpression( null, new Type[] { typeof(ExpressionParser) }, expression); Assert.AreEqual(0, builder.Errors.ErrorCount); return(builder.Listener.GetExpressionResult()); }
public static object ParseExpression(IScriptFile fileContext, string expression) { var builder = FileBuilder.ParseExpression(fileContext as ScriptFile, m_addonManager, expression); if (builder.Errors.ErrorCount > 0) { throw new Exception("Error parsing expression: " + builder.Errors[0].Message); } var result = builder.Listener.GetExpressionResult(); if (result.IsUnresolvedIdentifier) { result = new SBExpressionData(Expression.Constant(result.Value)); } var expressionAsObject = Expression.Convert(result.ExpressionCode, typeof(object)); return(Expression.Lambda <Func <object> >(expressionAsObject).Compile()()); }
internal static T ParseAndRunExp <T>(string expression) { var builder = FileBuilder.ParseExpression(typeof(DummyClass), null, expression); Assert.AreEqual(0, builder.Errors.ErrorCount); var result = builder.Listener.GetExpressionResult(); Assert.IsTrue(result.IsExpression); Assert.AreEqual(typeof(T), result.DataType.Type); var compiled = System.Linq.Expressions.Expression.Lambda <Func <T> >(result.ExpressionCode).Compile(); var before = DateTime.Now; try { return(compiled()); } finally { LastExecutionTime = DateTime.Now - before; } }