public object PrecedenceTesting(string expression) { IParser parser = Factory.Instance.Create(); IToken token = parser.Compile(expression); return(token.EvalValue(null)); }
public void ParsingFailure(string expression, Type errType) { TestDelegate handler = new TestDelegate(() => { IParser parser = Factory.Instance.Create(); IToken token = parser.Compile(expression); token.EvalValue(null); }); Assert.Throws(errType, handler); }
public override void Compile(ICompileContext context) { if (context.Cut == null) { previous.Compile(context); } else { var success = Label(); context.Child(previous, null, context.Result, success, context.Failure); context.Append(Label(success)); context.Append(Assign(context.Cut, Constant(true))); context.Succeed(); } }
public object Run(string expression) { Func <string, object> func = name => { switch (name.ToLower()) { case "a": return(1); case "b": return(2); case "c": return(3); default: return(null); } }; IParser parser = Factory.Instance.Create(); return(parser.Compile(expression).EvalValue(func)); }
public override void Compile(ICompileContext context) => _inner.Compile(context);