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))); }
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 (); }
//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)); }
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)); }
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)); }
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); }
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)); }
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)); } }
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 }
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)); }
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)); }
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()); }
protected PCond2L(PrimitiveCombination2L predicate, SCode consequent, SCode alternative) : base(predicate, consequent, alternative) { this.rand0Name = predicate.rand0Name; this.rand0Depth = predicate.rand0Depth; this.rand0Offset = predicate.rand0Offset; }
protected PCondIsCharEqL(PrimitiveIsCharEqL predicate, SCode consequent, SCode alternative) : base(predicate, consequent, alternative) { this.rand0Name = predicate.rand0Name; this.rand0Depth = predicate.rand0Depth; this.rand0Offset = predicate.rand0Offset; }
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)); }
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); }
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)); }
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)); }
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(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); }
public static SCode Make(PrimitiveCombination2 predicate, SCode alternative) { #if DEBUG Debugger.Break(); #endif return (new POrIsEqA0A0(predicate, alternative)); }
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)); }
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); }
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); }
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 }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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 }
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); }