Example #1
0
 static SCode DistributeDisjunction(Conditional predicate, SCode alternative)
 {
     //Debug.Write ("\n; Distribute disjunction.");
     return(Conditional.Make(predicate.Predicate,
                             Disjunction.Make(predicate.Consequent, alternative),
                             Disjunction.Make(predicate.Alternative, alternative)));
 }
Example #2
0
        public bool Apply(out object answer, ref Control expression, ref Environment environment, object [] args)
        {
            switch (args.Length)
            {
            case 0: return(this.Call(out answer, ref expression, ref environment));

            case 1: return(this.Call(out answer, ref expression, ref environment, args [0]));

            case 2: return(this.Call(out answer, ref expression, ref environment, args [0], args [1]));

            case 3: return(this.Call(out answer, ref expression, ref environment, args [0], args [1], args [2]));

            default:
#if DEBUG
                this.BumpCallCount();
                SCode.location = "SimpleClosure.Apply";
                SCode.NoteCalls(this, this.lambdaBody);
#endif
                if (args.Length != this.arity)
                {
                    return(Error.WrongNumberOfArguments(out answer, ref expression, ref environment));
                }
                expression  = this.lambdaBody;
                environment = new SimpleEnvironment(this, args);
                answer      = null; // keep the compiler happy
                return(true);
            }
        }
 public static SCode Make(PrimitiveLessThanFixnumS predicate, SCode consequent, SCode alternative)
 {
     return
         ((predicate is PrimitiveLessThanFixnumSQ) ? PCondLessThanFixnumSQ.Make((PrimitiveLessThanFixnumSQ)predicate, consequent, alternative) :
          (consequent is Quotation) ? PCondLessThanFixnumSXQ.Make(predicate, (Quotation)consequent, alternative) :
          new PCondLessThanFixnumS(predicate, consequent, alternative));
 }
 public static new SCode Make(Primitive2 rator, StaticVariable rand0, SCode rand1)
 {
     return
         ((rand1 is Argument) ? PrimitiveVectorRefSA.Make(rator, rand0, (Argument)rand1) :
          (rand1 is Quotation) ? PrimitiveVectorRefSQ.Make(rator, rand0, (Quotation)rand1) :
          new PrimitiveVectorRefS(rator, rand0, rand1));
 }
 public static SCode Make(PrimitiveLessThanFixnumA0 predicate, SCode consequent, SCode alternative)
 {
     return
         ((predicate is PrimitiveLessThanFixnumA0Q) ? PCondLessThanFixnumA0Q.Make((PrimitiveLessThanFixnumA0Q)predicate, consequent, alternative) :
          (predicate is PrimitiveLessThanFixnumA0S) ? PCondLessThanFixnumA0S.Make((PrimitiveLessThanFixnumA0S)predicate, consequent, alternative) :
          new PCondLessThanFixnumA0(predicate, consequent, alternative));
 }
 public static new SCode Make(Primitive2 rator, Argument rand0, SCode rand1)
 {
     return
         ((rand0 is Argument0) ? PrimitiveVectorRefA0.Make(rator, (Argument0)rand0, rand1) :
          (rand1 is Quotation) ? new PrimitiveVectorRefAQ(rator, rand0, (Quotation)rand1) :
          new PrimitiveVectorRefA(rator, rand0, rand1));
 }
 protected PrimitiveGeneralCarCdrL(Primitive2 rator, LexicalVariable rand0, SCode rand1)
     : base(rator, rand0, rand1)
 {
     this.rand0Name   = rand0.Name;
     this.rand0Depth  = rand0.Depth;
     this.rand0Offset = rand0.Offset;
 }
 public static PrimitiveStringSet Make(SCode arg0, SCode arg1, SCode arg2)
 {
     return
         (arg0 is Argument) ? PrimitiveStringSetA.Make ((Argument) arg0, arg1, arg2) :
         (arg0 is StaticVariable) ? PrimitiveStringSetS.Make ((StaticVariable) arg0, arg1, arg2) :
         new PrimitiveStringSet (arg0, arg1, arg2);
 }
 public static SCode Make(Primitive2 rator, Argument rand0, SCode rand1)
 {
     return
         (rand0 is Argument0) ? PrimitiveIsCharEqA0.Make (rator, (Argument0) rand0, rand1)
         : (rand0 is Argument1) ? PrimitiveIsCharEqA1.Make (rator, (Argument1) rand0, rand1)
         : Unimplemented ();
 }
Example #10
0
        //static SCode InvertConditional (PrimitiveNot predicate, SCode SCode alternative)
        //{
        //    //Debug.Write ("\n; InvertConditional");
        //    return Conditional.Make (predicate.Operand, alternative, consequent);
        //}

        public static SCode Make(PrimitiveCombination1 predicate, SCode alternative)
        {
            return
                ((predicate.Operator == Primitive.IsBigFixnum) ? POrIsType <long> .Make(predicate, alternative) :
                 (predicate.Operator == Primitive.IsBigFlonum) ? POrIsType <double> .Make(predicate, alternative) :
                 (predicate.Operator == Primitive.IsComplex) ? POrIsType <Complex> .Make(predicate, alternative) :
                 (predicate.Operator == Primitive.IsFixnum) ? POrIsType <int> .Make(predicate, alternative) :
                 (predicate.Operator == Primitive.IsPair) ? POrIsType <Cons> .Make(predicate, alternative) :
                 (predicate.Operator == Primitive.IsRatnum) ? POrIsType <Ratnum> .Make(predicate, alternative) :
                 (predicate.Operator == Primitive.IsString) ? POrIsType <char []> .Make(predicate, alternative) :
                 //(Configuration.EnableInvertConditional && predicate is PrimitiveNot) ? InvertConditional ((PrimitiveNot) predicate, alternative) :
                 //(predicate is PrimitiveCdr) ? Unimplemented() :
                 //(predicate is PrimitiveIsSymbol) ? POrIsSymbol.Make ((PrimitiveIsSymbol) predicate, alternative) :
                 //(predicate is PrimitiveIsType<long>) ? POrIsType<long>.Make ((PrimitiveIsType<long>) predicate, alternative) :
                 //(predicate is PrimitiveIsType<double>) ? POrIsType<double>.Make ((PrimitiveIsType<double>) predicate, alternative) :
                 //(predicate is PrimitiveIsType<Complex>) ? POrIsType<Complex>.Make ((PrimitiveIsType<Complex>) predicate, alternative) :
                 //(predicate is PrimitiveIsType<char>) ? POrIsType<char>.Make ((PrimitiveIsType<char>) predicate, alternative) :
                 //(predicate is PrimitiveIsType<int>) ? POrIsType<int>.Make ((PrimitiveIsType<int>) predicate, alternative) :
                 //(predicate is PrimitiveIsNegative) ? POrIsNegative.Make ((PrimitiveIsNegative) predicate, alternative) :
                 //(predicate is PrimitiveIsNull) ? POrIsNull.Make ((PrimitiveIsNull) predicate, alternative) :
                 //(predicate is PrimitiveIsType<Cons>) ? POrIsType<Cons>.Make ((PrimitiveIsType<Cons>) predicate, alternative) :
                 //(predicate is PrimitiveIsType<Primitive>) ? POrIsType<Primitive>.Make ((PrimitiveIsType<Primitive>) predicate, alternative) :
                 //(predicate is PrimitiveIsType<Ratnum>) ? POrIsType<Ratnum>.Make ((PrimitiveIsType<Ratnum>) predicate, alternative) :
                 //(predicate is PrimitiveIsType<Record>) ? POrIsType<Record>.Make ((PrimitiveIsType<Record>) predicate, alternative) :
                 //(predicate is PrimitiveIsType<object []>) ? POrIsType<object []>.Make ((PrimitiveIsType<object[]>) predicate, alternative) :
                 //(predicate is PrimitiveCombination1Q) ? Unimplemented () :
                 (predicate.Operand is Argument) ? POr1A.Make(predicate, alternative) :
                 (predicate.Operand is Quotation) ? Unimplemented() :
                 (predicate.Operand is StaticVariable) ? POr1S.Make(predicate, alternative) :
                 //(consequent is Quotation) ? POr1SQ.Make (predicate, (Quotation) alternative) :
                 //(alternative is Quotation) ? POr1SSQ.Make (predicate, (Quotation) alternative) :
                 new POr1(predicate, alternative));
        }
 public static SCode Make(Primitive2 rator, StaticVariable rand0, SCode rand1)
 {
     return
         ((rand1 is Argument) ? PrimitiveVector8BRefSA.Make(rator, rand0, (Argument)rand1) :
          (rand1 is StaticVariable) ? new PrimitiveVector8BRefSS(rator, rand0, (StaticVariable)rand1) :
          new PrimitiveVector8BRefS(rator, rand0, rand1));
 }
Example #12
0
 public static PrimitiveRecordSetSQ Make(StaticVariable arg0, Quotation arg1, SCode arg2)
 {
     return
         ((arg2 is Quotation) ? new PrimitiveRecordSetSQQ(arg0, arg1, (Quotation)arg2) :
          (arg2 is StaticVariable) ? new PrimitiveRecordSetSQS(arg0, arg1, (StaticVariable)arg2) :
          new PrimitiveRecordSetSQ(arg0, arg1, arg2));
 }
Example #13
0
 public static new SCode Make(Primitive2 rator, Argument0 rand0, SCode rand1)
 {
     return
         ((rand1 is StaticVariable) ? PrimitiveGreaterThanFixnumA0S.Make(rator, rand0, (StaticVariable)rand1) :
          (rand1 is Quotation) ? PrimitiveGreaterThanFixnumA0Q.Make(rator, rand0, (Quotation)rand1) :
          new PrimitiveGreaterThanFixnumA0(rator, rand0, rand1));
 }
Example #14
0
 public static SCode Make(Primitive2 rator, Quotation rand0, SCode rand1)
 {
     return
         (rand1 is Argument) ? PrimitiveIsCharEqQA.Make (rator, rand0, (Argument) rand1) :
         (rand1 is StaticVariable) ? PrimitiveIsCharEqQS.Make (rator, rand0, (StaticVariable) rand1) :
         new PrimitiveIsCharEqQ (rator, rand0, rand1);
 }
Example #15
0
 public static SCode Make(PrimitiveIsCharEqA predicate, SCode consequent, SCode alternative)
 {
     return
         ((predicate is PrimitiveIsCharEqA0) ? PCondIsCharEqA0.Make((PrimitiveIsCharEqA0)predicate, consequent, alternative) :
          (predicate is PrimitiveIsCharEqA1) ? PCondIsCharEqA1.Make((PrimitiveIsCharEqA1)predicate, consequent, alternative) :
          new PCondIsCharEqA(predicate, consequent, alternative));
 }
Example #16
0
        internal override PartialResult PartialEval(PartialEnvironment environment)
        {
            bool changed = false;

            PartialResult [] ra = new PartialResult [this.components.Length];
            for (int i = 0; i < this.components.Length; i++)
            {
                ra [i] = this.components [i].PartialEval(environment);
                if (ra [i].Residual != this.components [i])
                {
                    changed = true;
                }
            }
            if (changed)
            {
                SCode [] components = new SCode [ra.Length];
                for (int i = 0; i < ra.Length; i++)
                {
                    components [i] = ra [i].Residual;
                }
                return(new PartialResult(new Combination(components)));
            }
            else
            {
                return(new PartialResult(this));
            }
        }
Example #17
0
        public static SCode AlwaysFalse(SCode rand1)
        {
#if DEBUG
            Debug.WriteLine("Folding compiled-entry? => false");
#endif
            return(Sequence2.Make(rand1, Quotation.Make(false)));
        }
 protected PCondIsVector(PrimitiveIsVector predicate, SCode consequent, SCode alternative)
     : base(predicate, consequent, alternative)
 {
     #if DEBUG
     this.arg0Type = this.arg0.GetType ();
     #endif
 }
Example #19
0
 public static SCode Make(Primitive2 rator, Argument0 rand0, SCode rand1)
 {
     return
         ((rand1 is Quotation) ? PrimitiveRecordRefA0Q.Make(rator, rand0, (Quotation)rand1) :
          (rand1 is StaticVariable) ? PrimitiveRecordRefA0S.Make(rator, rand0, (StaticVariable)rand1) :
          new PrimitiveRecordRefA0(rator, rand0, rand1));
 }
Example #20
0
 static SCode StandardMake(Lambda rator, SCode arg0, SCode arg1)
 {
     return
         ((rator is SimpleLambda) ? SimpleLet2.Make((SimpleLambda)rator, arg0, arg1) :
          (rator is StaticLambda) ? StaticLet2.Make((StaticLambda)rator, arg0, arg1) :
          new Let2(rator, arg0, arg1));
 }
Example #21
0
 public static SCode Make(Primitive2 rator, Argument rand0, SCode rand1)
 {
     return
         ((rand0 is Argument0) ? PrimitiveIsIntEqA0.Make(rator, (Argument0)rand0, rand1)
         : (rand0 is Argument1) ? PrimitiveIsIntEqA1.Make(rator, (Argument1)rand0, rand1)
         : Unimplemented());
 }
Example #22
0
 protected PCond2L(PrimitiveCombination2L predicate, SCode consequent, SCode alternative)
     : base(predicate, consequent, alternative)
 {
     this.rand0Name = predicate.rand0Name;
     this.rand0Depth = predicate.rand0Depth;
     this.rand0Offset = predicate.rand0Offset;
 }
Example #23
0
 protected PCondIsCharEqL(PrimitiveIsCharEqL predicate, SCode consequent, SCode alternative)
     : base(predicate, consequent, alternative)
 {
     this.rand0Name   = predicate.rand0Name;
     this.rand0Depth  = predicate.rand0Depth;
     this.rand0Offset = predicate.rand0Offset;
 }
Example #24
0
        public static SCode Make(PrimitiveCombination1 predicate, SCode consequent, SCode alternative)
        {
            return
                (Configuration.EnableCodeRewriting &&
                 Configuration.EnableInvertConditional &&
                 predicate is PrimitiveNot) ? InvertConditional ((PrimitiveNot) predicate, consequent, alternative) :
                (Configuration.EnableInlinePCond1 && predicate is PrimitiveCar) ? PCondCar.Make ((PrimitiveCar) predicate, consequent, alternative) :
                (Configuration.EnableInlinePCond1 && predicate is PrimitiveIsType<long>) ? PCondIsType<long>.Make ((PrimitiveIsType<long>) predicate, consequent, alternative) :
                (Configuration.EnableInlinePCond1 && predicate is PrimitiveIsType<double>) ? PCondIsType<double>.Make ((PrimitiveIsType<double>) predicate, consequent, alternative) :
                (Configuration.EnableInlinePCond1 && predicate is PrimitiveIsType<Complex>) ? PCondIsType<Complex>.Make ((PrimitiveIsType<Complex>) predicate, consequent, alternative) :
                (Configuration.EnableInlinePCond1 && predicate is PrimitiveIsType<char>) ? PCondIsType<char>.Make ((PrimitiveIsType<char>) predicate, consequent, alternative) :
                (Configuration.EnableInlinePCond1 && predicate is PrimitiveIsType<char []>) ? PCondIsType<char []>.Make ((PrimitiveIsType<char []>) predicate, consequent, alternative) :
                (Configuration.EnableInlinePCond1 && predicate is PrimitiveIsType<int>) ? PCondIsType<int>.Make ((PrimitiveIsType<int>) predicate, consequent, alternative) :
                (Configuration.EnableInlinePCond1 && predicate is PrimitiveIsNull) ? PCondIsNull.Make ((PrimitiveIsNull) predicate, consequent, alternative) :
                (Configuration.EnableInlinePCond1 && predicate is PrimitiveIsType<Cons>) ? PCondIsType<Cons>.Make ((PrimitiveIsType<Cons>) predicate, consequent, alternative) :
                (Configuration.EnableInlinePCond1 && predicate is PrimitiveIsType<Entity>) ? PCondIsType<Entity>.Make ((PrimitiveIsType<Entity>) predicate, consequent, alternative) :
                (Configuration.EnableInlinePCond1 && predicate is PrimitiveIsType<Ratnum>) ? PCondIsType<Ratnum>.Make ((PrimitiveIsType<Ratnum>) predicate, consequent, alternative) :
                (Configuration.EnableInlinePCond1 && predicate is PrimitiveIsType<Record>) ? PCondIsType<Record>.Make ((PrimitiveIsType<Record>) predicate, consequent, alternative) :
                ////(predicate is PrimitiveIsSymbol) ? PCondIsSymbol.Make ((PrimitiveIsSymbol) predicate, consequent, alternative) :
                (Configuration.EnableInlinePCond1 && predicate is PrimitiveIsType<object []>) ? PCondIsType<object []>.Make ((PrimitiveIsType<object []>) predicate, consequent, alternative) :
                (Configuration.EnableInlinePCond1 && predicate is PrimitiveIsType<WeakCons>) ? PCondIsType<WeakCons>.Make ((PrimitiveIsType<WeakCons>) predicate, consequent, alternative) :

                (predicate.Operand is Argument) ? PCond1A.Make (predicate, consequent, alternative) :
                (predicate.Operand is Quotation) ? PCond1Q.Make (predicate, consequent, alternative) :
                (predicate.Operand is StaticVariable) ? PCond1S.Make (predicate, consequent, alternative) :
                (consequent is Argument) ? PCond1XA.Make (predicate, (Argument) consequent, alternative) :
                (consequent is Quotation) ? PCond1XQ.Make (predicate, (Quotation) consequent, alternative) :
                (consequent is StaticVariable) ? PCond1XS.Make (predicate, (StaticVariable) consequent, alternative) :
                (alternative is Argument) ? PCond1XXA.Make (predicate, consequent, (Argument) alternative) :
                (alternative is Quotation) ? PCond1XXQ.Make (predicate, consequent, (Quotation) alternative) :
                (alternative is StaticVariable) ? PCond1XXS.Make (predicate, consequent, (StaticVariable) alternative) :
                new PCond1 (predicate, consequent, alternative);
        }
 public static SCode Make(Primitive2 rator, Quotation rand0, SCode rand1)
 {
     return
         ((rand1 is LexicalVariable) ? PrimitiveIsObjectEqQL.Make(rator, rand0, (LexicalVariable)rand1) :
          (rand1 is Quotation) ? Unimplemented() :
          new PrimitiveIsObjectEqQ(rator, rand0, rand1));
 }
 public static SCode Make(Primitive2 rator, Argument0 rand0, SCode rand1)
 {
     return
         ((rand1 is LexicalVariable) ? PrimitiveGeneralCarCdrA0L.Make(rator, rand0, (LexicalVariable)rand1)
         : (rand1 is Quotation) ? PrimitiveGeneralCarCdrA0Q.Make(rator, rand0, (Quotation)rand1)
         : new PrimitiveGeneralCarCdrA0(rator, rand0, rand1));
 }
Example #27
0
 public static SCode Make(PrimitiveIsSymbol predicate, SCode alternative)
 {
     return
         ((predicate is PrimitiveIsSymbolA) ? POrIsSymbolA.Make((PrimitiveIsSymbolA)predicate, alternative) :
          (predicate is PrimitiveIsSymbolS) ? POrIsSymbolS.Make((PrimitiveIsSymbolS)predicate, alternative) :
          new POrIsSymbol(predicate, alternative));
 }
 public static SCode Make(Primitive2 rator, LexicalVariable1 rand0, SCode rand1)
 {
     return
         ((rand1 is LexicalVariable) ? Unimplemented() //PrimitiveGeneralCarCdrA0L.Make (rator, rand0, (LexicalVariable) rand1)
         : (rand1 is Quotation) ? PrimitiveGeneralCarCdrL1Q.Make(rator, rand0, (Quotation)rand1)
         : new PrimitiveGeneralCarCdrL1(rator, rand0, rand1));
 }
 public static PrimitiveStringSet Make(SCode arg0, SCode arg1, SCode arg2)
 {
     return
         ((arg0 is Argument) ? PrimitiveStringSetA.Make((Argument)arg0, arg1, arg2) :
          (arg0 is StaticVariable) ? PrimitiveStringSetS.Make((StaticVariable)arg0, arg1, arg2) :
          new PrimitiveStringSet(arg0, arg1, arg2));
 }
 static bool isFoldableCxr(SCode form, Primitive prim)
 {
     return(Configuration.EnableFoldCarCdr &&
            ((form is PrimitiveCombination1 && ((PrimitiveCombination1)form).Operator == prim) ||
             (form is PrimitiveCombination2 &&
              ((PrimitiveCombination2)form).Rator == prim &&
              ((PrimitiveCombination2)form).Rand1 is Quotation)));
 }
 public static new SCode Make(Primitive2 rator, SCode rand0, SCode rand1)
 {
     return
         //(rand0 is Argument) ? PrimitiveLessThanFixnumA.Make (rator, (Argument) rand0, rand1) :
         //(rand0 is StaticVariable) ? PrimitiveLessThanFixnumS.Make (rator, (StaticVariable) rand0, rand1) :
         //(rand1 is Quotation) ? PrimitiveLessThanFixnumXQ.Make (rator, rand0, (Quotation) rand1) :
         new PrimitiveLessThan (rator, rand0, rand1);
 }
 public static new SCode Make(Primitive2 rator, SCode rand0, SCode rand1)
 {
     return
         (rand0 is Argument) ? PrimitiveRecordRefA.Make(rator, (Argument) rand0, rand1) :
         (rand0 is StaticVariable) ? PrimitiveRecordRefS.Make (rator, (StaticVariable) rand0, rand1) :
         (rand1 is Quotation) ? PrimitiveRecordRefXQ.Make (rator, rand0, (Quotation) rand1) :
         new PrimitiveRecordRef (rator, rand0, rand1);
 }
Example #33
0
 public static SCode Make(PrimitiveCombination2 predicate, SCode alternative)
 {
     return
         ((predicate.Operand1 is Argument) ? POrIsEqQA.Make(predicate, alternative) :
          (predicate.Operand1 is Quotation) ? Unimplemented() :
          (predicate.Operand1 is StaticVariable) ? POrIsEqQS.Make(predicate, alternative) :
          new POrIsEqQ(predicate, alternative));
 }
Example #34
0
 public static SCode Make(PrimitiveVectorRef predicate, SCode consequent, SCode alternative)
 {
     return
         //(predicate is PrimitiveVectorRefA) ? PCondVectorRefA.Make ((PrimitiveVectorRefA) predicate, consequent, alternative) :
         //(predicate is PrimitiveVectorRefS) ? PCondVectorRefS.Make ((PrimitiveVectorRefS) predicate, consequent, alternative) :
         //(predicate is PrimitiveVectorRefXQ) ? PCondVectorRefXQ.Make ((PrimitiveVectorRefXQ) predicate, consequent, alternative) :
         (new PCondVectorRef(predicate, consequent, alternative));
 }
 public static SCode Make(Primitive2 rator, SCode rand0, Quotation rand1)
 {
     return
         (isFoldableCxr(rand0, Primitive.Car) ? AddCar(((PrimitiveCombination1)rand0).Operand, (int)rand1.Quoted) :
          isFoldableCxr(rand0, Primitive.Cdr) ? AddCdr(((PrimitiveCombination1)rand0).Operand, (int)rand1.Quoted) :
          isFoldableCxr(rand0, Primitive.GeneralCarCdr) ? CombineGCC(((PrimitiveCombination2)rand0).Rand0, (int)((Quotation)((PrimitiveCombination2)rand0).Rand1).Quoted, (int)rand1.Quoted) :
          new PrimitiveGeneralCarCdrSQ(rator, rand0, rand1));
 }
Example #36
0
 protected PCondIsEqCar(PrimitiveCombination2 predicate, SCode consequent, SCode alternative)
     : base(predicate, consequent, alternative)
 {
     this.rand0Inner = ((PrimitiveCar) predicate.Operand0).Operand;
     #if DEBUG
     this.rand0InnerType = this.rand0Inner.GetType();
     #endif
 }
Example #37
0
 public static SCode Make(PrimitiveRecordRef predicate, SCode consequent, SCode alternative)
 {
     return
         (predicate is PrimitiveRecordRefA) ? PCondRecordRefA.Make ((PrimitiveRecordRefA) predicate, consequent, alternative) :
         (predicate is PrimitiveRecordRefS) ? PCondRecordRefS.Make ((PrimitiveRecordRefS) predicate, consequent, alternative) :
         (predicate is PrimitiveRecordRefXQ) ? PCondRecordRefXQ.Make ((PrimitiveRecordRefXQ) predicate, consequent, alternative) :
         new PCondRecordRef (predicate, consequent, alternative);
 }
Example #38
0
        public static SCode Make(PrimitiveCombination2 predicate, SCode alternative)
        {
#if DEBUG
            Debugger.Break();
#endif
            return
                (new POrIsEqA0A0(predicate, alternative));
        }
Example #39
0
 public static new SCode Make(Primitive2 rator, Argument rand0, SCode rand1)
 {
     return
         //(rand0 is Quotation) ? PrimitiveGreaterThanFixnumQ.Make (rator, (Quotation) rand0, rand1) :
         //(rand1 is Quotation) ? PrimitiveGreaterThanFixnumSQ.Make (rator, rand0, (Quotation) rand1) :
         ((rand0 is Argument0) ? PrimitiveGreaterThanFixnumA0.Make(rator, (Argument0)rand0, rand1) :
          new PrimitiveGreaterThanFixnumA(rator, rand0, rand1));
 }
Example #40
0
        protected PCondIsEqCar(PrimitiveCombination2 predicate, SCode consequent, SCode alternative)
            : base(predicate, consequent, alternative)
        {
            this.rand0Inner = ((PrimitiveCar)predicate.Operand0).Operand;
#if DEBUG
            this.rand0InnerType = this.rand0Inner.GetType();
#endif
        }
 public static SCode Make(PrimitiveLessThanFixnum predicate, SCode consequent, SCode alternative)
 {
     return
         (predicate is PrimitiveLessThanFixnumA) ? PCondLessThanFixnumA.Make ((PrimitiveLessThanFixnumA) predicate, consequent, alternative) :
         (predicate is PrimitiveLessThanFixnumS) ? PCondLessThanFixnumS.Make ((PrimitiveLessThanFixnumS) predicate, consequent, alternative) :
         (predicate is PrimitiveLessThanFixnumXQ) ? PCondLessThanFixnumXQ.Make ((PrimitiveLessThanFixnumXQ) predicate, consequent, alternative) :
         new PCondLessThanFixnum (predicate, consequent, alternative);
 }
 public static new SCode Make(Primitive2 rator, SCode rand0, SCode rand1)
 {
     return
         (rand0 is LexicalVariable) ? PrimitivePlusFixnumL.Make (rator, (LexicalVariable) rand0, rand1) :
         (rand0 is Quotation) ? PrimitivePlusFixnumQ.Make (rator, (Quotation) rand0, rand1) :
         (rand1 is LexicalVariable) ? PrimitivePlusFixnumSL.Make (rator, rand0, (LexicalVariable) rand1) :
         (rand1 is Quotation) ? PrimitivePlusFixnumSQ.Make (rator, rand0, (Quotation) rand1) :
         new PrimitivePlusFixnum (rator, rand0, rand1);
 }
 public static new SCode Make(Primitive2 rator, SCode rand0, SCode rand1)
 {
     return
         (rand0 is Argument) ? PrimitiveVector8BRefA.Make (rator, (Argument) rand0, rand1) :
         (rand0 is StaticVariable) ? PrimitiveVector8BRefS.Make (rator, (StaticVariable) rand0, rand1) :
         (rand1 is Argument) ? PrimitiveVector8BRefXA.Make (rator, rand0, (Argument) rand1) :
         (rand1 is StaticVariable) ? PrimitiveVector8BRefXS.Make (rator, rand0, (StaticVariable) rand1) :
         new PrimitiveVector8BRef (rator, rand0, rand1);
 }
 public static new SCode Make(Primitive2 rator, SCode rand0, SCode rand1)
 {
     return
         (rand0 is LexicalVariable) ? PrimitiveIsCharEqL.Make (rator, (LexicalVariable) rand0, rand1)
         : (rand0 is Quotation) ? PrimitiveIsCharEqQ.Make (rator, (Quotation) rand0, rand1)
         : (rand1 is LexicalVariable) ? PrimitiveIsCharEqSL.Make (rator, rand0, (LexicalVariable) rand1)
         : (rand1 is Quotation) ? PrimitiveIsCharEqSQ.Make (rator, rand0, (Quotation) rand1)
         : new PrimitiveIsCharEq (rator, rand0, rand1);
 }
Example #45
0
 protected Let2(Lambda rator, SCode rand0, SCode rand1)
     : base(rator, rand0, rand1)
 {
     this.body = rator.Body;
     #if DEBUG
     if (rator.Body != null)
         this.bodyType = rator.Body.GetType ();
     #endif
 }
 public static new SCode Make(Primitive2 rator, SCode rand0, SCode rand1)
 {
     return
         (rand0 is LexicalVariable) ? PrimitiveGeneralCarCdrL.Make (rator, (LexicalVariable) rand0, rand1) :
         (rand0 is Quotation) ? Unimplemented() : // PrimitiveGeneralCarCdrQ.Make (rator, (Quotation) rand0, rand1)
         (rand1 is LexicalVariable) ? Unimplemented() : // PrimitiveGeneralCarCdrSL.Make (rator, rand0, (LexicalVariable) rand1)
         (rand1 is Quotation) ?  PrimitiveGeneralCarCdrSQ.Make (rator, rand0, (Quotation) rand1) :
         new PrimitiveGeneralCarCdr (rator, rand0, rand1);
 }
 public static SCode Make(PrimitiveIsFixnumEqual predicate, SCode consequent, SCode alternative)
 {
     return
         (predicate is PrimitiveIsFixnumEqualL) ? PCondIsFixnumEqualL.Make ((PrimitiveIsFixnumEqualL) predicate, consequent, alternative) :
         //(predicate is PrimitiveIsFixnumEqualQ) ? Unimplemented() :
         //(predicate is PrimitiveIsFixnumEqualSL) ? Unimplemented() :
         (predicate is PrimitiveIsFixnumEqualSQ) ? PCondIsFixnumEqualSQ.Make ((PrimitiveIsFixnumEqualSQ) predicate, consequent, alternative) :
         new PCondIsFixnumEqual (predicate, consequent, alternative);
 }
 public static SCode Make(Primitive2 rator, Argument rand0, SCode rand1)
 {
     return
         (rand0 is Argument0) ? PrimitiveIsObjectEqA0.Make (rator, (Argument0) rand0, rand1)
         : (rand0 is Argument1) ? PrimitiveIsObjectEqA1.Make (rator, (Argument1) rand0, rand1)
         : (rand1 is LexicalVariable) ? Unimplemented()
         : (rand1 is Quotation) ? PrimitiveIsObjectEqAQ.Make (rator, rand0, (Quotation) rand1)
         : new PrimitiveIsObjectEqA (rator, rand0, rand1);
 }
 public static new SCode Make(Primitive2 rator, SCode rand0, SCode rand1)
 {
     return
         (rand0 is PrimitiveObjectType &&
         Configuration.EnableObjectTypePrimitives) ? RewriteAsSameType ((PrimitiveObjectType) rand0, rand1) :
         (rand0 is Quotation) ? PrimitiveIsObjectTypeQ.Make (rator, (Quotation) rand0, rand1) :
         //(rand1 is Quotation) ? PrimitiveIsObjectTypeSQ.Make (rator, rand0, (Quotation) rand1) :
         (rand1 is Argument) ? PrimitiveIsObjectTypeXA.Make (rator, rand0, (Argument) rand1) :
         new PrimitiveIsObjectType (rator, rand0, rand1);
 }
Example #50
0
 protected PCond1(PrimitiveCombination1 predicate, SCode consequent, SCode alternative)
     : base(predicate, consequent, alternative)
 {
     this.procedure = predicate.Operator;
     this.method = this.procedure.Method;
     this.arg0 = predicate.Operand;
     #if DEBUG
     this.arg0Type = this.arg0.GetType ();
     #endif
 }
Example #51
0
 public static SCode Make(PrimitiveIsSymbol predicate, SCode consequent, SCode alternative)
 {
     return
          (predicate is PrimitiveIsSymbolL) ? PCondIsSymbolL.Make ((PrimitiveIsSymbolL) predicate, consequent, alternative)
         : (consequent is LexicalVariable) ? PCondIsSymbolSL.Make (predicate, (LexicalVariable) consequent, alternative)
         : (consequent is Quotation) ? PCondIsSymbolSQ.Make (predicate, (Quotation) consequent, alternative)
         : (alternative is LexicalVariable) ? PCondIsSymbolSSL.Make (predicate, consequent, (LexicalVariable) alternative)
         : (alternative is Quotation) ? PCondIsSymbolSSQ.Make (predicate, consequent, (Quotation) alternative)
         : new PCondIsSymbol (predicate, consequent, alternative);
 }
Example #52
0
 public static SCode Make(PrimitiveCombination2 predicate, SCode alternative)
 {
     return
         (predicate.Operand0 is Argument) ? POrIsEqA.Make (predicate, alternative) :
         (predicate.Operand0 is Quotation) ? POrIsEqQ.Make (predicate, alternative) :
         (predicate.Operand0 is StaticVariable) ? POrIsEqS.Make (predicate, alternative) :
         (predicate.Operand1 is Argument) ? POrIsEqXA.Make (predicate, alternative) :
         (predicate.Operand1 is Quotation) ? POrIsEqXQ.Make (predicate, alternative) :
         (predicate.Operand1 is StaticVariable) ? POrIsEqXS.Make (predicate, alternative) :
         new POrIsEq (predicate, alternative);
 }
Example #53
0
 public static SCode Make(PrimitiveCombination2A0 predicate, SCode consequent, SCode alternative)
 {
     return
         (predicate is PrimitiveCombination2A0L) ? PCond2A0L.Make ((PrimitiveCombination2A0L) predicate, consequent, alternative) :
         (predicate is PrimitiveCombination2A0Q) ? PCond2A0Q.Make ((PrimitiveCombination2A0Q) predicate, consequent, alternative) :
         (consequent is LexicalVariable) ? PCond2A0SL.Make (predicate, (LexicalVariable) consequent, alternative) :
         (consequent is Quotation) ? PCond2A0SQ.Make (predicate, (Quotation) consequent, alternative) :
         (alternative is LexicalVariable) ? PCond2A0SSL.Make (predicate, consequent, (LexicalVariable) alternative) :
         (alternative is Quotation) ? PCond2A0SSQ.Make (predicate, consequent, (Quotation) alternative) :
         new PCond2A0 (predicate, consequent, alternative);
 }
Example #54
0
 public static SCode Make(Argument rator, SCode rand0, SCode rand1)
 {
     return
         (rator is Argument0) ? Combination2A0.Make ((Argument0) rator, rand0, rand1) :
         (rand0 is Argument) ? Combination2AA.Make (rator, (Argument) rand0, rand1) :
         (rand0 is Quotation) ? Combination2AQ.Make (rator, (Quotation) rand0, rand1) :
         (rand0 is StaticVariable) ? Combination2AS.Make (rator, (StaticVariable) rand0, rand1) :
         (rand1 is Argument) ? Combination2AXA.Make (rator, rand0, (Argument) rand1):
         (rand1 is Quotation) ? new Combination2AXQ (rator, rand0, (Quotation) rand1) :
         (rand1 is StaticVariable) ? new Combination2AXS (rator, rand0, (StaticVariable) rand1) :
         new Combination2A (rator, rand0, rand1);
 }
Example #55
0
        protected PCond2 (PrimitiveCombination2 predicate, SCode consequent, SCode alternative)
            : base (predicate, consequent, alternative)
        {
            this.procedure = predicate.Rator;
            this.method = this.procedure.Method;
            this.rand0 = predicate.Operand0;
            this.rand1 = predicate.Operand1;
#if DEBUG
            rand0Type = rand0.GetType ();
            rand1Type = rand1.GetType ();
#endif
        }
 public static SCode Make(PrimitiveIsObjectEq predicate, SCode consequent, SCode alternative)
 {
     return
         (predicate is PrimitiveIsObjectEqL) ? PCondIsObjectEqL.Make ((PrimitiveIsObjectEqL) predicate, consequent, alternative) :
         (predicate is PrimitiveIsObjectEqQ) ? PCondIsObjectEqQ.Make ((PrimitiveIsObjectEqQ) predicate, consequent, alternative) :
         (predicate is PrimitiveIsObjectEqSQ) ? PCondIsObjectEqSQ.Make ((PrimitiveIsObjectEqSQ) predicate, consequent, alternative) :
         (consequent is LexicalVariable) ? Unimplemented () :
         (consequent is Quotation) ? Unimplemented () :
         (alternative is LexicalVariable) ? Unimplemented () :
         (alternative is Quotation) ? Unimplemented () :
         new PCondIsObjectEq (predicate, consequent, alternative);
 }
Example #57
0
 public static SCode Make(PrimitiveCombination2L predicate, SCode consequent, SCode alternative)
 {
     return
         (predicate is PrimitiveCombination2A) ? PCond2A.Make ((PrimitiveCombination2A) predicate, consequent, alternative) :
         (predicate is PrimitiveCombination2L1) ? PCond2L1.Make ((PrimitiveCombination2L1) predicate, consequent, alternative) :
         (predicate is PrimitiveCombination2LL) ? PCond2LL.Make ((PrimitiveCombination2LL) predicate, consequent, alternative) :
         (predicate is PrimitiveCombination2LQ) ? PCond2LQ.Make ((PrimitiveCombination2LQ) predicate, consequent, alternative) :
         (consequent is LexicalVariable) ? PCond2LSL.Make (predicate, (LexicalVariable) consequent, alternative) :
         (consequent is Quotation) ? PCond2LSQ.Make (predicate, (Quotation) consequent, alternative) :
         (alternative is LexicalVariable) ? PCond2LSSL.Make (predicate, consequent, (LexicalVariable) alternative) :
         (alternative is Quotation) ? PCond2LSSQ.Make (predicate, consequent, (Quotation) alternative) :
         new PCond2L (predicate, consequent, alternative);
 }
Example #58
0
 public static SCode Make(PrimitiveIsNull predicate, SCode consequent, SCode alternative)
 {
     return
         (predicate is PrimitiveIsNullA) ? PCondIsNullA.Make ((PrimitiveIsNullA) predicate, consequent, alternative) :
         (predicate is PrimitiveIsNullQ) ? PCondIsNullQ.Make ((PrimitiveIsNullQ) predicate, consequent, alternative) :
         (predicate is PrimitiveIsNullS) ? PCondIsNullS.Make ((PrimitiveIsNullS) predicate, consequent, alternative) :
         (consequent is Argument) ? PCondIsNullXA.Make (predicate, (Argument) consequent, alternative) :
         (consequent is Quotation) ? PCondIsNullXQ.Make (predicate, (Quotation) consequent, alternative) :
         (consequent is StaticVariable) ? PCondIsNullXS.Make (predicate, (StaticVariable) consequent, alternative) :
         (alternative is Argument) ? PCondIsNullXXA.Make (predicate, consequent, (Argument) alternative) :
         (alternative is Quotation) ? PCondIsNullXXQ.Make (predicate, consequent, (Quotation) alternative) :
         (alternative is StaticVariable) ? PCondIsNullXXS.Make (predicate, consequent, (StaticVariable) alternative) :
         new PCondIsNull (predicate, consequent, alternative);
 }
Example #59
0
        protected LambdaBase(Symbol name, Symbol [] formals, SCode body, ICollection<Symbol> freeVariables, StaticMapping staticMapping)
        {
            this.lambdaName = name;
            this.lambdaFormals = formals;
            this.lambdaBody = body;
            this.lambdaFreeVariables = freeVariables;
            this.staticMapping = staticMapping;
            #if DEBUG
            // Paranoia:  check for duplicate maps
            if (name != Dummy)
                for (int i = 0; i < formals.Length - 1; i++)
                    if (formals [i] != null)
                        for (int j = i + 1; j < formals.Length; j++)
                            if (formals [i] == formals [j])
                                Debugger.Break ();

            // //Check for eta-reducible primitive lambdas.  There seem to be
            // //too many of these.
            // Bug found and fixed.
            //if (body is PrimitiveCombination0 &&
            //    formals.Length == 0 )
            //    Debugger.Break ();

            //if (body is PrimitiveCombination1 &&
            //    formals.Length == 1 &&
            //    ((PrimitiveCombination1) body).Operand is Variable &&
            //    ((Variable) ((PrimitiveCombination1) body).Operand).Name == formals [0])
            //    Debugger.Break ();

            //if (body is PrimitiveCombination2 &&
            //    formals.Length == 2 &&
            //    ((PrimitiveCombination2) body).Operand0 is Variable &&
            //    ((PrimitiveCombination2) body).Operand1 is Variable &&
            //    ((Variable) ((PrimitiveCombination2) body).Operand0).Name == formals [0] &&
            //    ((Variable) ((PrimitiveCombination2) body).Operand1).Name == formals [1]) {
            //    Debugger.Break ();
            //}

            //if (body is PrimitiveCombination3 &&
            //    formals.Length == 3 &&
            //    ((PrimitiveCombination3) body).Operand0 is Variable &&
            //    ((PrimitiveCombination3) body).Operand1 is Variable &&
            //    ((PrimitiveCombination3) body).Operand2 is Variable &&
            //    ((Variable) ((PrimitiveCombination3) body).Operand0).Name == formals [0] &&
            //    ((Variable) ((PrimitiveCombination3) body).Operand1).Name == formals [1] &&
            //    ((Variable) ((PrimitiveCombination3) body).Operand2).Name == formals [2])
            //    Debugger.Break ();
            #endif
        }
Example #60
0
 public static SCode Make (PrimitiveCombination2 predicate, SCode consequent, SCode alternative)
 {
     return
         (predicate.Operand0 is Argument) ? PCondIsEqA.Make (predicate, consequent, alternative) :
         (predicate.Operand0 is PrimitiveCar) ? PCondIsEqCar.Make (predicate, consequent, alternative) :
         (predicate.Operand0 is Quotation) ? PCondIsEqQ.Make (predicate, consequent, alternative) :
         (predicate.Operand0 is StaticVariable) ? PCondIsEqS.Make (predicate, consequent, alternative) :
         (predicate.Operand1 is Argument) ? PCondIsEqXA.Make (predicate, consequent, alternative) :
         (predicate.Operand1 is Quotation) ? PCondIsEqXQ.Make (predicate, consequent, alternative) :
         (predicate.Operand1 is StaticVariable) ? PCondIsEqXS.Make (predicate, consequent, alternative) :
         (consequent is Argument) ? PCondIsEqXXA.Make (predicate, (Argument) consequent, alternative) :
         (consequent is Quotation) ? PCondIsEqXXQ.Make (predicate, (Quotation) consequent, alternative) :
         (consequent is StaticVariable) ? Unimplemented () :
         (alternative is Argument) ? PCondIsEqXXXA.Make (predicate, consequent, (Argument) alternative) :
         (alternative is Quotation) ? PCondIsEqXXXQ.Make (predicate, consequent, (Quotation) alternative) :
         (alternative is StaticVariable) ? Unimplemented () :
         new PCondIsEq (predicate, consequent, alternative);
 }