public void ODataDemo() { Parser parser = new ODataParser(); var expr1 = parser.Parse <Person, bool>("contains(Address/City,'ams') and FirstName gt 'm'"); // same query, using another syntax, and so using another parser parser = new CompactParser(); var expr2 = parser.Parse <Person, bool>("Address.City?ams&FirstName>m"); Assert.AreEqual(expr1.ToString(), expr2.ToString()); parser = new Parser(new Grammar(ScriptSyntax <DefaultSyntaxExtender> .Instance)); var args = new { a = 10, b = DateTime.Now, c = "foo", d = 10.2 }; var expr3 = parser.WithReturnType <double>().Parse("a + day(b) + length(c) + d/2", args); var fn = expr3.Compile(); double result = fn(args); Debug.WriteLine(result); }