public dynamic Eval(string script)
{
var tokens = tokenize(script);
var parser = new Parser(ctx, this);
var converter = new Converter(ctx, this);
var block = parser.CreateBlock(null, tokens, 0, tokens.Count(), ';');
dynamic ast = converter.Convert(block);
string dbv = typeof(Expression).InvokeMember("DebugView", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetProperty, null, ast, null);
Console.WriteLine("### DLR AST Dump ###");
Console.WriteLine(dbv);
var f = ast.Compile();
return f();
}