Exemple #1
0
        public static D CompileDelegateLambda <D>(Func <TExArgCtx, TEx> exConstructor, params TExArgCtx.Arg[] args) where D : Delegate
        {
            var tac = new TExArgCtx(args);

            return(exConstructor(tac).BakeAndCompile <D>(tac,
                                                         args.Select(a => ((Expression)a.expr) is ParameterExpression p ? p : null).NotNull().ToArray()));
        }
Exemple #2
0
 private static T InLetCtx <T>(ITexMovement vel, TExArgCtx tac, Func <TExArgCtx, T> exec)
 {
     using var root = tac.Let(MOV_ROOT_ALIAS, vel.root);
     using var ang  = tac.Let(MOV_ANGLE_ALIAS, vel.angle);
     using var angc = tac.Let(MOV_COS_ALIAS, vel.cos);
     using var angs = tac.Let(MOV_SIN_ALIAS, vel.sin);
     return(exec(tac));
 }
Exemple #3
0
        public void TestPrivateHoist()
        {
            var ex   = "sine 13h 0.4 + * 13 &fitr / p ^ dl 1.2".Into <Func <TExArgCtx, TEx <float> > >();
            var exc  = GCXFRepo._Fake(ex);
            var _gcx = TExArgCtx.Arg.Make <GenCtx>("gcx", true);
            var tac  = new TExArgCtx(_gcx);

            exc(tac).BakeAndCompile <GCXF <float> >(tac, _gcx.expr);

            var ex2 = @"sync sun-red/w <2;:> gsr {
	start gcxVar =v2 pxy(1, 2)
} s offset
	:: {
		letVar1 0
		letVar2 (-1 + &letVar1)
	} px &letVar2
	:: {
		letVar1 [&gcxVar].x
		letVar2 (1 + &letVar1)
	} pxy
		@0 publicVar
		ss0 &letVar2"        .Into <StateMachine>();
            //var s = BakeCodeGenerator.Generated;
        }