예제 #1
0
        public override void Emit(Emitter e)
        {
            var kind = (HasWin) ? ExpressionKinds.HasWin
        : (Accums > 0) ? ExpressionKinds.HasFold
        : (Lookup == null) ? ExpressionKinds.Closed : ExpressionKinds.Open;

            e.OutSeg(ExpressionBlock.Create(Name, kind, Value.Compile(), Value.DataType, Lookup, Accums));
        }
예제 #2
0
        public override void Emit(Emitter e)
        {
            Logger.Assert(DataType.IsVariable || DataType == DataTypes.Void, DataType);

            e.Out(Opcodes.LDACCBLK);
            e.OutLoad(NumberValue.Create(AccumIndex));
            e.OutLoad(DataType.DefaultValue());
            var seed = FoldedOp.GetSeed(DataType);
            var code = (FoldedOp.IsDefFunc)
          ? FoldedExpr.Compile(InvokeOp, CallInfo.Name, seed)
          : FoldedExpr.Compile(FoldedOp, seed, CallInfo);
            var eb = ExpressionBlock.Create("&i", ExpressionKinds.IsFolded, code, FoldedExpr.DataType, null, AccumIndex);

            e.OutSeg(eb);
            e.OutCall(Func);
        }
예제 #3
0
        public override void Emit(Emitter e)
        {
            var kind = (HasWin) ? ExpressionKinds.HasWin
        : (Accums > 0) ? ExpressionKinds.HasFold
        : (Lookup == null) ? ExpressionKinds.Closed : ExpressionKinds.Open;
            var eb = ExpressionBlock.Create(Name, kind, Value.Compile(), DataType, Lookup, Accums);

            //var eb = ExpressionBlock.Create(Name, kind, Value.Compile(), Value.DataType, Lookup, Accums);
            if (AsCode)
            {
                e.OutLoad(CodeValue.Create(eb));
            }
            else
            {
                e.OutSeg(eb);
            }
        }
예제 #4
0
 public override void Emit(Emitter e)
 {
     e.OutSeg(ExpressionBlock.Create(Name, OldName, DataType));
 }
예제 #5
0
 public override void Emit(Emitter e)
 {
     e.OutSeg(ExpressionBlock.Create("&d", ExpressionKinds.Closed, Value.Compile(), Value.DataType));
     e.Out(Opcodes.LDACCBLK);
     e.OutCall(Func);
 }
예제 #6
0
 public override void Emit(Emitter e)
 {
     e.OutSeg(ExpressionBlock.Create(Name, DataType, Grouped, Descending));
 }