(PROCLAIM '(OPTIMIZE SPEED)) (IMPORT-MODULE "includer") (IN-PACKAGE "BOOTTRAN") (PROVIDE "ast") (DEFPARAMETER |$bfClamming| NIL) (DEFPARAMETER |$constantIdentifiers| NIL) (DEFPARAMETER |$activeNamespace| NIL) (DEFUN |%Command| #0=(|bfVar#1|) (CONS '|%Command| (LIST . #0#))) (DEFUN |%Lisp| #0=(|bfVar#2|) (CONS '|%Lisp| (LIST . #0#))) (DEFUN |%Module| #0=(|bfVar#3| |bfVar#4| |bfVar#5|) (CONS '|%Module| (LIST . #0#))) (DEFUN |%Namespace| #0=(|bfVar#6|) (CONS '|%Namespace| (LIST . #0#))) (DEFUN |%Import| #0=(|bfVar#7|) (CONS '|%Import| (LIST . #0#))) (DEFUN |%ImportSignature| #0=(|bfVar#8| |bfVar#9|) (CONS '|%ImportSignature| (LIST . #0#))) (DEFUN |%TypeAlias| #0=(|bfVar#10| |bfVar#11|) (CONS '|%TypeAlias| (LIST . #0#))) (DEFUN |%Signature| #0=(|bfVar#12| |bfVar#13|) (CONS '|%Signature| (LIST . #0#))) (DEFUN |%Mapping| #0=(|bfVar#14| |bfVar#15|) (CONS '|%Mapping| (LIST . #0#))) (DEFUN |%Forall| #0=(|bfVar#16| |bfVar#17|) (CONS '|%Forall| (LIST . #0#))) (DEFUN |%SuffixDot| #0=(|bfVar#18|) (CONS '|%SuffixDot| (LIST . #0#))) (DEFUN |%Quote| #0=(|bfVar#19|) (CONS '|%Quote| (LIST . #0#))) (DEFUN |%EqualPattern| #0=(|bfVar#20|) (CONS '|%EqualPattern| (LIST . #0#))) (DEFUN |%Colon| #0=(|bfVar#21|) (CONS '|%Colon| (LIST . #0#))) (DEFUN |%QualifiedName| #0=(|bfVar#22| |bfVar#23|) (CONS '|%QualifiedName| (LIST . #0#))) (DEFUN |%DefaultValue| #0=(|bfVar#24| |bfVar#25|) (CONS '|%DefaultValue| (LIST . #0#))) (DEFUN |%Bracket| #0=(|bfVar#26|) (CONS '|%Bracket| (LIST . #0#))) (DEFUN |%UnboundedSegment| #0=(|bfVar#27|) (CONS '|%UnboundedSegment| (LIST . #0#))) (DEFUN |%BoundedSgement| #0=(|bfVar#28| |bfVar#29|) (CONS '|%BoundedSgement| (LIST . #0#))) (DEFUN |%Tuple| #0=(|bfVar#30|) (CONS '|%Tuple| (LIST . #0#))) (DEFUN |%ColonAppend| #0=(|bfVar#31| |bfVar#32|) (CONS '|%ColonAppend| (LIST . #0#))) (DEFUN |%Pretend| #0=(|bfVar#33| |bfVar#34|) (CONS '|%Pretend| (LIST . #0#))) (DEFUN |%Is| #0=(|bfVar#35| |bfVar#36|) (CONS '|%Is| (LIST . #0#))) (DEFUN |%Isnt| #0=(|bfVar#37| |bfVar#38|) (CONS '|%Isnt| (LIST . #0#))) (DEFUN |%Reduce| #0=(|bfVar#39| |bfVar#40|) (CONS '|%Reduce| (LIST . #0#))) (DEFUN |%PrefixExpr| #0=(|bfVar#41| |bfVar#42|) (CONS '|%PrefixExpr| (LIST . #0#))) (DEFUN |%Call| #0=(|bfVar#43| |bfVar#44|) (CONS '|%Call| (LIST . #0#))) (DEFUN |%InfixExpr| #0=(|bfVar#45| |bfVar#46| |bfVar#47|) (CONS '|%InfixExpr| (LIST . #0#))) (DEFUN |%ConstantDefinition| #0=(|bfVar#48| |bfVar#49|) (CONS '|%ConstantDefinition| (LIST . #0#))) (DEFUN |%Definition| #0=(|bfVar#50| |bfVar#51| |bfVar#52|) (CONS '|%Definition| (LIST . #0#))) (DEFUN |%Macro| #0=(|bfVar#53| |bfVar#54| |bfVar#55|) (CONS '|%Macro| (LIST . #0#))) (DEFUN |%Lambda| #0=(|bfVar#56| |bfVar#57|) (CONS '|%Lambda| (LIST . #0#))) (DEFUN |%SuchThat| #0=(|bfVar#58|) (CONS '|%SuchThat| (LIST . #0#))) (DEFUN |%Assignment| #0=(|bfVar#59| |bfVar#60|) (CONS '|%Assignment| (LIST . #0#))) (DEFUN |%While| #0=(|bfVar#61|) (CONS '|%While| (LIST . #0#))) (DEFUN |%Until| #0=(|bfVar#62|) (CONS '|%Until| (LIST . #0#))) (DEFUN |%For| #0=(|bfVar#63| |bfVar#64| |bfVar#65|) (CONS '|%For| (LIST . #0#))) (DEFUN |%Implies| #0=(|bfVar#66| |bfVar#67|) (CONS '|%Implies| (LIST . #0#))) (DEFUN |%Iterators| #0=(|bfVar#68|) (CONS '|%Iterators| (LIST . #0#))) (DEFUN |%Cross| #0=(|bfVar#69|) (CONS '|%Cross| (LIST . #0#))) (DEFUN |%Repeat| #0=(|bfVar#70| |bfVar#71|) (CONS '|%Repeat| (LIST . #0#))) (DEFUN |%Pile| #0=(|bfVar#72|) (CONS '|%Pile| (LIST . #0#))) (DEFUN |%Append| #0=(|bfVar#73|) (CONS '|%Append| (LIST . #0#))) (DEFUN |%Case| #0=(|bfVar#74| |bfVar#75|) (CONS '|%Case| (LIST . #0#))) (DEFUN |%Return| #0=(|bfVar#76|) (CONS '|%Return| (LIST . #0#))) (DEFUN |%Leave| #0=(|bfVar#77|) (CONS '|%Leave| (LIST . #0#))) (DEFUN |%Throw| #0=(|bfVar#78|) (CONS '|%Throw| (LIST . #0#))) (DEFUN |%Catch| #0=(|bfVar#79| |bfVar#80|) (CONS '|%Catch| (LIST . #0#))) (DEFUN |%Finally| #0=(|bfVar#81|) (CONS '|%Finally| (LIST . #0#))) (DEFUN |%Try| #0=(|bfVar#82| |bfVar#83|) (CONS '|%Try| (LIST . #0#))) (DEFUN |%Where| #0=(|bfVar#84| |bfVar#85|) (CONS '|%Where| (LIST . #0#))) (DEFUN |%Structure| #0=(|bfVar#86| |bfVar#87|) (CONS '|%Structure| (LIST . #0#))) (DEFPARAMETER |$inDefIS| NIL) (DEFUN |quote| (|x|) (LIST 'QUOTE |x|)) (DECLAIM (FTYPE (FUNCTION NIL |%Symbol|) |bfGenSymbol|)) (DEFUN |bfGenSymbol| () (DECLARE (SPECIAL |$GenVarCounter|)) (PROGN (SETQ |$GenVarCounter| (+ |$GenVarCounter| 1)) (INTERN (CONCAT "bfVar#" (WRITE-TO-STRING |$GenVarCounter|))))) (DECLAIM (FTYPE (FUNCTION (|%Thing|) |%Form|) |bfColon|)) (DEFUN |bfColon| (|x|) (LIST 'COLON |x|)) (DECLAIM (FTYPE (FUNCTION (|%Symbol| |%Symbol|) |%Symbol|) |bfColonColon|)) (DEFUN |bfColonColon| (|package| |name|) (COND ((AND (|%hasFeature| :CLISP) (|symbolMember?| |package| '(EXT FFI))) (FIND-SYMBOL (SYMBOL-NAME |name|) |package|)) (T (INTERN (SYMBOL-NAME |name|) |package|)))) (DECLAIM (FTYPE (FUNCTION (|%Thing|) |%Thing|) |bfSymbol|)) (DEFUN |bfSymbol| (|x|) (COND ((STRINGP |x|) |x|) (T (LIST 'QUOTE |x|)))) (DECLAIM (FTYPE (FUNCTION NIL |%Symbol|) |bfDot|)) (DEFUN |bfDot| () 'DOT) (DECLAIM (FTYPE (FUNCTION (|%Form|) |%Form|) |bfSuffixDot|)) (DEFUN |bfSuffixDot| (|x|) (LIST |x| 'DOT)) (DECLAIM (FTYPE (FUNCTION (|%Form|) |%Form|) |bfEqual|)) (DEFUN |bfEqual| (|name|) (LIST 'EQUAL |name|)) (DECLAIM (FTYPE (FUNCTION (|%Thing|) |%Thing|) |bfBracket|)) (DEFUN |bfBracket| (|part|) |part|) (DECLAIM (FTYPE (FUNCTION ((|%List| |%Form|)) (|%List| |%Form|)) |bfPile|)) (DEFUN |bfPile| (|part|) |part|) (DECLAIM (FTYPE (FUNCTION ((|%List| (|%List| |%Form|))) (|%List| |%Form|)) |bfAppend|)) (DEFUN |bfAppend| (|ls|) (PROG (|p| |r| |l|) (RETURN (COND ((NOT (AND (CONSP |ls|) (PROGN (SETQ |l| (CAR |ls|)) (SETQ |ls| (CDR |ls|)) T))) NIL) (T (SETQ |r| (|copyList| |l|)) (SETQ |p| |r|) (LOOP (COND ((NOT (AND (CONSP |ls|) (PROGN (SETQ |l| (CAR |ls|)) (SETQ |ls| (CDR |ls|)) T))) (RETURN |r|)) ((NULL |l|) NIL) (T (RPLACD (|lastNode| |p|) (|copyList| |l|)) (SETQ |p| (CDR |p|)))))))))) (DECLAIM (FTYPE (FUNCTION ((|%List| |%Form|) |%Form|) |%Form|) |bfColonAppend|)) (DEFUN |bfColonAppend| (|x| |y|) (PROG (|a|) (RETURN (COND ((NULL |x|) (COND ((AND (CONSP |y|) (EQ (CAR |y|) 'BVQUOTE)) (SETQ |a| (CDR |y|)) (LIST '&REST (CONS 'QUOTE |a|))) (T (LIST '&REST |y|)))) (T (CONS (CAR |x|) (|bfColonAppend| (CDR |x|) |y|))))))) (DECLAIM (FTYPE (FUNCTION (|%Thing|) |%Boolean|) |bfBeginsDollar|)) (DEFUN |bfBeginsDollar| (|x|) (CHAR= (SCHAR (SYMBOL-NAME |x|) 0) (|char| '$))) (DEFUN |compFluid| (|id|) (LIST 'FLUID |id|)) (DEFUN |compFluidize| (|x|) (COND ((NULL |x|) NIL) ((AND (SYMBOLP |x|) (|bfBeginsDollar| |x|)) (|compFluid| |x|)) ((ATOM |x|) |x|) ((AND (CONSP |x|) (EQ (CAR |x|) 'QUOTE)) |x|) (T (CONS (|compFluidize| (CAR |x|)) (|compFluidize| (CDR |x|)))))) (DEFUN |bfPlace| (|x|) (CONS '|%Place| |x|)) (DEFUN |bfTuple| (|x|) (CONS 'TUPLE |x|)) (DEFUN |bfTupleP| (|x|) (AND (CONSP |x|) (EQ (CAR |x|) 'TUPLE))) (DEFUN |bfUntuple| (|bf|) (COND ((|bfTupleP| |bf|) (CDR |bf|)) (T |bf|))) (DEFUN |bfTupleIf| (|x|) (COND ((|bfTupleP| |x|) |x|) (T (|bfTuple| |x|)))) (DEFUN |bfTupleConstruct| (|b|) (PROG (|ISTMP#1| |a|) (RETURN (PROGN (SETQ |a| (COND ((|bfTupleP| |b|) (CDR |b|)) (T (LIST |b|)))) (COND ((LET ((|bfVar#89| NIL) (|bfVar#88| |a|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#88|) (PROGN (SETQ |x| (CAR |bfVar#88|)) NIL)) (RETURN |bfVar#89|)) (T (SETQ |bfVar#89| (AND (CONSP |x|) (EQ (CAR |x|) 'COLON) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)))))) (COND (|bfVar#89| (RETURN |bfVar#89|))))) (SETQ |bfVar#88| (CDR |bfVar#88|)))) (|bfMakeCons| |a|)) (T (CONS 'LIST |a|))))))) (DEFUN |bfConstruct| (|b|) (PROG (|a|) (RETURN (PROGN (SETQ |a| (COND ((|bfTupleP| |b|) (CDR |b|)) (T (LIST |b|)))) (|bfMakeCons| |a|))))) (DEFUN |bfMakeCons| (|l|) (PROG (|l1| |a| |ISTMP#2| |ISTMP#1|) (RETURN (COND ((NULL |l|) NIL) ((AND (CONSP |l|) (PROGN (SETQ |ISTMP#1| (CAR |l|)) (AND (CONSP |ISTMP#1|) (EQ (CAR |ISTMP#1|) 'COLON) (PROGN (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |a| (CAR |ISTMP#2|)) T)))))) (SETQ |l1| (CDR |l|)) (COND (|l1| (LIST '|append| |a| (|bfMakeCons| |l1|))) (T |a|))) (T (LIST 'CONS (CAR |l|) (|bfMakeCons| (CDR |l|)))))))) (DEFUN |bfFor| (|bflhs| U |step|) (COND ((AND (CONSP U) (EQ (CAR U) '|tails|)) (|bfForTree| 'ON |bflhs| (CADR U))) ((AND (CONSP U) (EQ (CAR U) 'SEGMENT)) (|bfSTEP| |bflhs| (CADR U) |step| (CADDR U))) (T (|bfForTree| 'IN |bflhs| U)))) (DEFUN |bfForTree| (OP |lhs| |whole|) (PROG (G) (RETURN (PROGN (SETQ |whole| (COND ((|bfTupleP| |whole|) (|bfMakeCons| (CDR |whole|))) (T |whole|))) (COND ((ATOM |lhs|) (|bfINON| (LIST OP |lhs| |whole|))) (T (SETQ |lhs| (COND ((|bfTupleP| |lhs|) (CADR |lhs|)) (T |lhs|))) (COND ((AND (CONSP |lhs|) (EQ (CAR |lhs|) 'L%T)) (SETQ G (CADR |lhs|)) (|append| (|bfINON| (LIST OP G |whole|)) (|bfSuchthat| (|bfIS| G (CADDR |lhs|))))) (T (SETQ G (|bfGenSymbol|)) (|append| (|bfINON| (LIST OP G |whole|)) (|bfSuchthat| (|bfIS| G |lhs|))))))))))) (DEFUN |bfSTEP| (|id| |fst| |step| |lst|) (PROG (|suc| |ex| |pred| |final| |g2| |inc| |g1| |initval| |initvar|) (RETURN (PROGN (SETQ |initvar| (LIST |id|)) (SETQ |initval| (LIST |fst|)) (SETQ |inc| (COND ((ATOM |step|) |step|) (T (SETQ |g1| (|bfGenSymbol|)) (SETQ |initvar| (CONS |g1| |initvar|)) (SETQ |initval| (CONS |step| |initval|)) |g1|))) (SETQ |final| (COND ((ATOM |lst|) |lst|) (T (SETQ |g2| (|bfGenSymbol|)) (SETQ |initvar| (CONS |g2| |initvar|)) (SETQ |initval| (CONS |lst| |initval|)) |g2|))) (SETQ |ex| (COND ((NULL |lst|) NIL) ((INTEGERP |inc|) (SETQ |pred| (COND ((MINUSP |inc|) '<) (T '>))) (LIST (LIST |pred| |id| |final|))) (T (LIST (LIST 'COND (LIST (LIST 'MINUSP |inc|) (LIST '< |id| |final|)) (LIST 'T (LIST '> |id| |final|))))))) (SETQ |suc| (LIST (LIST 'SETQ |id| (LIST '+ |id| |inc|)))) (LIST (LIST |initvar| |initval| |suc| NIL |ex| NIL)))))) (DEFUN |bfINON| (|x|) (PROG (|whole| |id| |op|) (RETURN (PROGN (SETQ |op| (CAR |x|)) (SETQ |id| (CADR . #0=(|x|))) (SETQ |whole| (CADDR . #0#)) (COND ((EQ |op| 'ON) (|bfON| |id| |whole|)) (T (|bfIN| |id| |whole|))))))) (DEFUN |bfIN| (|x| E) (PROG (|exitCond| |inits| |vars| |g|) (RETURN (PROGN (SETQ |g| (|bfGenSymbol|)) (SETQ |vars| (LIST |g|)) (SETQ |inits| (LIST E)) (SETQ |exitCond| (LIST 'ATOM |g|)) (COND ((NOT (EQ |x| 'DOT)) (SETQ |vars| (|append| |vars| (CONS |x| NIL))) (SETQ |inits| (|append| |inits| (CONS NIL NIL))) (SETQ |exitCond| (LIST 'OR |exitCond| (LIST 'PROGN (LIST 'SETQ |x| (LIST 'CAR |g|)) 'NIL))))) (LIST (LIST |vars| |inits| (LIST (LIST 'SETQ |g| (LIST 'CDR |g|))) NIL (LIST |exitCond|) NIL)))))) (DEFUN |bfON| (|x| E) (PROG (|var| |init|) (RETURN (PROGN (COND ((EQ |x| 'DOT) (SETQ |x| (|bfGenSymbol|)))) (SETQ |var| (SETQ |init| NIL)) (COND ((OR (NOT (SYMBOLP E)) (NOT (EQ |x| E))) (SETQ |var| (LIST |x|)) (SETQ |init| (LIST E)))) (LIST (LIST |var| |init| (LIST (LIST 'SETQ |x| (LIST 'CDR |x|))) NIL (LIST (LIST 'ATOM |x|)) NIL)))))) (DEFUN |bfSuchthat| (|p|) (LIST (LIST NIL NIL NIL (LIST |p|) NIL NIL))) (DEFUN |bfWhile| (|p|) (LIST (LIST NIL NIL NIL NIL (LIST (|bfNOT| |p|)) NIL))) (DEFUN |bfUntil| (|p|) (PROG (|g|) (RETURN (PROGN (SETQ |g| (|bfGenSymbol|)) (LIST (LIST (LIST |g|) (LIST NIL) (LIST (LIST 'SETQ |g| |p|)) NIL (LIST |g|) NIL)))))) (DEFUN |bfIterators| (|x|) (CONS 'ITERATORS |x|)) (DEFUN |bfCross| (|x|) (CONS 'CROSS |x|)) (DEFUN |bfLp| (|iters| |body|) (COND ((AND (CONSP |iters|) (EQ (CAR |iters|) 'ITERATORS)) (|bfLp1| (CDR |iters|) |body|)) (T (|bfLpCross| (CDR |iters|) |body|)))) (DEFUN |bfLpCross| (|iters| |body|) (COND ((NULL (CDR |iters|)) (|bfLp| (CAR |iters|) |body|)) (T (|bfLp| (CAR |iters|) (|bfLpCross| (CDR |iters|) |body|))))) (DEFUN |bfSep| (|iters|) (PROG (|r| |f|) (RETURN (COND ((NULL |iters|) (LIST NIL NIL NIL NIL NIL NIL)) (T (SETQ |f| (CAR |iters|)) (SETQ |r| (|bfSep| (CDR |iters|))) (LET ((|bfVar#92| NIL) (|bfVar#93| NIL) (|bfVar#90| |f|) (|i| NIL) (|bfVar#91| |r|) (|j| NIL)) (LOOP (COND ((OR (ATOM |bfVar#90|) (PROGN (SETQ |i| (CAR |bfVar#90|)) NIL) (ATOM |bfVar#91|) (PROGN (SETQ |j| (CAR |bfVar#91|)) NIL)) (RETURN |bfVar#92|)) ((NULL |bfVar#92|) (SETQ |bfVar#92| #0=(CONS (|append| |i| |j|) NIL)) (SETQ |bfVar#93| |bfVar#92|)) (T (RPLACD |bfVar#93| #0#) (SETQ |bfVar#93| (CDR |bfVar#93|)))) (SETQ |bfVar#90| (CDR |bfVar#90|)) (SETQ |bfVar#91| (CDR |bfVar#91|))))))))) (DEFUN |bfReduce| (|op| |y|) (PROG (|it| |ny| |g2| |body| |g1| |g| |init| |a|) (RETURN (PROGN (SETQ |a| (COND ((AND (CONSP |op|) (EQ (CAR |op|) 'QUOTE)) (CADR |op|)) (T |op|))) (SETQ |op| (|bfReName| |a|)) (SETQ |init| (OR (GET |a| 'SHOETHETA) (GET |op| 'SHOETHETA))) (SETQ |g| (|bfGenSymbol|)) (SETQ |g1| (|bfGenSymbol|)) (SETQ |body| (LIST 'SETQ |g| (LIST |op| |g| |g1|))) (COND ((NULL |init|) (SETQ |g2| (|bfGenSymbol|)) (SETQ |init| (LIST 'CAR |g2|)) (SETQ |ny| (LIST 'CDR |g2|)) (SETQ |it| (CONS 'ITERATORS (LIST (LIST (LIST (LIST |g|) (LIST |init|) NIL NIL NIL (LIST |g|))) (|bfIN| |g1| |ny|)))) (|bfMKPROGN| (LIST (LIST 'L%T |g2| |y|) (|bfLp| |it| |body|)))) (T (SETQ |init| (CAR |init|)) (SETQ |it| (CONS 'ITERATORS (LIST (LIST (LIST (LIST |g|) (LIST |init|) NIL NIL NIL (LIST |g|))) (|bfIN| |g1| |y|)))) (|bfLp| |it| |body|))))))) (DEFUN |bfReduceCollect| (|op| |y|) (PROG (|seq| |init| |a| |itl| |body|) (RETURN (COND ((AND (CONSP |y|) (EQ (CAR |y|) 'COLLECT)) (SETQ |body| (CADR |y|)) (SETQ |itl| (CADDR |y|)) (SETQ |a| (COND ((AND (CONSP |op|) (EQ (CAR |op|) 'QUOTE)) (CADR |op|)) (T |op|))) (COND ((EQ |a| '|append!|) (|bfDoCollect| |body| |itl| '|lastNode| '|skipNil|)) ((EQ |a| '|append|) (|bfDoCollect| (LIST '|copyList| |body|) |itl| '|lastNode| '|skipNil|)) (T (SETQ |op| (|bfReName| |a|)) (SETQ |init| (OR (GET |a| 'SHOETHETA) (GET |op| 'SHOETHETA))) (|bfOpReduce| |op| |init| |body| |itl|)))) (T (SETQ |seq| (COND ((NULL |y|) (|bfTuple| NIL)) (T (CADR |y|)))) (|bfReduce| |op| (|bfTupleConstruct| |seq|))))))) (DEFUN |bfDCollect| (|y| |itl|) (LIST 'COLLECT |y| |itl|)) (DEFUN |bfDTuple| (|x|) (LIST 'DTUPLE |x|)) (DEFUN |bfCollect| (|y| |itl|) (PROG (|a| |ISTMP#1|) (RETURN (COND ((AND (CONSP |y|) (EQ (CAR |y|) 'COLON) (PROGN (SETQ |ISTMP#1| (CDR |y|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |a| (CAR |ISTMP#1|)) T)))) (COND ((OR (AND (CONSP |a|) (EQ (CAR |a|) 'CONS)) (AND (CONSP |a|) (EQ (CAR |a|) 'LIST))) (|bfDoCollect| |a| |itl| '|lastNode| '|skipNil|)) (T (|bfDoCollect| (LIST '|copyList| |a|) |itl| '|lastNode| '|skipNil|)))) ((AND (CONSP |y|) (EQ (CAR |y|) 'TUPLE)) (|bfDoCollect| (|bfConstruct| |y|) |itl| '|lastNode| '|skipNil|)) (T (|bfDoCollect| (LIST 'CONS |y| 'NIL) |itl| 'CDR NIL)))))) (DEFUN |bfMakeCollectInsn| (|expr| |prev| |head| |adv|) (PROG (|otherTime| |firstTime|) (RETURN (PROGN (SETQ |firstTime| (|bfMKPROGN| (LIST (LIST 'SETQ |head| |expr|) (LIST 'SETQ |prev| (COND ((EQ |adv| 'CDR) |head|) (T (LIST |adv| |head|))))))) (SETQ |otherTime| (|bfMKPROGN| (LIST (LIST 'RPLACD |prev| |expr|) (LIST 'SETQ |prev| (LIST |adv| |prev|))))) (|bfIf| (LIST 'NULL |head|) |firstTime| |otherTime|))))) (DEFUN |bfDoCollect| (|expr| |itl| |adv| |k|) (PROG (|extrait| |body| |x| |prev| |head|) (RETURN (PROGN (SETQ |head| (|bfGenSymbol|)) (SETQ |prev| (|bfGenSymbol|)) (SETQ |body| (COND ((EQ |k| '|skipNil|) (SETQ |x| (|bfGenSymbol|)) (LIST 'LET (LIST (LIST |x| |expr|)) (|bfIf| (LIST 'NULL |x|) 'NIL (|bfMakeCollectInsn| |x| |prev| |head| |adv|)))) (T (|bfMakeCollectInsn| |expr| |prev| |head| |adv|)))) (SETQ |extrait| (LIST (LIST (LIST |head| |prev|) (LIST 'NIL 'NIL) NIL NIL NIL (LIST |head|)))) (|bfLp2| |extrait| |itl| |body|))))) (DEFUN |bfLp1| (|iters| |body|) (PROG (|loop| |nbody| |value| |exits| |filters| |sucs| |inits| |vars| |LETTMP#1|) (RETURN (PROGN (SETQ |LETTMP#1| (|bfSep| (|bfAppend| |iters|))) (SETQ |vars| (CAR |LETTMP#1|)) (SETQ |inits| (CADR . #0=(|LETTMP#1|))) (SETQ |sucs| (CADDR . #0#)) (SETQ |filters| (CADDDR . #0#)) (SETQ |exits| (CAR #1=(CDDDDR . #0#))) (SETQ |value| (CADR #1#)) (SETQ |nbody| (COND ((NULL |filters|) |body|) (T (|bfAND| (|append| |filters| (CONS |body| NIL)))))) (SETQ |value| (COND ((NULL |value|) 'NIL) (T (CAR |value|)))) (SETQ |exits| (COND ((NULL |exits|) |nbody|) (T (|bfIf| (|bfOR| |exits|) (LIST 'RETURN |value|) |nbody|)))) (SETQ |loop| (CONS 'LOOP (CONS |exits| |sucs|))) (COND (|vars| (SETQ |loop| (LIST 'LET (LET ((|bfVar#96| NIL) (|bfVar#97| NIL) (|bfVar#94| |vars|) (|v| NIL) (|bfVar#95| |inits|) (|i| NIL)) (LOOP (COND ((OR (ATOM |bfVar#94|) (PROGN (SETQ |v| (CAR |bfVar#94|)) NIL) (ATOM |bfVar#95|) (PROGN (SETQ |i| (CAR |bfVar#95|)) NIL)) (RETURN |bfVar#96|)) ((NULL |bfVar#96|) (SETQ |bfVar#96| #2=(CONS (LIST |v| |i|) NIL)) (SETQ |bfVar#97| |bfVar#96|)) (T (RPLACD |bfVar#97| #2#) (SETQ |bfVar#97| (CDR |bfVar#97|)))) (SETQ |bfVar#94| (CDR |bfVar#94|)) (SETQ |bfVar#95| (CDR |bfVar#95|)))) |loop|)))) |loop|)))) (DEFUN |bfLp2| (|extrait| |itl| |body|) (PROG (|iters|) (RETURN (COND ((AND (CONSP |itl|) (EQ (CAR |itl|) 'ITERATORS)) (|bfLp1| (CONS |extrait| (CDR |itl|)) |body|)) (T (SETQ |iters| (CDR |itl|)) (|bfLpCross| (CONS (CONS 'ITERATORS (CONS |extrait| (CDAR |iters|))) (CDR |iters|)) |body|)))))) (DEFUN |bfOpReduce| (|op| |init| |y| |itl|) (PROG (|extrait| |g1| |body| |g|) (RETURN (PROGN (SETQ |g| (|bfGenSymbol|)) (SETQ |body| (COND ((EQ |op| 'AND) (|bfMKPROGN| (LIST (LIST 'SETQ |g| |y|) (LIST 'COND (LIST (LIST 'NOT |g|) (LIST 'RETURN 'NIL)))))) ((EQ |op| 'OR) (|bfMKPROGN| (LIST (LIST 'SETQ |g| |y|) (LIST 'COND (LIST |g| (LIST 'RETURN |g|)))))) (T (LIST 'SETQ |g| (LIST |op| |g| |y|))))) (COND ((NULL |init|) (SETQ |g1| (|bfGenSymbol|)) (SETQ |init| (LIST 'CAR |g1|)) (SETQ |y| (LIST 'CDR |g1|)) (SETQ |extrait| (LIST (LIST (LIST |g|) (LIST |init|) NIL NIL NIL (LIST |g|)))) (|bfMKPROGN| (LIST (LIST 'L%T |g1| |y|) (|bfLp2| |extrait| |itl| |body|)))) (T (SETQ |init| (CAR |init|)) (SETQ |extrait| (LIST (LIST (LIST |g|) (LIST |init|) NIL NIL NIL (LIST |g|)))) (|bfLp2| |extrait| |itl| |body|))))))) (DEFUN |bfLoop1| (|body|) (|bfLp| (|bfIterators| NIL) |body|)) (DEFUN |bfSegment1| (|lo|) (LIST 'SEGMENT |lo| NIL)) (DEFUN |bfSegment2| (|lo| |hi|) (LIST 'SEGMENT |lo| |hi|)) (DEFUN |bfForInBy| (|variable| |collection| |step|) (|bfFor| |variable| |collection| |step|)) (DEFUN |bfForin| (|lhs| U) (|bfFor| |lhs| U 1)) (DEFUN |bfLocal| (|a| |b|) (COND ((EQ |b| 'FLUID) (|compFluid| |a|)) ((EQ |b| '|fluid|) (|compFluid| |a|)) ((EQ |b| '|local|) (|compFluid| |a|)) (T |a|))) (DEFUN |bfTake| (|n| |x|) (COND ((NULL |x|) |x|) ((EQL |n| 0) NIL) (T (CONS (CAR |x|) (|bfTake| (- |n| 1) (CDR |x|)))))) (DEFUN |bfDrop| (|n| |x|) (COND ((OR (NULL |x|) (EQL |n| 0)) |x|) (T (|bfDrop| (- |n| 1) (CDR |x|))))) (DEFUN |bfReturnNoName| (|a|) (LIST 'RETURN |a|)) (DEFUN |bfLeave| (|x|) (LIST '|%Leave| |x|)) (DEFUN |bfSUBLIS| (|p| |e|) (COND ((ATOM |e|) (|bfSUBLIS1| |p| |e|)) ((AND (CONSP |e|) (EQ (CAR |e|) 'QUOTE)) |e|) (T (CONS (|bfSUBLIS| |p| (CAR |e|)) (|bfSUBLIS| |p| (CDR |e|)))))) (DEFUN |bfSUBLIS1| (|p| |e|) (PROG (|f|) (RETURN (COND ((NULL |p|) |e|) (T (SETQ |f| (CAR |p|)) (COND ((EQ (CAR |f|) |e|) (|bfSUBLIS| |p| (CDR |f|))) (T (|bfSUBLIS1| (CDR |p|) |e|)))))))) (DEFUN |defSheepAndGoats| (|x|) (PROG (|defstack| |op1| |opassoc| |argl|) (DECLARE (SPECIAL |$op|)) (RETURN (CASE (CAR |x|) (|%Definition| (LET ((|op| (CADR |x|)) (|args| (CADDR |x|)) (|body| (CADDDR |x|))) (PROGN (SETQ |argl| (COND ((|bfTupleP| |args|) (CDR |args|)) (T (LIST |args|)))) (COND ((NULL |argl|) (SETQ |opassoc| (LIST (CONS |op| |body|))) (LIST |opassoc| NIL NIL)) (T (SETQ |op1| (INTERN (CONCAT (SYMBOL-NAME |$op|) "," (SYMBOL-NAME |op|)))) (SETQ |opassoc| (LIST (CONS |op| |op1|))) (SETQ |defstack| (LIST (LIST |op1| |args| |body|))) (LIST |opassoc| |defstack| NIL)))))) (|%Pile| (LET ((|defs| (CADR |x|))) (|defSheepAndGoatsList| |defs|))) (T (LIST NIL NIL (LIST |x|))))))) (DEFUN |defSheepAndGoatsList| (|x|) (PROG (|nondefs1| |defs1| |opassoc1| |nondefs| |defs| |opassoc| |LETTMP#1|) (RETURN (COND ((NULL |x|) (LIST NIL NIL NIL)) (T (SETQ |LETTMP#1| (|defSheepAndGoats| (CAR |x|))) (SETQ |opassoc| (CAR |LETTMP#1|)) (SETQ |defs| (CADR . #0=(|LETTMP#1|))) (SETQ |nondefs| (CADDR . #0#)) (SETQ |LETTMP#1| (|defSheepAndGoatsList| (CDR |x|))) (SETQ |opassoc1| (CAR |LETTMP#1|)) (SETQ |defs1| (CADR . #1=(|LETTMP#1|))) (SETQ |nondefs1| (CADDR . #1#)) (LIST (|append| |opassoc| |opassoc1|) (|append| |defs| |defs1|) (|append| |nondefs| |nondefs1|))))))) (DEFUN |bfLetForm| (|lhs| |rhs|) (LIST 'L%T |lhs| |rhs|)) (DEFUN |bfLET1| (|lhs| |rhs|) (PROG (|let1| |g| |l2| |l1| |name| |rhs1| |ISTMP#1|) (DECLARE (SPECIAL |$letGenVarCounter|)) (RETURN (COND ((SYMBOLP |lhs|) (|bfLetForm| |lhs| |rhs|)) ((AND (CONSP |lhs|) (EQ (CAR |lhs|) 'FLUID) (PROGN (SETQ |ISTMP#1| (CDR |lhs|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|))))) (|bfLetForm| |lhs| |rhs|)) ((AND (SYMBOLP |rhs|) (NOT (|bfCONTAINED| |rhs| |lhs|))) (SETQ |rhs1| (|bfLET2| |lhs| |rhs|)) (COND ((AND (CONSP |rhs1|) (EQ (CAR |rhs1|) 'L%T)) (|bfMKPROGN| (LIST |rhs1| |rhs|))) ((AND (CONSP |rhs1|) (EQ (CAR |rhs1|) 'PROGN)) (|append| |rhs1| (LIST |rhs|))) (T (COND ((SYMBOLP (CAR |rhs1|)) (SETQ |rhs1| (CONS |rhs1| NIL)))) (|bfMKPROGN| (|append| |rhs1| (CONS |rhs| NIL)))))) ((AND (CONSP |rhs|) (EQ (CAR |rhs|) 'L%T) (SYMBOLP (SETQ |name| (CADR |rhs|)))) (SETQ |l1| (|bfLET1| |name| (CADDR |rhs|))) (SETQ |l2| (|bfLET1| |lhs| |name|)) (COND ((AND (CONSP |l2|) (EQ (CAR |l2|) 'PROGN)) (|bfMKPROGN| (CONS |l1| (CDR |l2|)))) (T (COND ((SYMBOLP (CAR |l2|)) (SETQ |l2| (CONS |l2| NIL)))) (|bfMKPROGN| (CONS |l1| (|append| |l2| (CONS |name| NIL))))))) (T (SETQ |g| (INTERN (CONCAT "LETTMP#" (WRITE-TO-STRING |$letGenVarCounter|)))) (SETQ |$letGenVarCounter| (+ |$letGenVarCounter| 1)) (SETQ |rhs1| (LIST 'L%T |g| |rhs|)) (SETQ |let1| (|bfLET1| |lhs| |g|)) (COND ((AND (CONSP |let1|) (EQ (CAR |let1|) 'PROGN)) (|bfMKPROGN| (CONS |rhs1| (CDR |let1|)))) (T (COND ((SYMBOLP (CAR |let1|)) (SETQ |let1| (CONS |let1| NIL)))) (|bfMKPROGN| (CONS |rhs1| (|append| |let1| (CONS |g| NIL))))))))))) (DEFUN |bfCONTAINED| (|x| |y|) (COND ((EQ |x| |y|) T) ((ATOM |y|) NIL) (T (OR (|bfCONTAINED| |x| (CAR |y|)) (|bfCONTAINED| |x| (CDR |y|)))))) (DEFUN |bfLET2| (|lhs| |rhs|) (PROG (|isPred| |val1| |ISTMP#3| |g| |rev| |patrev| |l2| |l1| |var2| |var1| |b| |ISTMP#2| |a| |ISTMP#1|) (DECLARE (SPECIAL |$inDefIS| |$letGenVarCounter|)) (RETURN (COND ((NULL |lhs|) NIL) ((SYMBOLP |lhs|) (|bfLetForm| |lhs| |rhs|)) ((AND (CONSP |lhs|) (EQ (CAR |lhs|) 'FLUID) (PROGN (SETQ |ISTMP#1| (CDR |lhs|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|))))) (|bfLetForm| |lhs| |rhs|)) ((AND (CONSP |lhs|) (EQ (CAR |lhs|) 'L%T) (PROGN (SETQ |ISTMP#1| (CDR |lhs|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |a| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |b| (CAR |ISTMP#2|)) T)))))) (SETQ |a| (|bfLET2| |a| |rhs|)) (COND ((NULL (SETQ |b| (|bfLET2| |b| |rhs|))) |a|) ((ATOM |b|) (LIST |a| |b|)) ((CONSP (CAR |b|)) (CONS |a| |b|)) (T (LIST |a| |b|)))) ((AND (CONSP |lhs|) (EQ (CAR |lhs|) 'CONS) (PROGN (SETQ |ISTMP#1| (CDR |lhs|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |var1| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |var2| (CAR |ISTMP#2|)) T)))))) (COND ((OR (EQ |var1| 'DOT) (AND (CONSP |var1|) (EQ (CAR |var1|) 'QUOTE))) (|bfLET2| |var2| (|addCARorCDR| 'CDR |rhs|))) (T (SETQ |l1| (|bfLET2| |var1| (|addCARorCDR| 'CAR |rhs|))) (COND ((OR (NULL |var2|) (EQ |var2| 'DOT)) |l1|) (T (COND ((AND (CONSP |l1|) (ATOM (CAR |l1|))) (SETQ |l1| (CONS |l1| NIL)))) (COND ((SYMBOLP |var2|) (|append| |l1| (CONS (|bfLetForm| |var2| (|addCARorCDR| 'CDR |rhs|)) NIL))) (T (SETQ |l2| (|bfLET2| |var2| (|addCARorCDR| 'CDR |rhs|))) (COND ((AND (CONSP |l2|) (ATOM (CAR |l2|))) (SETQ |l2| (CONS |l2| NIL)))) (|append| |l1| |l2|)))))))) ((AND (CONSP |lhs|) (EQ (CAR |lhs|) '|append|) (PROGN (SETQ |ISTMP#1| (CDR |lhs|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |var1| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |var2| (CAR |ISTMP#2|)) T)))))) (SETQ |patrev| (|bfISReverse| |var2| |var1|)) (SETQ |rev| (LIST '|reverse| |rhs|)) (SETQ |g| (INTERN (CONCAT "LETTMP#" (WRITE-TO-STRING |$letGenVarCounter|)))) (SETQ |$letGenVarCounter| (+ |$letGenVarCounter| 1)) (SETQ |l2| (|bfLET2| |patrev| |g|)) (COND ((AND (CONSP |l2|) (ATOM (CAR |l2|))) (SETQ |l2| (CONS |l2| NIL)))) (COND ((EQ |var1| 'DOT) (CONS (LIST 'L%T |g| |rev|) |l2|)) ((PROGN (SETQ |ISTMP#1| (CAR (|lastNode| |l2|))) (AND (CONSP |ISTMP#1|) (EQ (CAR |ISTMP#1|) 'L%T) (PROGN (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (EQUAL (CAR |ISTMP#2|) |var1|) (PROGN (SETQ |ISTMP#3| (CDR |ISTMP#2|)) (AND (CONSP |ISTMP#3|) (NULL (CDR |ISTMP#3|)) (PROGN (SETQ |val1| (CAR |ISTMP#3|)) T))))))) (CONS (LIST 'L%T |g| |rev|) (|append| (|reverse| (CDR (|reverse| |l2|))) (CONS (|bfLetForm| |var1| (LIST '|reverse!| |val1|)) NIL)))) (T (CONS (LIST 'L%T |g| |rev|) (|append| |l2| (CONS (|bfLetForm| |var1| (LIST '|reverse!| |var1|)) NIL)))))) ((AND (CONSP |lhs|) (EQ (CAR |lhs|) 'EQUAL) (PROGN (SETQ |ISTMP#1| (CDR |lhs|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |var1| (CAR |ISTMP#1|)) T)))) (LIST 'COND (LIST (|bfQ| |var1| |rhs|) |var1|))) (T (SETQ |isPred| (COND (|$inDefIS| (|bfIS1| |rhs| |lhs|)) (T (|bfIS| |rhs| |lhs|)))) (LIST 'COND (LIST |isPred| |rhs|))))))) (DEFUN |bfLET| (|lhs| |rhs|) (PROG (|$letGenVarCounter|) (DECLARE (SPECIAL |$letGenVarCounter|)) (RETURN (PROGN (SETQ |$letGenVarCounter| 1) (|bfLET1| |lhs| |rhs|))))) (DEFUN |addCARorCDR| (|acc| |expr|) (PROG (|funsR| |funsA| |p| |funs|) (RETURN (COND ((ATOM |expr|) (LIST |acc| |expr|)) ((AND (EQ |acc| 'CAR) (CONSP |expr|) (EQ (CAR |expr|) '|reverse|)) (LIST 'CAR (CONS '|lastNode| (CDR |expr|)))) (T (SETQ |funs| '(CAR CDR CAAR CDAR CADR CDDR CAAAR CADAR CAADR CADDR CDAAR CDDAR CDADR CDDDR)) (SETQ |p| (|bfPosition| (CAR |expr|) |funs|)) (COND ((EQL |p| (- 1)) (LIST |acc| |expr|)) (T (SETQ |funsA| '(CAAR CADR CAAAR CADAR CAADR CADDR CAAAAR CAADAR CAAADR CAADDR CADAAR CADDAR CADADR CADDDR)) (SETQ |funsR| '(CDAR CDDR CDAAR CDDAR CDADR CDDDR CDAAAR CDADAR CDAADR CDADDR CDDAAR CDDDAR CDDADR CDDDDR)) (COND ((EQ |acc| 'CAR) (CONS (ELT |funsA| |p|) (CDR |expr|))) (T (CONS (ELT |funsR| |p|) (CDR |expr|))))))))))) (DEFUN |bfPosition| (|x| |l|) (|bfPosn| |x| |l| 0)) (DEFUN |bfPosn| (|x| |l| |n|) (COND ((NULL |l|) (- 1)) ((EQUAL |x| (CAR |l|)) |n|) (T (|bfPosn| |x| (CDR |l|) (+ |n| 1))))) (DEFUN |bfISApplication| (|op| |left| |right|) (COND ((EQ |op| 'IS) (|bfIS| |left| |right|)) ((EQ |op| 'ISNT) (|bfNOT| (|bfIS| |left| |right|))) (T (LIST |op| |left| |right|)))) (DEFUN |bfIS| (|left| |right|) (PROG (|$inDefIS| |$isGenVarCounter|) (DECLARE (SPECIAL |$inDefIS| |$isGenVarCounter|)) (RETURN (PROGN (SETQ |$isGenVarCounter| 1) (SETQ |$inDefIS| T) (|bfIS1| |left| |right|))))) (DEFUN |bfISReverse| (|x| |a|) (PROG (|y|) (RETURN (COND ((AND (CONSP |x|) (EQ (CAR |x|) 'CONS)) (COND ((NULL (CADDR |x|)) (LIST 'CONS (CADR |x|) |a|)) (T (SETQ |y| (|bfISReverse| (CADDR |x|) NIL)) (RPLACA (CDR (CDR |y|)) (LIST 'CONS (CADR |x|) |a|)) |y|))) (T (|bpSpecificErrorHere| "Error in bfISReverse") (|bpTrap|)))))) (DEFUN |bfIS1| (|lhs| |rhs|) (PROG (|l2| |rev| |patrev| |cls| |b1| |a1| |b| |g| |l| |d| |ISTMP#2| |c| |a| |ISTMP#1|) (DECLARE (SPECIAL |$isGenVarCounter|)) (RETURN (COND ((NULL |rhs|) (LIST 'NULL |lhs|)) ((|bfString?| |rhs|) (|bfAND| (LIST (LIST 'STRINGP |lhs|) (LIST 'STRING= |lhs| |rhs|)))) ((OR (|bfChar?| |rhs|) (INTEGERP |rhs|)) (LIST 'EQL |lhs| |rhs|)) ((ATOM |rhs|) (LIST 'PROGN (|bfLetForm| |rhs| |lhs|) 'T)) ((AND (CONSP |rhs|) (EQ (CAR |rhs|) 'QUOTE) (PROGN (SETQ |ISTMP#1| (CDR |rhs|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |a| (CAR |ISTMP#1|)) T)))) (COND ((SYMBOLP |a|) (LIST 'EQ |lhs| |rhs|)) ((STRINGP |a|) (|bfAND| (LIST (LIST 'STRINGP |lhs|) (LIST 'STRING= |lhs| |a|)))) (T (LIST 'EQUAL |lhs| |rhs|)))) ((AND (CONSP |rhs|) (EQ (CAR |rhs|) 'L%T) (PROGN (SETQ |ISTMP#1| (CDR |rhs|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |c| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |d| (CAR |ISTMP#2|)) T)))))) (SETQ |l| (|bfLET| |c| |lhs|)) (|bfAND| (LIST (|bfIS1| |lhs| |d|) (|bfMKPROGN| (LIST |l| 'T))))) ((AND (CONSP |rhs|) (EQ (CAR |rhs|) 'EQUAL) (PROGN (SETQ |ISTMP#1| (CDR |rhs|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |a| (CAR |ISTMP#1|)) T)))) (|bfQ| |lhs| |a|)) ((CONSP |lhs|) (SETQ |g| (INTERN (CONCAT "ISTMP#" (WRITE-TO-STRING |$isGenVarCounter|)))) (SETQ |$isGenVarCounter| (+ |$isGenVarCounter| 1)) (|bfMKPROGN| (LIST (LIST 'L%T |g| |lhs|) (|bfIS1| |g| |rhs|)))) ((AND (CONSP |rhs|) (EQ (CAR |rhs|) 'CONS) (PROGN (SETQ |ISTMP#1| (CDR |rhs|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |a| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |b| (CAR |ISTMP#2|)) T)))))) (COND ((EQ |a| 'DOT) (COND ((NULL |b|) (|bfAND| (LIST (LIST 'CONSP |lhs|) (LIST 'NULL (LIST 'CDR |lhs|))))) (T (|bfAND| (LIST (LIST 'CONSP |lhs|) (|bfIS1| (LIST 'CDR |lhs|) |b|)))))) ((NULL |b|) (|bfAND| (LIST (LIST 'CONSP |lhs|) (LIST 'NULL (LIST 'CDR |lhs|)) (|bfIS1| (LIST 'CAR |lhs|) |a|)))) ((EQ |b| 'DOT) (|bfAND| (LIST (LIST 'CONSP |lhs|) (|bfIS1| (LIST 'CAR |lhs|) |a|)))) (T (SETQ |a1| (|bfIS1| (LIST 'CAR |lhs|) |a|)) (SETQ |b1| (|bfIS1| (LIST 'CDR |lhs|) |b|)) (COND ((AND (CONSP |a1|) (EQ (CAR |a1|) 'PROGN) (PROGN (SETQ |ISTMP#1| (CDR |a1|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |c| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (EQ (CAR |ISTMP#2|) 'T))))) (CONSP |b1|) (EQ (CAR |b1|) 'PROGN)) (SETQ |cls| (CDR |b1|)) (|bfAND| (LIST (LIST 'CONSP |lhs|) (|bfMKPROGN| (CONS |c| |cls|))))) (T (|bfAND| (LIST (LIST 'CONSP |lhs|) |a1| |b1|))))))) ((AND (CONSP |rhs|) (EQ (CAR |rhs|) '|append|) (PROGN (SETQ |ISTMP#1| (CDR |rhs|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |a| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |b| (CAR |ISTMP#2|)) T)))))) (SETQ |patrev| (|bfISReverse| |b| |a|)) (SETQ |g| (INTERN (CONCAT "ISTMP#" (WRITE-TO-STRING |$isGenVarCounter|)))) (SETQ |$isGenVarCounter| (+ |$isGenVarCounter| 1)) (SETQ |rev| (|bfAND| (LIST (LIST 'CONSP |lhs|) (LIST 'PROGN (LIST 'L%T |g| (LIST '|reverse| |lhs|)) 'T)))) (SETQ |l2| (|bfIS1| |g| |patrev|)) (COND ((AND (CONSP |l2|) (ATOM (CAR |l2|))) (SETQ |l2| (CONS |l2| NIL)))) (COND ((EQ |a| 'DOT) (|bfAND| (CONS |rev| |l2|))) (T (|bfAND| (CONS |rev| (|append| |l2| (CONS (LIST 'PROGN (|bfLetForm| |a| (LIST '|reverse!| |a|)) 'T) NIL))))))) (T (|bpSpecificErrorHere| "bad IS code is generated") (|bpTrap|)))))) (DEFUN |bfHas| (|expr| |prop|) (COND ((SYMBOLP |prop|) (LIST 'GET |expr| (LIST 'QUOTE |prop|))) (T (|bpSpecificErrorHere| "expected identifier as property name")))) (DEFUN |bfApplication| (|bfop| |bfarg|) (COND ((|bfTupleP| |bfarg|) (CONS |bfop| (CDR |bfarg|))) (T (LIST |bfop| |bfarg|)))) (DEFUN |bfReName| (|x|) (PROG (|a|) (RETURN (COND ((SETQ |a| (GET |x| 'SHOERENAME)) (CAR |a|)) (T |x|))))) (DEFUN |sequence?| (|x| |pred|) (PROG (|seq| |ISTMP#1|) (RETURN (AND (CONSP |x|) (EQ (CAR |x|) 'QUOTE) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |seq| (CAR |ISTMP#1|)) T))) (CONSP |seq|) (LET ((|bfVar#99| T) (|bfVar#98| |seq|) (|y| NIL)) (LOOP (COND ((OR (ATOM |bfVar#98|) (PROGN (SETQ |y| (CAR |bfVar#98|)) NIL)) (RETURN |bfVar#99|)) (T (SETQ |bfVar#99| (APPLY |pred| |y| NIL)) (COND ((NOT |bfVar#99|) (RETURN NIL))))) (SETQ |bfVar#98| (CDR |bfVar#98|)))))))) (DEFUN |idList?| (|x|) (AND (CONSP |x|) (EQ (CAR |x|) 'LIST) (LET ((|bfVar#101| T) (|bfVar#100| (CDR |x|)) (|arg| NIL)) (LOOP (COND ((OR (ATOM |bfVar#100|) (PROGN (SETQ |arg| (CAR |bfVar#100|)) NIL)) (RETURN |bfVar#101|)) (T (SETQ |bfVar#101| (|defQuoteId| |arg|)) (COND ((NOT |bfVar#101|) (RETURN NIL))))) (SETQ |bfVar#100| (CDR |bfVar#100|)))))) (DEFUN |charList?| (|x|) (AND (CONSP |x|) (EQ (CAR |x|) 'LIST) (LET ((|bfVar#103| T) (|bfVar#102| (CDR |x|)) (|arg| NIL)) (LOOP (COND ((OR (ATOM |bfVar#102|) (PROGN (SETQ |arg| (CAR |bfVar#102|)) NIL)) (RETURN |bfVar#103|)) (T (SETQ |bfVar#103| (|bfChar?| |arg|)) (COND ((NOT |bfVar#103|) (RETURN NIL))))) (SETQ |bfVar#102| (CDR |bfVar#102|)))))) (DEFUN |stringList?| (|x|) (AND (CONSP |x|) (EQ (CAR |x|) 'LIST) (LET ((|bfVar#105| T) (|bfVar#104| (CDR |x|)) (|arg| NIL)) (LOOP (COND ((OR (ATOM |bfVar#104|) (PROGN (SETQ |arg| (CAR |bfVar#104|)) NIL)) (RETURN |bfVar#105|)) (T (SETQ |bfVar#105| (|bfString?| |arg|)) (COND ((NOT |bfVar#105|) (RETURN NIL))))) (SETQ |bfVar#104| (CDR |bfVar#104|)))))) (DEFUN |bfMember| (|var| |seq|) (PROG (|y| |x| |ISTMP#2| |ISTMP#1|) (RETURN (COND ((OR (INTEGERP |var|) (|sequence?| |seq| #'INTEGERP)) (COND ((AND (CONSP |seq|) (EQ (CAR |seq|) 'QUOTE) (PROGN (SETQ |ISTMP#1| (CDR |seq|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |ISTMP#2| (CAR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |x| (CAR |ISTMP#2|)) T)))))) (LIST 'EQL |var| |x|)) (T (LIST '|scalarMember?| |var| |seq|)))) ((OR (|defQuoteId| |var|) (|sequence?| |seq| #'SYMBOLP)) (COND ((AND (CONSP |seq|) (EQ (CAR |seq|) 'QUOTE) (PROGN (SETQ |ISTMP#1| (CDR |seq|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |ISTMP#2| (CAR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |x| (CAR |ISTMP#2|)) T)))))) (LIST 'EQ |var| (LIST 'QUOTE |x|))) (T (LIST '|symbolMember?| |var| |seq|)))) ((|idList?| |seq|) (COND ((PROGN (SETQ |ISTMP#1| (CDR |seq|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)))) (CONS 'EQ (CONS |var| (CDR |seq|)))) ((AND (SYMBOLP |var|) (PROGN (SETQ |ISTMP#1| (CDR |seq|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |x| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |y| (CAR |ISTMP#2|)) T)))))) (|bfOR| (LIST (LIST 'EQ |var| |x|) (LIST 'EQ |var| |y|)))) (T (LIST '|symbolMember?| |var| |seq|)))) ((OR (|bfChar?| |var|) (|sequence?| |seq| #'CHARACTERP)) (COND ((AND (CONSP |seq|) (EQ (CAR |seq|) 'QUOTE) (PROGN (SETQ |ISTMP#1| (CDR |seq|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |ISTMP#2| (CAR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |x| (CAR |ISTMP#2|)) T)))))) (LIST 'CHAR= |var| |x|)) (T (LIST '|charMember?| |var| |seq|)))) ((|charList?| |seq|) (COND ((PROGN (SETQ |ISTMP#1| (CDR |seq|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)))) (CONS 'CHAR= (CONS |var| (CDR |seq|)))) ((AND (SYMBOLP |var|) (PROGN (SETQ |ISTMP#1| (CDR |seq|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |x| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |y| (CAR |ISTMP#2|)) T)))))) (|bfOR| (LIST (LIST 'CHAR= |var| |x|) (LIST 'CHAR= |var| |y|)))) (T (LIST '|charMember?| |var| |seq|)))) ((OR (|bfString?| |var|) (|sequence?| |seq| #'STRINGP)) (COND ((AND (CONSP |seq|) (EQ (CAR |seq|) 'QUOTE) (PROGN (SETQ |ISTMP#1| (CDR |seq|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |ISTMP#2| (CAR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |x| (CAR |ISTMP#2|)) T)))))) (LIST 'STRING= |var| |x|)) (T (LIST '|stringMember?| |var| |seq|)))) ((|stringList?| |seq|) (COND ((PROGN (SETQ |ISTMP#1| (CDR |seq|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)))) (CONS 'STRING= (CONS |var| (CDR |seq|)))) ((AND (SYMBOLP |var|) (PROGN (SETQ |ISTMP#1| (CDR |seq|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |x| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |y| (CAR |ISTMP#2|)) T)))))) (|bfOR| (LIST (LIST 'STRING= |var| |x|) (LIST 'STRING= |var| |y|)))) (T (LIST '|stringMember?| |var| |seq|)))) (T (LIST 'MEMBER |var| |seq|)))))) (DEFUN |bfInfApplication| (|op| |left| |right|) (COND ((EQ |op| 'EQUAL) (|bfQ| |left| |right|)) ((EQ |op| '/=) (|bfNOT| (|bfQ| |left| |right|))) ((EQ |op| '>) (|bfLessp| |right| |left|)) ((EQ |op| '<) (|bfLessp| |left| |right|)) ((EQ |op| '<=) (|bfNOT| (|bfLessp| |right| |left|))) ((EQ |op| '>=) (|bfNOT| (|bfLessp| |left| |right|))) ((EQ |op| 'OR) (|bfOR| (LIST |left| |right|))) ((EQ |op| 'AND) (|bfAND| (LIST |left| |right|))) ((EQ |op| 'IN) (|bfMember| |left| |right|)) (T (LIST |op| |left| |right|)))) (DEFUN |bfNOT| (|x|) (PROG (|a| |ISTMP#1|) (RETURN (COND ((AND (CONSP |x|) (EQ (CAR |x|) 'NOT) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |a| (CAR |ISTMP#1|)) T)))) |a|) ((AND (CONSP |x|) (EQ (CAR |x|) 'NULL) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |a| (CAR |ISTMP#1|)) T)))) |a|) (T (LIST 'NOT |x|)))))) (DEFUN |bfFlatten| (|op| |x|) (COND ((AND (CONSP |x|) (EQUAL (CAR |x|) |op|)) (CDR |x|)) (T (LIST |x|)))) (DEFUN |bfOR| (|l|) (COND ((NULL |l|) NIL) ((NULL (CDR |l|)) (CAR |l|)) (T (CONS 'OR (LET ((|bfVar#107| NIL) (|bfVar#108| NIL) (|bfVar#106| |l|) (|c| NIL)) (LOOP (COND ((OR (ATOM |bfVar#106|) (PROGN (SETQ |c| (CAR |bfVar#106|)) NIL)) (RETURN |bfVar#107|)) (T (LET ((|bfVar#109| (|copyList| (|bfFlatten| 'OR |c|)))) (COND ((NULL |bfVar#109|) NIL) ((NULL |bfVar#107|) (SETQ |bfVar#107| |bfVar#109|) (SETQ |bfVar#108| (|lastNode| |bfVar#107|))) (T (RPLACD |bfVar#108| |bfVar#109|) (SETQ |bfVar#108| (|lastNode| |bfVar#108|))))))) (SETQ |bfVar#106| (CDR |bfVar#106|)))))))) (DEFUN |bfAND| (|l|) (COND ((NULL |l|) T) ((NULL (CDR |l|)) (CAR |l|)) (T (CONS 'AND (LET ((|bfVar#111| NIL) (|bfVar#112| NIL) (|bfVar#110| |l|) (|c| NIL)) (LOOP (COND ((OR (ATOM |bfVar#110|) (PROGN (SETQ |c| (CAR |bfVar#110|)) NIL)) (RETURN |bfVar#111|)) (T (LET ((|bfVar#113| (|copyList| (|bfFlatten| 'AND |c|)))) (COND ((NULL |bfVar#113|) NIL) ((NULL |bfVar#111|) (SETQ |bfVar#111| |bfVar#113|) (SETQ |bfVar#112| (|lastNode| |bfVar#111|))) (T (RPLACD |bfVar#112| |bfVar#113|) (SETQ |bfVar#112| (|lastNode| |bfVar#112|))))))) (SETQ |bfVar#110| (CDR |bfVar#110|)))))))) (DEFUN |defQuoteId| (|x|) (AND (CONSP |x|) (EQ (CAR |x|) 'QUOTE) (SYMBOLP (CADR |x|)))) (DEFUN |bfChar?| (|x|) (OR (CHARACTERP |x|) (AND (CONSP |x|) (|symbolMember?| (CAR |x|) '(|char| CODE-CHAR SCHAR))))) (DEFUN |bfSmintable| (|x|) (OR (INTEGERP |x|) (AND (CONSP |x|) (|symbolMember?| (CAR |x|) '(SIZE LENGTH CHAR-CODE MAXINDEX + -))))) (DEFUN |bfString?| (|x|) (OR (STRINGP |x|) (AND (CONSP |x|) (|symbolMember?| (CAR |x|) '(STRING SYMBOL-NAME |subString|))))) (DEFUN |bfQ| (|l| |r|) (COND ((OR (|bfChar?| |l|) (|bfChar?| |r|)) (LIST 'CHAR= |l| |r|)) ((OR (|bfSmintable| |l|) (|bfSmintable| |r|)) (LIST 'EQL |l| |r|)) ((OR (|defQuoteId| |l|) (|defQuoteId| |r|)) (LIST 'EQ |l| |r|)) ((NULL |l|) (LIST 'NULL |r|)) ((NULL |r|) (LIST 'NULL |l|)) ((OR (EQ |l| T) (EQ |r| T)) (LIST 'EQ |l| |r|)) ((OR (|bfString?| |l|) (|bfString?| |r|)) (LIST 'STRING= |l| |r|)) (T (LIST 'EQUAL |l| |r|)))) (DEFUN |bfLessp| (|l| |r|) (COND ((EQL |l| 0) (LIST 'PLUSP |r|)) ((EQL |r| 0) (LIST 'MINUSP |l|)) ((OR (|bfChar?| |l|) (|bfChar?| |r|)) (LIST 'CHAR< |l| |r|)) ((OR (|bfString?| |l|) (|bfString?| |r|)) (LIST 'STRING< |l| |r|)) (T (LIST '< |l| |r|)))) (DEFUN |bfLambda| (|vars| |body|) (PROGN (SETQ |vars| (COND ((|bfTupleP| |vars|) (CDR |vars|)) (T (LIST |vars|)))) (LIST 'LAMBDA |vars| |body|))) (DEFUN |bfMDef| (|op| |args| |body|) (PROG (|def| |lamex| |sb2| |sb| |largl| |nargl| |sgargl| |gargl| |LETTMP#1| |argl|) (DECLARE (SPECIAL |$wheredefs|)) (RETURN (PROGN (SETQ |argl| (COND ((|bfTupleP| |args|) (CDR |args|)) (T (LIST |args|)))) (SETQ |LETTMP#1| (|bfGargl| |argl|)) (SETQ |gargl| (CAR |LETTMP#1|)) (SETQ |sgargl| (CADR . #0=(|LETTMP#1|))) (SETQ |nargl| (CADDR . #0#)) (SETQ |largl| (CADDDR . #0#)) (SETQ |sb| (LET ((|bfVar#116| NIL) (|bfVar#117| NIL) (|bfVar#114| |nargl|) (|i| NIL) (|bfVar#115| |sgargl|) (|j| NIL)) (LOOP (COND ((OR (ATOM |bfVar#114|) (PROGN (SETQ |i| (CAR |bfVar#114|)) NIL) (ATOM |bfVar#115|) (PROGN (SETQ |j| (CAR |bfVar#115|)) NIL)) (RETURN |bfVar#116|)) ((NULL |bfVar#116|) (SETQ |bfVar#116| #1=(CONS (CONS |i| |j|) NIL)) (SETQ |bfVar#117| |bfVar#116|)) (T (RPLACD |bfVar#117| #1#) (SETQ |bfVar#117| (CDR |bfVar#117|)))) (SETQ |bfVar#114| (CDR |bfVar#114|)) (SETQ |bfVar#115| (CDR |bfVar#115|))))) (SETQ |body| (|applySubst| |sb| |body|)) (SETQ |sb2| (LET ((|bfVar#120| NIL) (|bfVar#121| NIL) (|bfVar#118| |sgargl|) (|i| NIL) (|bfVar#119| |largl|) (|j| NIL)) (LOOP (COND ((OR (ATOM |bfVar#118|) (PROGN (SETQ |i| (CAR |bfVar#118|)) NIL) (ATOM |bfVar#119|) (PROGN (SETQ |j| (CAR |bfVar#119|)) NIL)) (RETURN |bfVar#120|)) ((NULL |bfVar#120|) (SETQ |bfVar#120| #2=(CONS (LIST 'CONS (LIST 'QUOTE |i|) |j|) NIL)) (SETQ |bfVar#121| |bfVar#120|)) (T (RPLACD |bfVar#121| #2#) (SETQ |bfVar#121| (CDR |bfVar#121|)))) (SETQ |bfVar#118| (CDR |bfVar#118|)) (SETQ |bfVar#119| (CDR |bfVar#119|))))) (SETQ |body| (LIST '|applySubst| (CONS 'LIST |sb2|) (LIST 'QUOTE |body|))) (SETQ |lamex| (LIST 'MLAMBDA |gargl| |body|)) (SETQ |def| (LIST |op| |lamex|)) (CONS (|shoeComp| |def|) (LET ((|bfVar#123| NIL) (|bfVar#124| NIL) (|bfVar#122| |$wheredefs|) (|d| NIL)) (LOOP (COND ((OR (ATOM |bfVar#122|) (PROGN (SETQ |d| (CAR |bfVar#122|)) NIL)) (RETURN |bfVar#123|)) (T (LET ((|bfVar#125| (|copyList| (|shoeComps| (|bfDef1| |d|))))) (COND ((NULL |bfVar#125|) NIL) ((NULL |bfVar#123|) (SETQ |bfVar#123| |bfVar#125|) (SETQ |bfVar#124| (|lastNode| |bfVar#123|))) (T (RPLACD |bfVar#124| |bfVar#125|) (SETQ |bfVar#124| (|lastNode| |bfVar#124|))))))) (SETQ |bfVar#122| (CDR |bfVar#122|))))))))) (DEFUN |bfGargl| (|argl|) (PROG (|f| |d| |c| |b| |a| |LETTMP#1|) (RETURN (COND ((NULL |argl|) (LIST NIL NIL NIL NIL)) (T (SETQ |LETTMP#1| (|bfGargl| (CDR |argl|))) (SETQ |a| (CAR |LETTMP#1|)) (SETQ |b| (CADR . #0=(|LETTMP#1|))) (SETQ |c| (CADDR . #0#)) (SETQ |d| (CADDDR . #0#)) (COND ((EQ (CAR |argl|) '&REST) (LIST (CONS (CAR |argl|) |b|) |b| |c| (CONS (LIST 'CONS (LIST 'QUOTE 'LIST) (CAR |d|)) (CDR |d|)))) (T (SETQ |f| (|bfGenSymbol|)) (LIST (CONS |f| |a|) (CONS |f| |b|) (CONS (CAR |argl|) |c|) (CONS |f| |d|))))))))) (DEFUN |bfDef1| (|bfVar#126|) (PROG (|arglp| |control| |quotes| |LETTMP#1| |argl| |body| |args| |op|) (RETURN (PROGN (SETQ |op| (CAR |bfVar#126|)) (SETQ |args| (CADR . #0=(|bfVar#126|))) (SETQ |body| (CADDR . #0#)) (SETQ |argl| (COND ((|bfTupleP| |args|) (CDR |args|)) (T (LIST |args|)))) (SETQ |LETTMP#1| (|bfInsertLet| |argl| |body|)) (SETQ |quotes| (CAR |LETTMP#1|)) (SETQ |control| (CADR . #1=(|LETTMP#1|))) (SETQ |arglp| (CADDR . #1#)) (SETQ |body| (CADDDR . #1#)) (COND (|quotes| (|shoeLAM| |op| |arglp| |control| |body|)) (T (LIST (LIST |op| (LIST 'LAMBDA |arglp| |body|))))))))) (DEFUN |shoeLAM| (|op| |args| |control| |body|) (PROG (|innerfunc| |margs|) (RETURN (PROGN (SETQ |margs| (|bfGenSymbol|)) (SETQ |innerfunc| (INTERN (CONCAT (SYMBOL-NAME |op|) '|,LAM|))) (LIST (LIST |innerfunc| (LIST 'LAMBDA |args| |body|)) (LIST |op| (LIST 'MLAMBDA (LIST '&REST |margs|) (LIST 'CONS (LIST 'QUOTE |innerfunc|) (LIST 'WRAP |margs| (LIST 'QUOTE |control|)))))))))) (DEFUN |bfDef| (|op| |args| |body|) (PROG (|body1| |arg1| |op1| |LETTMP#1|) (DECLARE (SPECIAL |$wheredefs| |$bfClamming|)) (RETURN (COND (|$bfClamming| (SETQ |LETTMP#1| (|shoeComp| (CAR (|bfDef1| (LIST |op| |args| |body|))))) (SETQ |op1| (CADR . #0=(|LETTMP#1|))) (SETQ |arg1| (CADDR . #0#)) (SETQ |body1| (CDDDR . #0#)) (|bfCompHash| |op1| |arg1| |body1|)) (T (|bfTuple| (LET ((|bfVar#128| NIL) (|bfVar#129| NIL) (|bfVar#127| (CONS (LIST |op| |args| |body|) |$wheredefs|)) (|d| NIL)) (LOOP (COND ((OR (ATOM |bfVar#127|) (PROGN (SETQ |d| (CAR |bfVar#127|)) NIL)) (RETURN |bfVar#128|)) (T (LET ((|bfVar#130| (|copyList| (|shoeComps| (|bfDef1| |d|))))) (COND ((NULL |bfVar#130|) NIL) ((NULL |bfVar#128|) (SETQ |bfVar#128| |bfVar#130|) (SETQ |bfVar#129| (|lastNode| |bfVar#128|))) (T (RPLACD |bfVar#129| |bfVar#130|) (SETQ |bfVar#129| (|lastNode| |bfVar#129|))))))) (SETQ |bfVar#127| (CDR |bfVar#127|)))))))))) (DEFUN |shoeComps| (|x|) (LET ((|bfVar#132| NIL) (|bfVar#133| NIL) (|bfVar#131| |x|) (|def| NIL)) (LOOP (COND ((OR (ATOM |bfVar#131|) (PROGN (SETQ |def| (CAR |bfVar#131|)) NIL)) (RETURN |bfVar#132|)) ((NULL |bfVar#132|) (SETQ |bfVar#132| #0=(CONS (|shoeComp| |def|) NIL)) (SETQ |bfVar#133| |bfVar#132|)) (T (RPLACD |bfVar#133| #0#) (SETQ |bfVar#133| (CDR |bfVar#133|)))) (SETQ |bfVar#131| (CDR |bfVar#131|))))) (DEFUN |shoeComp| (|x|) (PROG (|a|) (RETURN (PROGN (SETQ |a| (|shoeCompTran| (CADR |x|))) (COND ((AND (CONSP |a|) (EQ (CAR |a|) 'LAMBDA)) (CONS 'DEFUN (CONS (CAR |x|) (CONS (CADR |a|) (CDDR |a|))))) (T (CONS 'DEFMACRO (CONS (CAR |x|) (CONS (CADR |a|) (CDDR |a|)))))))))) (DEFUN |bfParameterList| (|p1| |p2|) (COND ((AND (NULL |p2|) (NOT (ATOM |p1|))) |p1|) ((AND (CONSP |p1|) (EQ (CAR |p1|) '&OPTIONAL)) (COND ((NOT (AND (CONSP |p2|) (EQ (CAR |p2|) '&OPTIONAL))) (|bpSpecificErrorHere| "default value required")) (T (CONS (CAR |p1|) (|append| (CDR |p1|) (CDR |p2|)))))) ((AND (CONSP |p2|) (EQ (CAR |p2|) '&OPTIONAL)) (CONS |p1| (CONS (CAR |p2|) (CDR |p2|)))) (T (CONS |p1| |p2|)))) (DEFUN |bfInsertLet| (|x| |body|) (PROG (|body2| |name2| |norq1| |b1| |body1| |name1| |norq| |LETTMP#1| |b| |a| |ISTMP#1|) (RETURN (COND ((NULL |x|) (LIST NIL NIL |x| |body|)) ((AND (CONSP |x|) (EQ (CAR |x|) '&REST) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |a| (CAR |ISTMP#1|)) T)))) (COND ((AND (CONSP |a|) (EQ (CAR |a|) 'QUOTE) (PROGN (SETQ |ISTMP#1| (CDR |a|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |b| (CAR |ISTMP#1|)) T)))) (LIST T 'QUOTE (LIST '&REST |b|) |body|)) (T (LIST NIL NIL |x| |body|)))) (T (SETQ |LETTMP#1| (|bfInsertLet1| (CAR |x|) |body|)) (SETQ |b| (CAR |LETTMP#1|)) (SETQ |norq| (CADR . #0=(|LETTMP#1|))) (SETQ |name1| (CADDR . #0#)) (SETQ |body1| (CADDDR . #0#)) (SETQ |LETTMP#1| (|bfInsertLet| (CDR |x|) |body1|)) (SETQ |b1| (CAR |LETTMP#1|)) (SETQ |norq1| (CADR . #1=(|LETTMP#1|))) (SETQ |name2| (CADDR . #1#)) (SETQ |body2| (CADDDR . #1#)) (LIST (OR |b| |b1|) (CONS |norq| |norq1|) (|bfParameterList| |name1| |name2|) |body2|)))))) (DEFUN |bfInsertLet1| (|y| |body|) (PROG (|g| |b| |r| |ISTMP#2| |l| |ISTMP#1|) (RETURN (COND ((AND (CONSP |y|) (EQ (CAR |y|) 'L%T) (PROGN (SETQ |ISTMP#1| (CDR |y|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |l| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |r| (CAR |ISTMP#2|)) T)))))) (LIST NIL NIL |l| (|bfMKPROGN| (LIST (|bfLET| |r| |l|) |body|)))) ((SYMBOLP |y|) (LIST NIL NIL |y| |body|)) ((AND (CONSP |y|) (EQ (CAR |y|) 'BVQUOTE) (PROGN (SETQ |ISTMP#1| (CDR |y|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |b| (CAR |ISTMP#1|)) T)))) (LIST T 'QUOTE |b| |body|)) (T (SETQ |g| (|bfGenSymbol|)) (COND ((ATOM |y|) (LIST NIL NIL |g| |body|)) (T (CASE (CAR |y|) (|%DefaultValue| (LET ((|p| (CADR |y|)) (|v| (CADDR |y|))) (LIST NIL NIL (LIST '&OPTIONAL (LIST |p| |v|)) |body|))) (T (LIST NIL NIL |g| (|bfMKPROGN| (LIST (|bfLET| (|compFluidize| |y|) |g|) |body|)))))))))))) (DEFUN |shoeCompTran| (|x|) (PROG (|$dollarVars| |$locVars| |$fluidVars| |fvs| |fl| |fvars| |body'| |lvars| |body| |args| |lamtype|) (DECLARE (SPECIAL |$typings| |$dollarVars| |$fluidVars| |$locVars|)) (RETURN (PROGN (SETQ |lamtype| (CAR |x|)) (SETQ |args| (CADR . #0=(|x|))) (SETQ |body| (CDDR . #0#)) (SETQ |$fluidVars| NIL) (SETQ |$locVars| NIL) (SETQ |$dollarVars| NIL) (|shoeCompTran1| |body|) (SETQ |$locVars| (|setDifference| (|setDifference| |$locVars| |$fluidVars|) (|shoeATOMs| |args|))) (SETQ |body| (PROGN (SETQ |lvars| (|append| |$fluidVars| |$locVars|)) (SETQ |$fluidVars| (UNION |$fluidVars| |$dollarVars|)) (SETQ |body'| |body|) (COND (|$typings| (SETQ |body'| (CONS (CONS 'DECLARE |$typings|) |body'|)))) (COND (|$fluidVars| (SETQ |fvars| (LIST 'DECLARE (CONS 'SPECIAL |$fluidVars|))) (SETQ |body'| (CONS |fvars| |body'|)))) (COND ((OR |lvars| (|needsPROG| |body|)) (|shoePROG| |lvars| |body'|)) (T |body'|)))) (SETQ |fl| (|shoeFluids| |args|)) (SETQ |body| (COND (|fl| (SETQ |fvs| (LIST 'DECLARE (CONS 'SPECIAL |fl|))) (CONS |fvs| |body|)) (T |body|))) (CONS |lamtype| (CONS |args| |body|)))))) (DEFUN |needsPROG| (|body|) (PROG (|args| |op|) (RETURN (COND ((ATOM |body|) NIL) (T (SETQ |op| (CAR |body|)) (SETQ |args| (CDR |body|)) (COND ((|symbolMember?| |op| '(RETURN RETURN-FROM)) T) ((|symbolMember?| |op| '(LET PROG LOOP BLOCK DECLARE LAMBDA)) NIL) (T (LET ((|bfVar#135| NIL) (|bfVar#134| |body|) (|t| NIL)) (LOOP (COND ((OR (ATOM |bfVar#134|) (PROGN (SETQ |t| (CAR |bfVar#134|)) NIL)) (RETURN |bfVar#135|)) (T (SETQ |bfVar#135| (|needsPROG| |t|)) (COND (|bfVar#135| (RETURN |bfVar#135|))))) (SETQ |bfVar#134| (CDR |bfVar#134|))))))))))) (DEFUN |shoePROG| (|v| |b|) (PROG (|blist| |blast| |LETTMP#1|) (RETURN (COND ((NULL |b|) (LIST (LIST 'PROG |v|))) (T (SETQ |LETTMP#1| (|reverse| |b|)) (SETQ |blast| (CAR |LETTMP#1|)) (SETQ |blist| (|reverse!| (CDR |LETTMP#1|))) (LIST (CONS 'PROG (CONS |v| (|append| |blist| (CONS (LIST 'RETURN |blast|) NIL)))))))))) (DEFUN |shoeFluids| (|x|) (COND ((NULL |x|) NIL) ((AND (SYMBOLP |x|) (|bfBeginsDollar| |x|)) (LIST |x|)) ((ATOM |x|) NIL) ((AND (CONSP |x|) (EQ (CAR |x|) 'QUOTE)) NIL) (T (|append| (|shoeFluids| (CAR |x|)) (|shoeFluids| (CDR |x|)))))) (DEFUN |shoeATOMs| (|x|) (COND ((NULL |x|) NIL) ((ATOM |x|) (LIST |x|)) (T (|append| (|shoeATOMs| (CAR |x|)) (|shoeATOMs| (CDR |x|)))))) (DEFUN |isDynamicVariable| (|x|) (PROG (|y|) (DECLARE (SPECIAL |$activeNamespace| |$constantIdentifiers|)) (RETURN (COND ((AND (SYMBOLP |x|) (|bfBeginsDollar| |x|)) (COND ((|symbolMember?| |x| |$constantIdentifiers|) NIL) ((CONSTANTP |x|) NIL) ((OR (BOUNDP |x|) (NULL |$activeNamespace|)) T) ((SETQ |y| (FIND-SYMBOL (SYMBOL-NAME |x|) |$activeNamespace|)) (NOT (CONSTANTP |y|))) (T T))) (T NIL))))) (DEFUN |shoeCompTran1| (|x|) (PROG (|args| |res| |newbindings| |r| |ISTMP#2| |l| |ISTMP#1| U) (DECLARE (SPECIAL |$fluidVars| |$locVars| |$dollarVars|)) (RETURN (COND ((ATOM |x|) (COND ((|isDynamicVariable| |x|) (SETQ |$dollarVars| (COND ((|symbolMember?| |x| |$dollarVars|) |$dollarVars|) (T (CONS |x| |$dollarVars|))))) (T NIL))) (T (SETQ U (CAR |x|)) (COND ((EQ U 'QUOTE) NIL) ((AND (CONSP |x|) (EQ (CAR |x|) 'L%T) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |l| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |r| (CAR |ISTMP#2|)) T)))))) (RPLACA |x| 'SETQ) (|shoeCompTran1| |r|) (COND ((SYMBOLP |l|) (COND ((NOT (|bfBeginsDollar| |l|)) (SETQ |$locVars| (COND ((|symbolMember?| |l| |$locVars|) |$locVars|) (T (CONS |l| |$locVars|))))) (T (SETQ |$dollarVars| (COND ((|symbolMember?| |l| |$dollarVars|) |$dollarVars|) (T (CONS |l| |$dollarVars|))))))) ((AND (CONSP |l|) (EQ (CAR |l|) 'FLUID)) (SETQ |$fluidVars| (COND ((|symbolMember?| (CADR |l|) |$fluidVars|) |$fluidVars|) (T (CONS (CADR |l|) |$fluidVars|)))) (RPLACA (CDR |x|) (CADR |l|))))) ((EQ U '|%Leave|) (RPLACA |x| 'RETURN)) ((|symbolMember?| U '(PROG LAMBDA)) (SETQ |newbindings| NIL) (LET ((|bfVar#136| (CADR |x|)) (|y| NIL)) (LOOP (COND ((OR (ATOM |bfVar#136|) (PROGN (SETQ |y| (CAR |bfVar#136|)) NIL)) (RETURN NIL)) ((NOT (|symbolMember?| |y| |$locVars|)) (IDENTITY (PROGN (SETQ |$locVars| (CONS |y| |$locVars|)) (SETQ |newbindings| (CONS |y| |newbindings|)))))) (SETQ |bfVar#136| (CDR |bfVar#136|)))) (SETQ |res| (|shoeCompTran1| (CDDR |x|))) (SETQ |$locVars| (LET ((|bfVar#138| NIL) (|bfVar#139| NIL) (|bfVar#137| |$locVars|) (|y| NIL)) (LOOP (COND ((OR (ATOM |bfVar#137|) (PROGN (SETQ |y| (CAR |bfVar#137|)) NIL)) (RETURN |bfVar#138|)) (T (AND (NOT (|symbolMember?| |y| |newbindings|)) (COND ((NULL |bfVar#138|) (SETQ |bfVar#138| #0=(CONS |y| NIL)) (SETQ |bfVar#139| |bfVar#138|)) (T (RPLACD |bfVar#139| #0#) (SETQ |bfVar#139| (CDR |bfVar#139|))))))) (SETQ |bfVar#137| (CDR |bfVar#137|)))))) ((AND (CONSP |x|) (EQ (CAR |x|) '|vector|) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |ISTMP#2| (CAR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (EQ (CAR |ISTMP#2|) 'LIST) (PROGN (SETQ |args| (CDR |ISTMP#2|)) T)))))) (RPLACA |x| 'VECTOR) (RPLACD |x| |args|)) ((AND (CONSP |x|) (EQ (CAR |x|) '|vector|) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (EQ (CAR |ISTMP#1|) 'NIL)))) (RPLACA |x| 'VECTOR) (RPLACD |x| NIL)) (T (|shoeCompTran1| (CAR |x|)) (|shoeCompTran1| (CDR |x|))))))))) (DEFUN |bfTagged| (|a| |b|) (DECLARE (SPECIAL |$typings| |$op|)) (COND ((NULL |$op|) (|%Signature| |a| |b|)) ((SYMBOLP |a|) (COND ((EQ |b| 'FLUID) (|bfLET| (|compFluid| |a|) NIL)) ((EQ |b| '|fluid|) (|bfLET| (|compFluid| |a|) NIL)) ((EQ |b| '|local|) (|bfLET| (|compFluid| |a|) NIL)) (T (SETQ |$typings| (CONS (LIST 'TYPE |b| |a|) |$typings|)) |a|))) (T (LIST 'THE |b| |a|)))) (DEFUN |bfAssign| (|l| |r|) (PROG (|l'|) (RETURN (COND ((|bfTupleP| |l|) (|bfSetelt| (CADR |l|) (CDDR |l|) |r|)) ((AND (CONSP |l|) (EQ (CAR |l|) '|%Place|)) (SETQ |l'| (CDR |l|)) (LIST 'SETF |l'| |r|)) (T (|bfLET| |l| |r|)))))) (DEFUN |bfSetelt| (|e| |l| |r|) (COND ((NULL (CDR |l|)) (|defSETELT| |e| (CAR |l|) |r|)) (T (|bfSetelt| (|bfElt| |e| (CAR |l|)) (CDR |l|) |r|)))) (DEFUN |bfElt| (|expr| |sel|) (PROG (|y|) (RETURN (PROGN (SETQ |y| (AND (SYMBOLP |sel|) (GET |sel| 'SHOESELFUNCTION))) (COND (|y| (COND ((INTEGERP |y|) (LIST 'ELT |expr| |y|)) (T (LIST |y| |expr|)))) (T (LIST 'ELT |expr| |sel|))))))) (DEFUN |defSETELT| (|var| |sel| |expr|) (PROG (|y|) (RETURN (PROGN (SETQ |y| (AND (SYMBOLP |sel|) (GET |sel| 'SHOESELFUNCTION))) (COND (|y| (COND ((INTEGERP |y|) (LIST 'SETF (LIST 'ELT |var| |y|) |expr|)) ((EQ |y| 'CAR) (LIST 'RPLACA |var| |expr|)) ((EQ |y| 'CDR) (LIST 'RPLACD |var| |expr|)) (T (LIST 'SETF (LIST |y| |var|) |expr|)))) (T (LIST 'SETF (LIST 'ELT |var| |sel|) |expr|))))))) (DEFUN |bfIfThenOnly| (|a| |b|) (PROG (|b1|) (RETURN (PROGN (SETQ |b1| (COND ((AND (CONSP |b|) (EQ (CAR |b|) 'PROGN)) (CDR |b|)) (T (LIST |b|)))) (LIST 'COND (CONS |a| |b1|)))))) (DEFUN |bfIf| (|a| |b| |c|) (PROG (|c1| |b1|) (RETURN (PROGN (SETQ |b1| (COND ((AND (CONSP |b|) (EQ (CAR |b|) 'PROGN)) (CDR |b|)) (T (LIST |b|)))) (COND ((AND (CONSP |c|) (EQ (CAR |c|) 'COND)) (CONS 'COND (CONS (CONS |a| |b1|) (CDR |c|)))) (T (SETQ |c1| (COND ((AND (CONSP |c|) (EQ (CAR |c|) 'PROGN)) (CDR |c|)) (T (LIST |c|)))) (LIST 'COND (CONS |a| |b1|) (CONS 'T |c1|)))))))) (DEFUN |bfExit| (|a| |b|) (LIST 'COND (LIST |a| (LIST 'IDENTITY |b|)))) (DEFUN |bfMKPROGN| (|l|) (PROG (|a|) (RETURN (PROGN (SETQ |a| (LET ((|bfVar#140| NIL) (|bfVar#141| NIL) (|c| |l|)) (LOOP (COND ((ATOM |c|) (RETURN |bfVar#140|)) (T (LET ((|bfVar#142| (|copyList| (|bfFlattenSeq| |c|)))) (COND ((NULL |bfVar#142|) NIL) ((NULL |bfVar#140|) (SETQ |bfVar#140| |bfVar#142|) (SETQ |bfVar#141| (|lastNode| |bfVar#140|))) (T (RPLACD |bfVar#141| |bfVar#142|) (SETQ |bfVar#141| (|lastNode| |bfVar#141|))))))) (SETQ |c| (CDR |c|))))) (COND ((NULL |a|) NIL) ((NULL (CDR |a|)) (CAR |a|)) (T (CONS 'PROGN |a|))))))) (DEFUN |bfFlattenSeq| (|x|) (PROG (|f|) (RETURN (COND ((NULL |x|) NIL) (T (SETQ |f| (CAR |x|)) (COND ((ATOM |f|) (COND ((CDR |x|) NIL) (T (LIST |f|)))) ((AND (CONSP |f|) (EQ (CAR |f|) 'PROGN)) (COND ((CDR |x|) (LET ((|bfVar#144| NIL) (|bfVar#145| NIL) (|bfVar#143| (CDR |f|)) (|i| NIL)) (LOOP (COND ((OR (ATOM |bfVar#143|) (PROGN (SETQ |i| (CAR |bfVar#143|)) NIL)) (RETURN |bfVar#144|)) (T (AND (NOT (ATOM |i|)) (COND ((NULL |bfVar#144|) (SETQ |bfVar#144| #0=(CONS |i| NIL)) (SETQ |bfVar#145| |bfVar#144|)) (T (RPLACD |bfVar#145| #0#) (SETQ |bfVar#145| (CDR |bfVar#145|))))))) (SETQ |bfVar#143| (CDR |bfVar#143|))))) (T (CDR |f|)))) (T (LIST |f|)))))))) (DEFUN |bfWashCONDBranchBody| (|x|) (PROG (|y|) (RETURN (COND ((AND (CONSP |x|) (EQ (CAR |x|) 'PROGN)) (SETQ |y| (CDR |x|)) |y|) (T (LIST |x|)))))) (DEFUN |bfAlternative| (|a| |b|) (PROG (|conds| |ISTMP#5| |stmt| |ISTMP#4| |ISTMP#3| |ISTMP#2| |ISTMP#1|) (RETURN (COND ((AND (CONSP |a|) (EQ (CAR |a|) 'AND) (PROGN (SETQ |ISTMP#1| (CDR |a|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |ISTMP#2| (|reverse| |ISTMP#1|)) T) (CONSP |ISTMP#2|) (PROGN (SETQ |ISTMP#3| (CAR |ISTMP#2|)) (AND (CONSP |ISTMP#3|) (EQ (CAR |ISTMP#3|) 'PROGN) (PROGN (SETQ |ISTMP#4| (CDR |ISTMP#3|)) (AND (CONSP |ISTMP#4|) (PROGN (SETQ |stmt| (CAR |ISTMP#4|)) (SETQ |ISTMP#5| (CDR |ISTMP#4|)) (AND (CONSP |ISTMP#5|) (NULL (CDR |ISTMP#5|)) (EQ (CAR |ISTMP#5|) 'T))))))) (PROGN (SETQ |conds| (CDR |ISTMP#2|)) T) (PROGN (SETQ |conds| (|reverse!| |conds|)) T)))) (CONS (CONS 'AND |conds|) (|bfWashCONDBranchBody| (|bfMKPROGN| (LIST |stmt| |b|))))) (T (CONS |a| (|bfWashCONDBranchBody| |b|))))))) (DEFUN |bfSequence| (|l|) (PROG (|f| |aft| |before| |no| |transform| |b| |ISTMP#5| |ISTMP#4| |ISTMP#3| |a| |ISTMP#2| |ISTMP#1|) (RETURN (COND ((NULL |l|) NIL) (T (SETQ |transform| (LET ((|bfVar#147| NIL) (|bfVar#148| NIL) (|bfVar#146| |l|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#146|) (PROGN (SETQ |x| (CAR |bfVar#146|)) NIL) (NOT (AND (CONSP |x|) (EQ (CAR |x|) 'COND) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |ISTMP#2| (CAR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (PROGN (SETQ |a| (CAR |ISTMP#2|)) (SETQ |ISTMP#3| (CDR |ISTMP#2|)) (AND (CONSP |ISTMP#3|) (NULL (CDR |ISTMP#3|)) (PROGN (SETQ |ISTMP#4| (CAR |ISTMP#3|)) (AND (CONSP |ISTMP#4|) (EQ (CAR |ISTMP#4|) 'IDENTITY) (PROGN (SETQ |ISTMP#5| (CDR |ISTMP#4|)) (AND (CONSP |ISTMP#5|) (NULL (CDR |ISTMP#5|)) (PROGN (SETQ |b| (CAR |ISTMP#5|)) T)))))))))))))) (RETURN |bfVar#147|)) ((NULL |bfVar#147|) (SETQ |bfVar#147| #0=(CONS (|bfAlternative| |a| |b|) NIL)) (SETQ |bfVar#148| |bfVar#147|)) (T (RPLACD |bfVar#148| #0#) (SETQ |bfVar#148| (CDR |bfVar#148|)))) (SETQ |bfVar#146| (CDR |bfVar#146|))))) (SETQ |no| (LENGTH |transform|)) (SETQ |before| (|bfTake| |no| |l|)) (SETQ |aft| (|bfDrop| |no| |l|)) (COND ((NULL |before|) (COND ((AND (CONSP |l|) (NULL (CDR |l|))) (SETQ |f| (CAR |l|)) (COND ((AND (CONSP |f|) (EQ (CAR |f|) 'PROGN)) (|bfSequence| (CDR |f|))) (T |f|))) (T (|bfMKPROGN| (LIST (CAR |l|) (|bfSequence| (CDR |l|))))))) ((NULL |aft|) (CONS 'COND |transform|)) (T (CONS 'COND (|append| |transform| (CONS (|bfAlternative| 'T (|bfSequence| |aft|)) NIL)))))))))) (DEFUN |bfWhere| (|context| |expr|) (PROG (|a| |nondefs| |defs| |opassoc| |LETTMP#1|) (DECLARE (SPECIAL |$wheredefs|)) (RETURN (PROGN (SETQ |LETTMP#1| (|defSheepAndGoats| |context|)) (SETQ |opassoc| (CAR |LETTMP#1|)) (SETQ |defs| (CADR . #0=(|LETTMP#1|))) (SETQ |nondefs| (CADDR . #0#)) (SETQ |a| (LET ((|bfVar#150| NIL) (|bfVar#151| NIL) (|bfVar#149| |defs|) (|d| NIL)) (LOOP (COND ((OR (ATOM |bfVar#149|) (PROGN (SETQ |d| (CAR |bfVar#149|)) NIL)) (RETURN |bfVar#150|)) ((NULL |bfVar#150|) (SETQ |bfVar#150| #1=(CONS (LIST (CAR |d|) (CADR |d|) (|bfSUBLIS| |opassoc| (CADDR |d|))) NIL)) (SETQ |bfVar#151| |bfVar#150|)) (T (RPLACD |bfVar#151| #1#) (SETQ |bfVar#151| (CDR |bfVar#151|)))) (SETQ |bfVar#149| (CDR |bfVar#149|))))) (SETQ |$wheredefs| (|append| |a| |$wheredefs|)) (|bfMKPROGN| (|bfSUBLIS| |opassoc| (|append!| |nondefs| (LIST |expr|)))))))) (DEFUN |bfCompHash| (|op| |argl| |body|) (PROG (|computeFunction| |auxfn|) (RETURN (PROGN (SETQ |auxfn| (INTERN (CONCAT (SYMBOL-NAME |op|) ";"))) (SETQ |computeFunction| (CONS 'DEFUN (CONS |auxfn| (CONS |argl| |body|)))) (|bfTuple| (CONS |computeFunction| (|bfMain| |auxfn| |op|))))))) (DEFUN |shoeCompileTimeEvaluation| (|x|) (LIST 'EVAL-WHEN (LIST :COMPILE-TOPLEVEL) |x|)) (DEFUN |shoeEVALANDFILEACTQ| (|x|) (LIST 'EVAL-WHEN (LIST :EXECUTE :LOAD-TOPLEVEL) |x|)) (DEFUN |bfMain| (|auxfn| |op|) (PROG (|defCode| |cacheVector| |cacheCountCode| |cacheResetCode| |cacheType| |mainFunction| |codeBody| |thirdPredPair| |putCode| |secondPredPair| |getCode| |g2| |cacheName| |computeValue| |arg| |g1|) (RETURN (PROGN (SETQ |g1| (|bfGenSymbol|)) (SETQ |arg| (LIST '&REST |g1|)) (SETQ |computeValue| (LIST 'APPLY (LIST 'FUNCTION |auxfn|) |g1|)) (SETQ |cacheName| (INTERN (CONCAT (SYMBOL-NAME |op|) ";AL"))) (SETQ |g2| (|bfGenSymbol|)) (SETQ |getCode| (LIST 'GETHASH |g1| |cacheName|)) (SETQ |secondPredPair| (LIST (LIST 'SETQ |g2| |getCode|) |g2|)) (SETQ |putCode| (LIST 'SETF |getCode| |computeValue|)) (SETQ |thirdPredPair| (LIST 'T |putCode|)) (SETQ |codeBody| (LIST 'PROG (LIST |g2|) (LIST 'RETURN (LIST 'COND |secondPredPair| |thirdPredPair|)))) (SETQ |mainFunction| (LIST 'DEFUN |op| |arg| |codeBody|)) (SETQ |cacheType| '|hash-table|) (SETQ |cacheResetCode| (LIST 'SETQ |cacheName| (LIST 'MAKE-HASHTABLE (LIST 'QUOTE 'UEQUAL)))) (SETQ |cacheCountCode| (LIST '|hashCount| |cacheName|)) (SETQ |cacheVector| (LIST |op| |cacheName| |cacheType| |cacheResetCode| |cacheCountCode|)) (SETQ |defCode| (LIST 'DEFPARAMETER |cacheName| (LIST 'MAKE-HASHTABLE (LIST 'QUOTE 'UEQUAL)))) (LIST |defCode| |mainFunction| (|shoeEVALANDFILEACTQ| (LIST 'SETF (LIST 'GET (LIST 'QUOTE |op|) (LIST 'QUOTE '|cacheInfo|)) (LIST 'QUOTE |cacheVector|)))))))) (DECLAIM (FTYPE (FUNCTION (|%Thing|) |%Form|) |bfNameOnly|)) (DEFUN |bfNameOnly| (|x|) (COND ((EQ |x| '|t|) (LIST 'T)) (T (LIST |x|)))) (DECLAIM (FTYPE (FUNCTION (|%Thing| |%Thing|) (|%List| |%Form|)) |bfNameArgs|)) (DEFUN |bfNameArgs| (|x| |y|) (PROGN (SETQ |y| (COND ((AND (CONSP |y|) (EQ (CAR |y|) 'TUPLE)) (CDR |y|)) (T (LIST |y|)))) (CONS |x| |y|))) (DECLAIM (FTYPE (FUNCTION (|%Thing|) |%Form|) |bfCreateDef|)) (DEFUN |bfCreateDef| (|x|) (PROG (|a| |f|) (RETURN (COND ((AND (CONSP |x|) (NULL (CDR |x|))) (SETQ |f| (CAR |x|)) (LIST 'DEFCONSTANT |f| (LIST 'LIST (LIST 'QUOTE |f|)))) (T (SETQ |a| (LET ((|bfVar#153| NIL) (|bfVar#154| NIL) (|bfVar#152| (CDR |x|)) (|i| NIL)) (LOOP (COND ((OR (ATOM |bfVar#152|) (PROGN (SETQ |i| (CAR |bfVar#152|)) NIL)) (RETURN |bfVar#153|)) ((NULL |bfVar#153|) (SETQ |bfVar#153| #0=(CONS (|bfGenSymbol|) NIL)) (SETQ |bfVar#154| |bfVar#153|)) (T (RPLACD |bfVar#154| #0#) (SETQ |bfVar#154| (CDR |bfVar#154|)))) (SETQ |bfVar#152| (CDR |bfVar#152|))))) (LIST 'DEFUN (CAR |x|) |a| (LIST 'CONS (LIST 'QUOTE (CAR |x|)) (CONS 'LIST |a|)))))))) (DECLAIM (FTYPE (FUNCTION (|%Thing| |%Thing|) |%Form|) |bfCaseItem|)) (DEFUN |bfCaseItem| (|x| |y|) (LIST |x| |y|)) (DECLAIM (FTYPE (FUNCTION (|%Thing| |%Thing|) |%Form|) |bfCase|)) (DEFUN |bfCase| (|x| |y|) (PROG (|body| |g|) (RETURN (PROGN (SETQ |g| (COND ((ATOM |x|) |x|) (T (|bfGenSymbol|)))) (SETQ |body| (CONS 'CASE (CONS (LIST 'CAR |g|) (|bfCaseItems| |g| |y|)))) (COND ((EQ |g| |x|) |body|) (T (LIST 'LET (LIST (LIST |g| |x|)) |body|))))))) (DECLAIM (FTYPE (FUNCTION (|%Thing| (|%List| |%Form|)) (|%List| |%Form|)) |bfCaseItems|)) (DEFUN |bfCaseItems| (|g| |x|) (PROG (|j| |ISTMP#1| |i|) (RETURN (LET ((|bfVar#157| NIL) (|bfVar#158| NIL) (|bfVar#156| |x|) (|bfVar#155| NIL)) (LOOP (COND ((OR (ATOM |bfVar#156|) (PROGN (SETQ |bfVar#155| (CAR |bfVar#156|)) NIL)) (RETURN |bfVar#157|)) (T (AND (CONSP |bfVar#155|) (PROGN (SETQ |i| (CAR |bfVar#155|)) (SETQ |ISTMP#1| (CDR |bfVar#155|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |j| (CAR |ISTMP#1|)) T))) (COND ((NULL |bfVar#157|) (SETQ |bfVar#157| #0=(CONS (|bfCI| |g| |i| |j|) NIL)) (SETQ |bfVar#158| |bfVar#157|)) (T (RPLACD |bfVar#158| #0#) (SETQ |bfVar#158| (CDR |bfVar#158|))))))) (SETQ |bfVar#156| (CDR |bfVar#156|))))))) (DECLAIM (FTYPE (FUNCTION (|%Thing| |%Thing| |%Thing|) |%Form|) |bfCI|)) (DEFUN |bfCI| (|g| |x| |y|) (PROG (|b| |a|) (RETURN (PROGN (SETQ |a| (CDR |x|)) (COND ((NULL |a|) (LIST (CAR |x|) |y|)) (T (SETQ |b| (LET ((|bfVar#160| NIL) (|bfVar#161| NIL) (|bfVar#159| |a|) (|i| NIL) (|j| 1)) (LOOP (COND ((OR (ATOM |bfVar#159|) (PROGN (SETQ |i| (CAR |bfVar#159|)) NIL)) (RETURN |bfVar#160|)) (T (AND (NOT (EQ |i| 'DOT)) (COND ((NULL |bfVar#160|) (SETQ |bfVar#160| #0=(CONS (LIST |i| (|bfCARCDR| |j| |g|)) NIL)) (SETQ |bfVar#161| |bfVar#160|)) (T (RPLACD |bfVar#161| #0#) (SETQ |bfVar#161| (CDR |bfVar#161|))))))) (SETQ |bfVar#159| (CDR |bfVar#159|)) (SETQ |j| (+ |j| 1))))) (COND ((NULL |b|) (LIST (CAR |x|) |y|)) (T (LIST (CAR |x|) (LIST 'LET |b| |y|)))))))))) (DECLAIM (FTYPE (FUNCTION (|%Short| |%Thing|) |%Form|) |bfCARCDR|)) (DEFUN |bfCARCDR| (|n| |g|) (LIST (INTERN (CONCAT "CA" (|bfDs| |n|) "R")) |g|)) (DECLAIM (FTYPE (FUNCTION (|%Short|) |%String|) |bfDs|)) (DEFUN |bfDs| (|n|) (COND ((EQL |n| 0) "") (T (CONCAT "D" (|bfDs| (- |n| 1)))))) (DEFUN |bfHandlers| (|n| |e| |hs|) (|bfHandlers,main| |n| |e| |hs| NIL)) (DEFUN |bfHandlers,main| (|n| |e| |hs| |xs|) (PROG (|hs'| |s| |ISTMP#6| |t| |ISTMP#5| |v| |ISTMP#4| |ISTMP#3| |ISTMP#2| |ISTMP#1|) (RETURN (COND ((NULL |hs|) (CONS 'COND (|reverse!| (CONS (LIST T (LIST 'THROW :OPEN-AXIOM-CATCH-POINT |n|)) |xs|)))) ((AND (CONSP |hs|) (PROGN (SETQ |ISTMP#1| (CAR |hs|)) (AND (CONSP |ISTMP#1|) (EQ (CAR |ISTMP#1|) '|%Catch|) (PROGN (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (PROGN (SETQ |ISTMP#3| (CAR |ISTMP#2|)) (AND (CONSP |ISTMP#3|) (EQ (CAR |ISTMP#3|) '|%Signature|) (PROGN (SETQ |ISTMP#4| (CDR |ISTMP#3|)) (AND (CONSP |ISTMP#4|) (PROGN (SETQ |v| (CAR |ISTMP#4|)) (SETQ |ISTMP#5| (CDR |ISTMP#4|)) (AND (CONSP |ISTMP#5|) (NULL (CDR |ISTMP#5|)) (PROGN (SETQ |t| (CAR |ISTMP#5|)) T))))))) (PROGN (SETQ |ISTMP#6| (CDR |ISTMP#2|)) (AND (CONSP |ISTMP#6|) (NULL (CDR |ISTMP#6|)) (PROGN (SETQ |s| (CAR |ISTMP#6|)) T)))))))) (SETQ |hs'| (CDR |hs|)) (SETQ |t| (COND ((SYMBOLP |t|) (LIST 'QUOTE (LIST |t|))) (T (LIST 'QUOTE |t|)))) (|bfHandlers,main| |n| |e| |hs'| (CONS (LIST (|bfQ| (LIST 'CAR |e|) |t|) (LIST 'LET (LIST (LIST |v| (LIST 'CDR |e|))) |s|)) |xs|))) (T (|bpTrap|)))))) (DEFUN |codeForCatchHandlers| (|g| |e| |cs|) (PROG (|ehTest|) (RETURN (PROGN (SETQ |ehTest| (LIST 'AND (LIST 'CONSP |g|) (|bfQ| (LIST 'CAR |g|) :OPEN-AXIOM-CATCH-POINT))) (LIST 'LET (LIST (LIST |g| (LIST 'CATCH :OPEN-AXIOM-CATCH-POINT |e|))) (LIST 'COND (LIST |ehTest| (|bfHandlers| |g| (LIST 'CDR |g|) |cs|)) (LIST T |g|))))))) (DECLAIM (FTYPE (FUNCTION (|%Thing| (|%List| |%Form|)) |%Thing|) |bfTry|)) (DEFUN |bfTry| (|e| |cs|) (PROG (|s| |cs'| |f| |ISTMP#1| |g|) (RETURN (PROGN (SETQ |g| (GENSYM)) (COND ((AND (CONSP |cs|) (PROGN (SETQ |ISTMP#1| (|reverse| |cs|)) T) (CONSP |ISTMP#1|) (PROGN (SETQ |f| (CAR |ISTMP#1|)) (SETQ |cs'| (CDR |ISTMP#1|)) T) (PROGN (SETQ |cs'| (|reverse!| |cs'|)) T) (CONSP |f|) (EQ (CAR |f|) '|%Finally|) (PROGN (SETQ |ISTMP#1| (CDR |f|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |s| (CAR |ISTMP#1|)) T)))) (COND ((NULL |cs'|) (LIST 'UNWIND-PROTECT |e| |s|)) (T (LIST 'UNWIND-PROTECT (|codeForCatchHandlers| |g| |e| |cs'|) |s|)))) (T (|codeForCatchHandlers| |g| |e| |cs|))))))) (DEFUN |bfThrow| (|e|) (PROG (|x| |t|) (RETURN (PROGN (SETQ |t| NIL) (SETQ |x| NIL) (COND ((AND (CONSP |e|) (EQ (CAR |e|) '|%Pretend|)) (SETQ |t| (CADDR |e|)) (SETQ |x| (CADR |e|))) (T (SETQ |t| '|SystemException|) (SETQ |x| |e|))) (SETQ |t| (COND ((SYMBOLP |t|) (LIST 'QUOTE (LIST |t|))) (T (LIST 'QOUTE |t|)))) (LIST 'THROW :OPEN-AXIOM-CATCH-POINT (LIST 'CONS :OPEN-AXIOM-CATCH-POINT (LIST 'CONS |t| |x|))))))) (DECLAIM (FTYPE (FUNCTION (|%Form| (|%List| |%Symbol|)) |%Form|) |backquote|)) (DEFUN |backquote| (|form| |params|) (COND ((NULL |params|) (|quote| |form|)) ((ATOM |form|) (COND ((|symbolMember?| |form| |params|) |form|) (T (|quote| |form|)))) (T (CONS 'LIST (LET ((|bfVar#163| NIL) (|bfVar#164| NIL) (|bfVar#162| |form|) (|t| NIL)) (LOOP (COND ((OR (ATOM |bfVar#162|) (PROGN (SETQ |t| (CAR |bfVar#162|)) NIL)) (RETURN |bfVar#163|)) ((NULL |bfVar#163|) (SETQ |bfVar#163| #0=(CONS (|backquote| |t| |params|) NIL)) (SETQ |bfVar#164| |bfVar#163|)) (T (RPLACD |bfVar#164| #0#) (SETQ |bfVar#164| (CDR |bfVar#164|)))) (SETQ |bfVar#162| (CDR |bfVar#162|)))))))) (DEFUN |genTypeAlias| (|head| |body|) (PROG (|args| |op|) (RETURN (PROGN (SETQ |op| (CAR |head|)) (SETQ |args| (CDR |head|)) (LIST 'DEFTYPE |op| |args| (|backquote| |body| |args|)))))) (DEFCONSTANT |$NativeSimpleDataTypes| '(|char| |byte| |int| |pointer| |int8| |uint8| |int16| |uint16| |int32| |uint32| |int64| |uint64| |float| |float32| |double| |float64|)) (DEFCONSTANT |$NativeSimpleReturnTypes| (|append| |$NativeSimpleDataTypes| '(|void| |string|))) (DEFUN |isSimpleNativeType| (|t|) (|objectMember?| |t| |$NativeSimpleReturnTypes|)) (DECLAIM (FTYPE (FUNCTION (|%Symbol|) |%Symbol|) |coreSymbol|)) (DEFUN |coreSymbol| (|s|) (INTERN (SYMBOL-NAME |s|) '|AxiomCore|)) (DECLAIM (FTYPE (FUNCTION (|%Symbol|) |%Symbol|) |bootSymbol|)) (DEFUN |bootSymbol| (|s|) (INTERN (SYMBOL-NAME |s|))) (DEFUN |unknownNativeTypeError| (|t|) (|fatalError| (CONCAT "unsupported native type: " (PNAME |t|)))) (DEFUN |nativeType| (|t|) (PROG (|t'|) (RETURN (COND ((NULL |t|) |t|) ((ATOM |t|) (COND ((SETQ |t'| (CDR (ASSOC (|coreSymbol| |t|) |$NativeTypeTable|))) (SETQ |t'| (COND ((|%hasFeature| :SBCL) (|bfColonColon| 'SB-ALIEN |t'|)) ((|%hasFeature| :CLISP) (|bfColonColon| 'FFI |t'|)) (T |t'|))) (COND ((AND (EQ |t| '|string|) (|%hasFeature| :SBCL)) (LIST |t'| :EXTERNAL-FORMAT :ASCII :ELEMENT-TYPE 'BASE-CHAR)) (T |t'|))) ((|symbolMember?| |t| '(|byte| |uint8|)) (COND ((|%hasFeature| :SBCL) (LIST (|bfColonColon| 'SB-ALIEN 'UNSIGNED) 8)) ((|%hasFeature| :CLISP) (|bfColonColon| 'FFI 'UINT8)) ((OR (|%hasFeature| :ECL) (|%hasFeature| :CLOZURE)) :UNSIGNED-BYTE) (T (|nativeType| '|char|)))) ((EQ |t| '|int16|) (COND ((|%hasFeature| :SBCL) (LIST (|bfColonColon| 'SB-ALIEN 'SIGNED) 16)) ((|%hasFeature| :CLISP) (|bfColonColon| 'FFI 'INT16)) ((AND (|%hasFeature| :ECL) (|%hasFeature| :UINT16-T)) :INT16-T) ((|%hasFeature| :CLOZURE) :SIGNED-HALFWORD) (T (|unknownNativeTypeError| |t|)))) ((EQ |t| '|uint16|) (COND ((|%hasFeature| :SBCL) (LIST (|bfColonColon| 'SB-ALIEN 'UNSIGNED) 16)) ((|%hasFeature| :CLISP) (|bfColonColon| 'FFI 'UINT16)) ((AND (|%hasFeature| :ECL) (|%hasFeature| :UINT16-T)) :UINT16-T) ((|%hasFeature| :CLOZURE) :UNSIGNED-HALFWORD) (T (|unknownNativeTypeError| |t|)))) ((EQ |t| '|int32|) (COND ((|%hasFeature| :SBCL) (LIST (|bfColonColon| 'SB-ALIEN 'SIGNED) 32)) ((|%hasFeature| :CLISP) (|bfColonColon| 'FFI 'INT32)) ((AND (|%hasFeature| :ECL) (|%hasFeature| :UINT32-T)) :INT32-T) ((|%hasFeature| :CLOZURE) :SIGNED-FULLWORD) (T (|unknownNativeTypeError| |t|)))) ((EQ |t| '|uint32|) (COND ((|%hasFeature| :SBCL) (LIST (|bfColonColon| 'SB-ALIEN 'UNSIGNED) 32)) ((|%hasFeature| :CLISP) (|bfColonColon| 'FFI 'INT32)) ((AND (|%hasFeature| :ECL) (|%hasFeature| :UINT32-T)) :UINT32-T) ((|%hasFeature| :CLOZURE) :UNSIGNED-FULLWORD) (T (|unknownNativeTypeError| |t|)))) ((EQ |t| '|int64|) (COND ((|%hasFeature| :SBCL) (LIST (|bfColonColon| 'SB-ALIEN 'SIGNED) 64)) ((|%hasFeature| :CLISP) (|bfColonColon| 'FFI 'INT64)) ((AND (|%hasFeature| :ECL) (|%hasFeature| :UINT64-T)) :INT64-T) ((|%hasFeature| :CLOZURE) :SIGNED-DOUBLEWORD) (T (|unknownNativeTypeError| |t|)))) ((EQ |t| '|uint64|) (COND ((|%hasFeature| :SBCL) (LIST (|bfColonColon| 'SB-ALIEN 'UNSIGNED) 64)) ((|%hasFeature| :CLISP) (|bfColonColon| 'FFI 'UINT64)) ((AND (|%hasFeature| :ECL) (|%hasFeature| :UINT64-T)) :UINT64-T) ((|%hasFeature| :CLOZURE) :UNSIGNED-DOUBLEWORD) (T (|unknownNativeTypeError| |t|)))) ((EQ |t| '|float32|) (|nativeType| '|float|)) ((EQ |t| '|float64|) (|nativeType| '|double|)) ((EQ |t| '|pointer|) (COND ((|%hasFeature| :GCL) '|fixnum|) ((|%hasFeature| :ECL) :POINTER-VOID) ((|%hasFeature| :SBCL) (LIST '* (|bfColonColon| 'SB-ALIEN 'VOID))) ((|%hasFeature| :CLISP) (|bfColonColon| 'FFI 'C-POINTER)) ((|%hasFeature| :CLOZURE) :ADDRESS) (T (|unknownNativeTypeError| |t|)))) (T (|unknownNativeTypeError| |t|)))) ((EQ (CAR |t|) '|buffer|) (COND ((|%hasFeature| :GCL) 'OBJECT) ((|%hasFeature| :ECL) :OBJECT) ((|%hasFeature| :SBCL) (LIST '* (|nativeType| (CADR |t|)))) ((|%hasFeature| :CLISP) (|bfColonColon| 'FFI 'C-POINTER)) ((|%hasFeature| :CLOZURE) (LIST :* (|nativeType| (CADR |t|)))) (T (|unknownNativeTypeError| |t|)))) ((EQ (CAR |t|) '|pointer|) (|nativeType| '|pointer|)) (T (|unknownNativeTypeError| |t|)))))) (DEFUN |nativeReturnType| (|t|) (COND ((|objectMember?| |t| |$NativeSimpleReturnTypes|) (|nativeType| |t|)) (T (|coreError| (CONCAT "invalid return type for native function: " (PNAME |t|)))))) (DEFUN |nativeArgumentType| (|t|) (PROG (|t'| |c| |m|) (RETURN (COND ((|objectMember?| |t| |$NativeSimpleDataTypes|) (|nativeType| |t|)) ((EQ |t| '|string|) (|nativeType| |t|)) ((OR (ATOM |t|) (NOT (EQL (LENGTH |t|) 2))) (|coreError| "invalid argument type for a native function")) (T (SETQ |m| (CAR |t|)) (SETQ |c| (CAADR . #0=(|t|))) (SETQ |t'| (CADADR . #0#)) (COND ((NOT (|symbolMember?| |m| '(|readonly| |writeonly| |readwrite|))) (|coreError| "missing modifier for argument type for a native function")) ((NOT (|symbolMember?| |c| '(|buffer| |pointer|))) (|coreError| "expected 'buffer' or 'pointer' type instance")) ((NOT (|objectMember?| |t'| |$NativeSimpleDataTypes|)) (|coreError| "expected simple native data type")) (T (|nativeType| (CADR |t|))))))))) (DEFUN |needsStableReference?| (|t|) (PROG (|m|) (RETURN (AND (CONSP |t|) (PROGN (SETQ |m| (CAR |t|)) T) (|symbolMember?| |m| '(|readonly| |writeonly| |readwrite|)))))) (DEFUN |coerceToNativeType| (|a| |t|) (PROG (|y| |c|) (RETURN (COND ((OR (|%hasFeature| :GCL) (|%hasFeature| :ECL) (|%hasFeature| :CLISP) (|%hasFeature| :CLOZURE)) |a|) ((|%hasFeature| :SBCL) (COND ((NOT (|needsStableReference?| |t|)) |a|) (T (SETQ |c| (CAADR . #0=(|t|))) (SETQ |y| (CADADR . #0#)) (COND ((EQ |c| '|buffer|) (LIST (|bfColonColon| 'SB-SYS 'VECTOR-SAP) |a|)) ((EQ |c| '|pointer|) (LIST (|bfColonColon| 'SB-SYS 'ALIEN-SAP) |a|)) ((|needsStableReference?| |t|) (|fatalError| (CONCAT "don't know how to coerce argument for native type" (PNAME |c|)))))))) (T (|fatalError| "don't know how to coerce argument for native type")))))) (DEFUN |genGCLnativeTranslation| (|op| |s| |t| |op'|) (PROG (|ccode| |cargs| |cop| |rettype| |argtypes|) (RETURN (PROGN (SETQ |argtypes| (LET ((|bfVar#166| NIL) (|bfVar#167| NIL) (|bfVar#165| |s|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#165|) (PROGN (SETQ |x| (CAR |bfVar#165|)) NIL)) (RETURN |bfVar#166|)) ((NULL |bfVar#166|) (SETQ |bfVar#166| #0=(CONS (|nativeArgumentType| |x|) NIL)) (SETQ |bfVar#167| |bfVar#166|)) (T (RPLACD |bfVar#167| #0#) (SETQ |bfVar#167| (CDR |bfVar#167|)))) (SETQ |bfVar#165| (CDR |bfVar#165|))))) (SETQ |rettype| (|nativeReturnType| |t|)) (COND ((LET ((|bfVar#169| T) (|bfVar#168| (CONS |t| |s|)) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#168|) (PROGN (SETQ |x| (CAR |bfVar#168|)) NIL)) (RETURN |bfVar#169|)) (T (SETQ |bfVar#169| (|isSimpleNativeType| |x|)) (COND ((NOT |bfVar#169|) (RETURN NIL))))) (SETQ |bfVar#168| (CDR |bfVar#168|)))) (LIST (LIST 'DEFENTRY |op| |argtypes| (LIST |rettype| (SYMBOL-NAME |op'|))))) (T (SETQ |cop| (CONCAT (SYMBOL-NAME |op'|) "_stub")) (SETQ |cargs| (LET ((|bfVar#178| NIL) (|bfVar#179| NIL) (|bfVar#177| (- (LENGTH |s|) 1)) (|i| 0)) (LOOP (COND ((> |i| |bfVar#177|) (RETURN |bfVar#178|)) ((NULL |bfVar#178|) (SETQ |bfVar#178| (CONS (|genGCLnativeTranslation,mkCArgName| |i|) NIL)) (SETQ |bfVar#179| |bfVar#178|)) (T (RPLACD |bfVar#179| (CONS (|genGCLnativeTranslation,mkCArgName| |i|) NIL)) (SETQ |bfVar#179| (CDR |bfVar#179|)))) (SETQ |i| (+ |i| 1))))) (SETQ |ccode| (LET ((|bfVar#174| "") (|bfVar#176| (CONS (|genGCLnativeTranslation,gclTypeInC| |t|) (CONS " " (CONS |cop| (CONS "(" (|append| (LET ((|bfVar#170| NIL) (|bfVar#171| NIL) (|x| |s|) (|a| |cargs|)) (LOOP (COND ((OR (ATOM |x|) (ATOM |a|)) (RETURN |bfVar#170|)) ((NULL |bfVar#170|) (SETQ |bfVar#170| (CONS (|genGCLnativeTranslation,cparm| |x| |a|) NIL)) (SETQ |bfVar#171| |bfVar#170|)) (T (RPLACD |bfVar#171| (CONS (|genGCLnativeTranslation,cparm| |x| |a|) NIL)) (SETQ |bfVar#171| (CDR |bfVar#171|)))) (SETQ |x| (CDR |x|)) (SETQ |a| (CDR |a|)))) (CONS ") { " (CONS (COND ((NOT (EQ |t| '|void|)) "return ") (T '||)) (CONS (SYMBOL-NAME |op'|) (CONS "(" (|append| (LET ((|bfVar#172| NIL) (|bfVar#173| NIL) (|x| |s|) (|a| |cargs|)) (LOOP (COND ((OR (ATOM |x|) (ATOM |a|)) (RETURN |bfVar#172|)) ((NULL |bfVar#172|) (SETQ |bfVar#172| (CONS (|genGCLnativeTranslation,gclArgsInC| |x| |a|) NIL)) (SETQ |bfVar#173| |bfVar#172|)) (T (RPLACD |bfVar#173| (CONS (|genGCLnativeTranslation,gclArgsInC| |x| |a|) NIL)) (SETQ |bfVar#173| (CDR |bfVar#173|)))) (SETQ |x| (CDR |x|)) (SETQ |a| (CDR |a|)))) (CONS "); }" NIL)))))))))))) (|bfVar#175| NIL)) (LOOP (COND ((OR (ATOM |bfVar#176|) (PROGN (SETQ |bfVar#175| (CAR |bfVar#176|)) NIL)) (RETURN |bfVar#174|)) (T (SETQ |bfVar#174| (CONCAT |bfVar#174| |bfVar#175|)))) (SETQ |bfVar#176| (CDR |bfVar#176|))))) (LIST (LIST 'CLINES |ccode|) (LIST 'DEFENTRY |op| |argtypes| (LIST |rettype| |cop|))))))))) (DEFUN |genGCLnativeTranslation,mkCArgName| (|i|) (CONCAT "x" (WRITE-TO-STRING |i|))) (DEFUN |genGCLnativeTranslation,cparm| (|x| |a|) (CONCAT (|genGCLnativeTranslation,gclTypeInC| (CAR |x|)) " " (CAR |a|) (COND ((CDR |x|) ", ") (T "")))) (DEFUN |genGCLnativeTranslation,gclTypeInC| (|x|) (PROG (|ISTMP#3| |ISTMP#2| |ISTMP#1|) (RETURN (COND ((|objectMember?| |x| |$NativeSimpleDataTypes|) (SYMBOL-NAME |x|)) ((EQ |x| '|void|) "void") ((EQ |x| '|string|) "char*") ((AND (CONSP |x|) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |ISTMP#2| (CAR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (EQ (CAR |ISTMP#2|) '|pointer|) (PROGN (SETQ |ISTMP#3| (CDR |ISTMP#2|)) (AND (CONSP |ISTMP#3|) (NULL (CDR |ISTMP#3|))))))))) '|fixnum|) (T "object"))))) (DEFUN |genGCLnativeTranslation,gclArgInC| (|x| |a|) (PROG (|y| |c|) (RETURN (COND ((|objectMember?| |x| |$NativeSimpleDataTypes|) |a|) ((EQ |x| '|string|) |a|) (T (SETQ |c| (CAADR |x|)) (SETQ |y| (CADADR |x|)) (COND ((EQ |c| '|pointer|) |a|) ((EQ |y| '|char|) (CONCAT |a| "->st.st_self")) ((EQ |y| '|byte|) (CONCAT |a| "->ust.ust_self")) ((EQ |y| '|int|) (CONCAT |a| "->fixa.fixa_self")) ((EQ |y| '|float|) (CONCAT |a| "->sfa.sfa_self")) ((EQ |y| '|double|) (CONCAT |a| "->lfa.lfa_self")) (T (|coreError| "unknown argument type")))))))) (DEFUN |genGCLnativeTranslation,gclArgsInC| (|x| |a|) (CONCAT (|genGCLnativeTranslation,gclArgInC| (CAR |x|) (CAR |a|)) (COND ((CDR |x|) ", ") (T "")))) (DEFUN |genECLnativeTranslation| (|op| |s| |t| |op'|) (PROG (|rettype| |argtypes| |args|) (RETURN (PROGN (SETQ |args| NIL) (SETQ |argtypes| NIL) (LET ((|bfVar#180| |s|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#180|) (PROGN (SETQ |x| (CAR |bfVar#180|)) NIL)) (RETURN NIL)) (T (SETQ |argtypes| (CONS (|nativeArgumentType| |x|) |argtypes|)) (SETQ |args| (CONS (GENSYM) |args|)))) (SETQ |bfVar#180| (CDR |bfVar#180|)))) (SETQ |args| (|reverse| |args|)) (SETQ |rettype| (|nativeReturnType| |t|)) (LIST (LIST 'DEFUN |op| |args| (LIST (|bfColonColon| 'FFI 'C-INLINE) |args| (|reverse!| |argtypes|) |rettype| (|genECLnativeTranslation,callTemplate| |op'| (LENGTH |args|) |s|) :ONE-LINER T))))))) (DEFUN |genECLnativeTranslation,callTemplate| (|op| |n| |s|) (LET ((|bfVar#185| "") (|bfVar#187| (CONS (SYMBOL-NAME |op|) (CONS "(" (|append| (LET ((|bfVar#183| NIL) (|bfVar#184| NIL) (|bfVar#181| (- |n| 1)) (|i| 0) (|bfVar#182| |s|) (|x| NIL)) (LOOP (COND ((OR (> |i| |bfVar#181|) (ATOM |bfVar#182|) (PROGN (SETQ |x| (CAR |bfVar#182|)) NIL)) (RETURN |bfVar#183|)) ((NULL |bfVar#183|) (SETQ |bfVar#183| (CONS (|genECLnativeTranslation,sharpArg| |i| |x|) NIL)) (SETQ |bfVar#184| |bfVar#183|)) (T (RPLACD |bfVar#184| (CONS (|genECLnativeTranslation,sharpArg| |i| |x|) NIL)) (SETQ |bfVar#184| (CDR |bfVar#184|)))) (SETQ |i| (+ |i| 1)) (SETQ |bfVar#182| (CDR |bfVar#182|)))) (CONS ")" NIL))))) (|bfVar#186| NIL)) (LOOP (COND ((OR (ATOM |bfVar#187|) (PROGN (SETQ |bfVar#186| (CAR |bfVar#187|)) NIL)) (RETURN |bfVar#185|)) (T (SETQ |bfVar#185| (CONCAT |bfVar#185| |bfVar#186|)))) (SETQ |bfVar#187| (CDR |bfVar#187|))))) (DEFUN |genECLnativeTranslation,sharpArg| (|i| |x|) (COND ((EQL |i| 0) (CONCAT "(#0)" (|genECLnativeTranslation,selectDatum| |x|))) (T (CONCAT "," "(#" (WRITE-TO-STRING |i|) ")" (|genECLnativeTranslation,selectDatum| |x|))))) (DEFUN |genECLnativeTranslation,selectDatum| (|x|) (PROG (|y| |c|) (RETURN (COND ((|isSimpleNativeType| |x|) "") (T (SETQ |c| (CAADR |x|)) (SETQ |y| (CADADR |x|)) (COND ((EQ |c| '|buffer|) (COND ((OR (EQ |y| '|char|) (EQ |y| '|byte|)) (COND ((< |$ECLVersionNumber| 90100) "->vector.self.ch") ((EQ |y| '|char|) "->vector.self.i8") (T "->vector.self.b8"))) ((EQ |y| '|int|) "->vector.self.fix") ((EQ |y| '|float|) "->vector.self.sf") ((EQ |y| '|double|) "->vector.self.df") (T (|coreError| "unknown argument to buffer type constructor")))) ((EQ |c| '|pointer|) "") (T (|coreError| "unknown type constructor")))))))) (DEFUN |genCLISPnativeTranslation| (|op| |s| |t| |op'|) (PROG (|forwardingFun| |ISTMP#2| |p| |fixups| |q| |call| |localPairs| |y| |x| |ISTMP#1| |a| |foreignDecl| |unstableArgs| |parms| |n| |argtypes| |rettype|) (DECLARE (SPECIAL |$foreignsDefsForCLisp|)) (RETURN (PROGN (SETQ |rettype| (|nativeReturnType| |t|)) (SETQ |argtypes| (LET ((|bfVar#189| NIL) (|bfVar#190| NIL) (|bfVar#188| |s|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#188|) (PROGN (SETQ |x| (CAR |bfVar#188|)) NIL)) (RETURN |bfVar#189|)) ((NULL |bfVar#189|) (SETQ |bfVar#189| #0=(CONS (|nativeArgumentType| |x|) NIL)) (SETQ |bfVar#190| |bfVar#189|)) (T (RPLACD |bfVar#190| #0#) (SETQ |bfVar#190| (CDR |bfVar#190|)))) (SETQ |bfVar#188| (CDR |bfVar#188|))))) (SETQ |n| (INTERN (CONCAT (SYMBOL-NAME |op|) "%clisp-hack"))) (SETQ |parms| (LET ((|bfVar#192| NIL) (|bfVar#193| NIL) (|bfVar#191| |s|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#191|) (PROGN (SETQ |x| (CAR |bfVar#191|)) NIL)) (RETURN |bfVar#192|)) ((NULL |bfVar#192|) (SETQ |bfVar#192| #1=(CONS (GENSYM "parm") NIL)) (SETQ |bfVar#193| |bfVar#192|)) (T (RPLACD |bfVar#193| #1#) (SETQ |bfVar#193| (CDR |bfVar#193|)))) (SETQ |bfVar#191| (CDR |bfVar#191|))))) (SETQ |unstableArgs| NIL) (LET ((|bfVar#194| |parms|) (|p| NIL) (|bfVar#195| |s|) (|x| NIL) (|bfVar#196| |argtypes|) (|y| NIL)) (LOOP (COND ((OR (ATOM |bfVar#194|) (PROGN (SETQ |p| (CAR |bfVar#194|)) NIL) (ATOM |bfVar#195|) (PROGN (SETQ |x| (CAR |bfVar#195|)) NIL) (ATOM |bfVar#196|) (PROGN (SETQ |y| (CAR |bfVar#196|)) NIL)) (RETURN NIL)) ((|needsStableReference?| |x|) (IDENTITY (SETQ |unstableArgs| (CONS (CONS |p| (CONS |x| |y|)) |unstableArgs|))))) (SETQ |bfVar#194| (CDR |bfVar#194|)) (SETQ |bfVar#195| (CDR |bfVar#195|)) (SETQ |bfVar#196| (CDR |bfVar#196|)))) (SETQ |foreignDecl| (LIST (|bfColonColon| 'FFI 'DEF-CALL-OUT) |n| (LIST :NAME (SYMBOL-NAME |op'|)) (CONS :ARGUMENTS (LET ((|bfVar#199| NIL) (|bfVar#200| NIL) (|bfVar#197| |argtypes|) (|x| NIL) (|bfVar#198| |parms|) (|a| NIL)) (LOOP (COND ((OR (ATOM |bfVar#197|) (PROGN (SETQ |x| (CAR |bfVar#197|)) NIL) (ATOM |bfVar#198|) (PROGN (SETQ |a| (CAR |bfVar#198|)) NIL)) (RETURN |bfVar#199|)) ((NULL |bfVar#199|) (SETQ |bfVar#199| #2=(CONS (LIST |a| |x|) NIL)) (SETQ |bfVar#200| |bfVar#199|)) (T (RPLACD |bfVar#200| #2#) (SETQ |bfVar#200| (CDR |bfVar#200|)))) (SETQ |bfVar#197| (CDR |bfVar#197|)) (SETQ |bfVar#198| (CDR |bfVar#198|))))) (LIST :RETURN-TYPE |rettype|) (LIST :LANGUAGE :STDC))) (SETQ |forwardingFun| (COND ((NULL |unstableArgs|) (LIST 'DEFUN |op| |parms| (CONS |n| |parms|))) (T (SETQ |localPairs| (LET ((|bfVar#203| NIL) (|bfVar#204| NIL) (|bfVar#202| |unstableArgs|) (|bfVar#201| NIL)) (LOOP (COND ((OR (ATOM |bfVar#202|) (PROGN (SETQ |bfVar#201| (CAR |bfVar#202|)) NIL)) (RETURN |bfVar#203|)) (T (AND (CONSP |bfVar#201|) (PROGN (SETQ |a| (CAR |bfVar#201|)) (SETQ |ISTMP#1| (CDR |bfVar#201|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |x| (CAR |ISTMP#1|)) (SETQ |y| (CDR |ISTMP#1|)) T))) (COND ((NULL |bfVar#203|) (SETQ |bfVar#203| #3=(CONS (CONS |a| (CONS |x| (CONS |y| (GENSYM "loc")))) NIL)) (SETQ |bfVar#204| |bfVar#203|)) (T (RPLACD |bfVar#204| #3#) (SETQ |bfVar#204| (CDR |bfVar#204|))))))) (SETQ |bfVar#202| (CDR |bfVar#202|))))) (SETQ |call| (CONS |n| (LET ((|bfVar#206| NIL) (|bfVar#207| NIL) (|bfVar#205| |parms|) (|p| NIL)) (LOOP (COND ((OR (ATOM |bfVar#205|) (PROGN (SETQ |p| (CAR |bfVar#205|)) NIL)) (RETURN |bfVar#206|)) ((NULL |bfVar#206|) (SETQ |bfVar#206| (CONS (|genCLISPnativeTranslation,actualArg| |p| |localPairs|) NIL)) (SETQ |bfVar#207| |bfVar#206|)) (T (RPLACD |bfVar#207| (CONS (|genCLISPnativeTranslation,actualArg| |p| |localPairs|) NIL)) (SETQ |bfVar#207| (CDR |bfVar#207|)))) (SETQ |bfVar#205| (CDR |bfVar#205|)))))) (SETQ |call| (PROGN (SETQ |fixups| (LET ((|bfVar#209| NIL) (|bfVar#210| NIL) (|bfVar#208| |localPairs|) (|p| NIL)) (LOOP (COND ((OR (ATOM |bfVar#208|) (PROGN (SETQ |p| (CAR |bfVar#208|)) NIL)) (RETURN |bfVar#209|)) (T (AND (NOT (NULL (SETQ |q| (|genCLISPnativeTranslation,copyBack| |p|)))) (COND ((NULL |bfVar#209|) (SETQ |bfVar#209| (CONS |q| NIL)) (SETQ |bfVar#210| |bfVar#209|)) (T (RPLACD |bfVar#210| (CONS |q| NIL)) (SETQ |bfVar#210| (CDR |bfVar#210|))))))) (SETQ |bfVar#208| (CDR |bfVar#208|))))) (COND ((NULL |fixups|) (LIST |call|)) (T (LIST (CONS 'PROG1 (CONS |call| |fixups|))))))) (LET ((|bfVar#212| |localPairs|) (|bfVar#211| NIL)) (LOOP (COND ((OR (ATOM |bfVar#212|) (PROGN (SETQ |bfVar#211| (CAR |bfVar#212|)) NIL)) (RETURN NIL)) (T (AND (CONSP |bfVar#211|) (PROGN (SETQ |p| (CAR |bfVar#211|)) (SETQ |ISTMP#1| (CDR |bfVar#211|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |x| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (PROGN (SETQ |y| (CAR |ISTMP#2|)) (SETQ |a| (CDR |ISTMP#2|)) T))))) (SETQ |call| (LIST (CONS (|bfColonColon| 'FFI 'WITH-FOREIGN-OBJECT) (CONS (LIST |a| (LIST 'FUNCALL (LIST 'INTERN "getCLISPType" "BOOTTRAN") |p|) |p|) |call|))))))) (SETQ |bfVar#212| (CDR |bfVar#212|)))) (CONS 'DEFUN (CONS |op| (CONS |parms| |call|)))))) (SETQ |$foreignsDefsForCLisp| (CONS |foreignDecl| |$foreignsDefsForCLisp|)) (LIST |forwardingFun|))))) (DEFUN |genCLISPnativeTranslation,copyBack| (|bfVar#213|) (PROG (|a| |y| |x| |p|) (RETURN (PROGN (SETQ |p| (CAR |bfVar#213|)) (SETQ |x| (CADR . #0=(|bfVar#213|))) (SETQ |y| (CADDR . #0#)) (SETQ |a| (CDDDR . #0#)) (COND ((AND (CONSP |x|) (EQ (CAR |x|) '|readonly|)) NIL) (T (LIST 'SETF |p| (LIST (|bfColonColon| 'FFI 'FOREIGN-VALUE) |a|)))))))) (DEFUN |genCLISPnativeTranslation,actualArg| (|p| |pairs|) (PROG (|a'|) (RETURN (COND ((SETQ |a'| (CDR (ASSOC |p| |pairs|))) (CDR (CDR |a'|))) (T |p|))))) (DEFUN |getCLISPType| (|a|) (LIST (|bfColonColon| 'FFI 'C-ARRAY) (LENGTH |a|))) (DEFUN |genSBCLnativeTranslation| (|op| |s| |t| |op'|) (PROG (|newArgs| |unstableArgs| |args| |argtypes| |rettype|) (RETURN (PROGN (SETQ |rettype| (|nativeReturnType| |t|)) (SETQ |argtypes| (LET ((|bfVar#215| NIL) (|bfVar#216| NIL) (|bfVar#214| |s|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#214|) (PROGN (SETQ |x| (CAR |bfVar#214|)) NIL)) (RETURN |bfVar#215|)) ((NULL |bfVar#215|) (SETQ |bfVar#215| #0=(CONS (|nativeArgumentType| |x|) NIL)) (SETQ |bfVar#216| |bfVar#215|)) (T (RPLACD |bfVar#216| #0#) (SETQ |bfVar#216| (CDR |bfVar#216|)))) (SETQ |bfVar#214| (CDR |bfVar#214|))))) (SETQ |args| (LET ((|bfVar#218| NIL) (|bfVar#219| NIL) (|bfVar#217| |s|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#217|) (PROGN (SETQ |x| (CAR |bfVar#217|)) NIL)) (RETURN |bfVar#218|)) ((NULL |bfVar#218|) (SETQ |bfVar#218| #1=(CONS (GENSYM) NIL)) (SETQ |bfVar#219| |bfVar#218|)) (T (RPLACD |bfVar#219| #1#) (SETQ |bfVar#219| (CDR |bfVar#219|)))) (SETQ |bfVar#217| (CDR |bfVar#217|))))) (SETQ |unstableArgs| NIL) (SETQ |newArgs| NIL) (LET ((|bfVar#220| |args|) (|a| NIL) (|bfVar#221| |s|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#220|) (PROGN (SETQ |a| (CAR |bfVar#220|)) NIL) (ATOM |bfVar#221|) (PROGN (SETQ |x| (CAR |bfVar#221|)) NIL)) (RETURN NIL)) (T (SETQ |newArgs| (CONS (|coerceToNativeType| |a| |x|) |newArgs|)) (COND ((|needsStableReference?| |x|) (SETQ |unstableArgs| (CONS |a| |unstableArgs|)))))) (SETQ |bfVar#220| (CDR |bfVar#220|)) (SETQ |bfVar#221| (CDR |bfVar#221|)))) (SETQ |op'| (COND ((|%hasFeature| :WIN32) (CONCAT "_" (SYMBOL-NAME |op'|))) (T (SYMBOL-NAME |op'|)))) (COND ((NULL |unstableArgs|) (LIST (LIST 'DEFUN |op| |args| (CONS (INTERN "ALIEN-FUNCALL" "SB-ALIEN") (CONS (LIST (INTERN "EXTERN-ALIEN" "SB-ALIEN") |op'| (CONS 'FUNCTION (CONS |rettype| |argtypes|))) |args|))))) (T (LIST (LIST 'DEFUN |op| |args| (LIST (|bfColonColon| 'SB-SYS 'WITH-PINNED-OBJECTS) (|reverse!| |unstableArgs|) (CONS (INTERN "ALIEN-FUNCALL" "SB-ALIEN") (CONS (LIST (INTERN "EXTERN-ALIEN" "SB-ALIEN") |op'| (CONS 'FUNCTION (CONS |rettype| |argtypes|))) (|reverse!| |newArgs|)))))))))))) (DEFUN |genCLOZUREnativeTranslation| (|op| |s| |t| |op'|) (PROG (|call| |p'| |ISTMP#3| |ISTMP#2| |ISTMP#1| |aryPairs| |strPairs| |parms| |argtypes| |rettype|) (RETURN (PROGN (SETQ |rettype| (|nativeReturnType| |t|)) (SETQ |argtypes| (LET ((|bfVar#223| NIL) (|bfVar#224| NIL) (|bfVar#222| |s|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#222|) (PROGN (SETQ |x| (CAR |bfVar#222|)) NIL)) (RETURN |bfVar#223|)) ((NULL |bfVar#223|) (SETQ |bfVar#223| #0=(CONS (|nativeArgumentType| |x|) NIL)) (SETQ |bfVar#224| |bfVar#223|)) (T (RPLACD |bfVar#224| #0#) (SETQ |bfVar#224| (CDR |bfVar#224|)))) (SETQ |bfVar#222| (CDR |bfVar#222|))))) (SETQ |parms| (LET ((|bfVar#226| NIL) (|bfVar#227| NIL) (|bfVar#225| |s|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#225|) (PROGN (SETQ |x| (CAR |bfVar#225|)) NIL)) (RETURN |bfVar#226|)) ((NULL |bfVar#226|) (SETQ |bfVar#226| #1=(CONS (GENSYM "parm") NIL)) (SETQ |bfVar#227| |bfVar#226|)) (T (RPLACD |bfVar#227| #1#) (SETQ |bfVar#227| (CDR |bfVar#227|)))) (SETQ |bfVar#225| (CDR |bfVar#225|))))) (SETQ |strPairs| NIL) (SETQ |aryPairs| NIL) (LET ((|bfVar#228| |parms|) (|p| NIL) (|bfVar#229| |s|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#228|) (PROGN (SETQ |p| (CAR |bfVar#228|)) NIL) (ATOM |bfVar#229|) (PROGN (SETQ |x| (CAR |bfVar#229|)) NIL)) (RETURN NIL)) ((EQ |x| '|string|) (SETQ |strPairs| (CONS (CONS |p| (GENSYM "loc")) |strPairs|))) ((AND (CONSP |x|) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |ISTMP#2| (CAR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (EQ (CAR |ISTMP#2|) '|buffer|) (PROGN (SETQ |ISTMP#3| (CDR |ISTMP#2|)) (AND (CONSP |ISTMP#3|) (NULL (CDR |ISTMP#3|))))))))) (SETQ |aryPairs| (CONS (CONS |p| (GENSYM "loc")) |aryPairs|)))) (SETQ |bfVar#228| (CDR |bfVar#228|)) (SETQ |bfVar#229| (CDR |bfVar#229|)))) (COND ((|%hasFeature| :DARWIN) (SETQ |op'| (CONCAT '_ |op'|)))) (SETQ |call| (CONS (|bfColonColon| 'CCL 'EXTERNAL-CALL) (CONS (STRING |op'|) (|append| (LET ((|bfVar#232| NIL) (|bfVar#233| NIL) (|bfVar#230| |argtypes|) (|x| NIL) (|bfVar#231| |parms|) (|p| NIL)) (LOOP (COND ((OR (ATOM |bfVar#230|) (PROGN (SETQ |x| (CAR |bfVar#230|)) NIL) (ATOM |bfVar#231|) (PROGN (SETQ |p| (CAR |bfVar#231|)) NIL)) (RETURN |bfVar#232|)) (T (LET ((|bfVar#234| (LIST |x| (COND ((SETQ |p'| (ASSOC |p| |strPairs|)) (CDR |p'|)) ((SETQ |p'| (ASSOC |p| |aryPairs|)) (CDR |p'|)) (T |p|))))) (COND ((NULL |bfVar#234|) NIL) ((NULL |bfVar#232|) (SETQ |bfVar#232| |bfVar#234|) (SETQ |bfVar#233| (|lastNode| |bfVar#232|))) (T (RPLACD |bfVar#233| |bfVar#234|) (SETQ |bfVar#233| (|lastNode| |bfVar#233|))))))) (SETQ |bfVar#230| (CDR |bfVar#230|)) (SETQ |bfVar#231| (CDR |bfVar#231|)))) (CONS |rettype| NIL))))) (COND ((EQ |t| '|string|) (SETQ |call| (LIST (|bfColonColon| 'CCL 'GET-CSTRING) |call|)))) (LET ((|bfVar#235| |aryPairs|) (|arg| NIL)) (LOOP (COND ((OR (ATOM |bfVar#235|) (PROGN (SETQ |arg| (CAR |bfVar#235|)) NIL)) (RETURN NIL)) (T (SETQ |call| (LIST (|bfColonColon| 'CCL 'WITH-POINTER-TO-IVECTOR) (LIST (CDR |arg|) (CAR |arg|)) |call|)))) (SETQ |bfVar#235| (CDR |bfVar#235|)))) (COND (|strPairs| (SETQ |call| (LIST (|bfColonColon| 'CCL 'WITH-CSTRS) (LET ((|bfVar#237| NIL) (|bfVar#238| NIL) (|bfVar#236| |strPairs|) (|arg| NIL)) (LOOP (COND ((OR (ATOM |bfVar#236|) (PROGN (SETQ |arg| (CAR |bfVar#236|)) NIL)) (RETURN |bfVar#237|)) ((NULL |bfVar#237|) (SETQ |bfVar#237| #2=(CONS (LIST (CDR |arg|) (CAR |arg|)) NIL)) (SETQ |bfVar#238| |bfVar#237|)) (T (RPLACD |bfVar#238| #2#) (SETQ |bfVar#238| (CDR |bfVar#238|)))) (SETQ |bfVar#236| (CDR |bfVar#236|)))) |call|)))) (LIST (LIST 'DEFUN |op| |parms| |call|)))))) (DEFUN |genImportDeclaration| (|op| |sig|) (PROG (|s| |t| |m| |ISTMP#2| |op'| |ISTMP#1|) (RETURN (COND ((NOT (AND (CONSP |sig|) (EQ (CAR |sig|) '|%Signature|) (PROGN (SETQ |ISTMP#1| (CDR |sig|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |op'| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |m| (CAR |ISTMP#2|)) T))))))) (|coreError| "invalid signature")) ((NOT (AND (CONSP |m|) (EQ (CAR |m|) '|%Mapping|) (PROGN (SETQ |ISTMP#1| (CDR |m|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |t| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (NULL (CDR |ISTMP#2|)) (PROGN (SETQ |s| (CAR |ISTMP#2|)) T))))))) (|coreError| "invalid function type")) (T (COND ((AND |s| (SYMBOLP |s|)) (SETQ |s| (LIST |s|)))) (COND ((|%hasFeature| :GCL) (|genGCLnativeTranslation| |op| |s| |t| |op'|)) ((|%hasFeature| :SBCL) (|genSBCLnativeTranslation| |op| |s| |t| |op'|)) ((|%hasFeature| :CLISP) (|genCLISPnativeTranslation| |op| |s| |t| |op'|)) ((|%hasFeature| :ECL) (|genECLnativeTranslation| |op| |s| |t| |op'|)) ((|%hasFeature| :CLOZURE) (|genCLOZUREnativeTranslation| |op| |s| |t| |op'|)) (T (|fatalError| "import declaration not implemented for this Lisp"))))))))