public static Delegate Compile(XzaarExpression body)
        {
            var ctx       = new DotNetXzaarScriptCompilerContext();
            var discovery = new DotNetXzaarScriptDiscoveryVisitor(ctx);
            var compiler  = new DotNetXzaarScriptCompiler(ctx);

            discovery.Visit(body);
            compiler.Visit(body);

            return(ctx.CreateDelegate());
        }
 public DotNetXzaarScriptDiscoveryVisitor(DotNetXzaarScriptCompilerContext ctx)
 {
     this.ctx = ctx;
 }
 internal DotNetXzaarScriptCompiler(DotNetXzaarScriptCompilerContext ctx)
 {
     this.ctx = ctx;
 }