Skip to content

Commit

Permalink
bugfixes
Browse files Browse the repository at this point in the history
  • Loading branch information
jlongster committed Apr 14, 2012
1 parent a5d40cf commit 5f50f24
Show file tree
Hide file tree
Showing 6 changed files with 94 additions and 47 deletions.
37 changes: 25 additions & 12 deletions backends/js.js
Expand Up @@ -151,7 +151,21 @@ return fold((function(el,acc){
return (acc + 1); return (acc + 1);
}),0,lst); }),0,lst);
}); });
var list_dash_append = (function(lst1,lst2){ var list_dash_append = (function(){
var lsts = vector_dash__gt_list(Array.prototype.slice.call(arguments, 0));
var l_star_ = (function() {if(null_p_(lsts)) {return _emptylst;
} else {return lsts;
}})()
;
return (function() {if(null_p_(l_star_)) {return _emptylst;
} else {return (function() {if(null_p_(cdr(l_star_))) {return car(l_star_);
} else {return _list_dash_append(car(l_star_),apply(list_dash_append,cdr(l_star_)));
}})()
;
}})()
;
});
var _list_dash_append = (function(lst1,lst2){
return ((function() {var loop = (function(lst){ return ((function() {var loop = (function(lst){
return (function() {if(null_p_(lst)) {return lst2; return (function() {if(null_p_(lst)) {return lst2;
} else {return cons(car(lst),loop(cdr(lst))); } else {return cons(car(lst),loop(cdr(lst)));
Expand Down Expand Up @@ -468,24 +482,22 @@ var o38 = obj2;
return loop(o37,o38); return loop(o37,o38);
}))(); }))();
}))(); }))();
} else {return (function() {if((vector_p_(obj1) && vector_p_(obj2))) {return ((function() {return ((function() {var loop = (function(i){ } else {return (function() {if((vector_p_(obj1) && vector_p_(obj2))) {return ((function() {return (function() {if(not(_eq_(obj1["length"],obj2["length"]))) {return false;
return (function() {if(((i < obj1["length"]) && (i < obj2["length"]))) {return ((function() {return true; } else {return ((function() {var loop = (function(i){
}))(); return (function() {if((i < obj1["length"])) {return (function() {if(_eq_(vector_dash_ref(obj1,i),vector_dash_ref(obj2,i))) {return vector("__tco_call",(function() {return loop((i + 1));
} else {return (function() {if(((i < obj1["length"]) || (i < obj2["length"]))) {return ((function() {return false; }));
}))();
} else {return ((function() {return (function() {if(equal_p_(vector_dash_ref(obj1,i),vector_dash_ref(obj2,i))) {return loop((i + 1));
} else {return false; } else {return false;
}})() }})()
; ;
}))(); } else {return true;
}})()
;
}})() }})()
; ;
}); });
var o39 = 0; var o39 = 0;
return loop(o39); return trampoline(loop(o39));
}))(); }))();
}})()
;
}))(); }))();
} else {return (function() {if((dict_p_(obj1) && dict_p_(obj2))) {return ((function() {return ((function() {var o40 = (function(keys1,keys2){ } else {return (function() {if((dict_p_(obj1) && dict_p_(obj2))) {return ((function() {return ((function() {var o40 = (function(keys1,keys2){
return (eq_p_(length(keys1),length(keys2)) && ((function() {var loop = (function(lst){ return (eq_p_(length(keys1),length(keys2)) && ((function() {var loop = (function(lst){
Expand Down Expand Up @@ -821,6 +833,7 @@ name = name["replace"](RegExp(">","g"),"_gt_");
name = name["replace"](RegExp("<","g"),"_lt_"); name = name["replace"](RegExp("<","g"),"_lt_");
name = name["replace"](RegExp("%","g"),"_per_"); name = name["replace"](RegExp("%","g"),"_per_");
name = name["replace"](RegExp("=","g"),"_eq_"); name = name["replace"](RegExp("=","g"),"_eq_");
name = name["replace"](RegExp("\\/","g"),"_slash_");
name = name["replace"](RegExp("\\*","g"),"_star_"); name = name["replace"](RegExp("\\*","g"),"_star_");
name = name["replace"](RegExp("\\+","g"),"_plus_"); name = name["replace"](RegExp("\\+","g"),"_plus_");
return write(name); return write(name);
Expand Down Expand Up @@ -995,7 +1008,7 @@ write_dash_string(cadr(el));
return write(");"); return write(");");
}),args); }),args);
}); });
return dict("\uFDD1write-runtime",write_dash_runtime,"\uFDD1write-number",write_dash_number,"\uFDD1write-string",write_dash_string,"\uFDD1write-boolean",write_dash_boolean,"\uFDD1write-term",write_dash_term,"\uFDD1write-symbol",write_dash_symbol,"\uFDD1write-empty-list",write_dash_empty_dash_list,"\uFDD1write-set",write_dash_set,"\uFDD1write-set!",write_dash_set_excl_,"\uFDD1write-if",write_dash_if,"\uFDD1write-lambda",write_dash_lambda,"\uFDD1write-func-call",write_dash_func_dash_call,"\uFDD1write-raw-code",write_dash_raw_dash_code,"\uFDD1write-require",write_dash_require,"\uFDD1write-and",make_dash_op_dash_writer("&&"),"\uFDD1write-or",make_dash_op_dash_writer("||"),"\uFDD1write-add",make_dash_op_dash_writer("+"),"\uFDD1write-subtract",make_dash_op_dash_writer("-"),"\uFDD1write-multiply",make_dash_op_dash_writer("*"),"\uFDD1write-divide",make_dash_op_dash_writer("/"),"\uFDD1write-gt",make_dash_op_dash_writer(">"),"\uFDD1write-lt",make_dash_op_dash_writer("<"),"\uFDD1write-mod",make_dash_op_dash_writer("%"),"\uFDD1make-fresh",make_dash_fresh,"\uFDD1get-code",(function() {return code["join"](""); return dict("\uFDD1write-runtime",write_dash_runtime,"\uFDD1write-number",write_dash_number,"\uFDD1write-string",write_dash_string,"\uFDD1write-boolean",write_dash_boolean,"\uFDD1write-term",write_dash_term,"\uFDD1write-symbol",write_dash_symbol,"\uFDD1write-empty-list",write_dash_empty_dash_list,"\uFDD1write-set",write_dash_set,"\uFDD1write-set!",write_dash_set_excl_,"\uFDD1write-if",write_dash_if,"\uFDD1write-lambda",write_dash_lambda,"\uFDD1write-func-call",write_dash_func_dash_call,"\uFDD1write-raw-code",write_dash_raw_dash_code,"\uFDD1write-require",write_dash_require,"\uFDD1write-and",make_dash_op_dash_writer("&&"),"\uFDD1write-or",make_dash_op_dash_writer("||"),"\uFDD1write-add",make_dash_op_dash_writer("+"),"\uFDD1write-subtract",make_dash_op_dash_writer("-"),"\uFDD1write-multiply",make_dash_op_dash_writer("*"),"\uFDD1write-divide",make_dash_op_dash_writer("/"),"\uFDD1write-gt",make_dash_op_dash_writer(">"),"\uFDD1write-lt",make_dash_op_dash_writer("<"),"\uFDD1write-gteq",make_dash_op_dash_writer(">="),"\uFDD1write-lteq",make_dash_op_dash_writer("<="),"\uFDD1write-mod",make_dash_op_dash_writer("%"),"\uFDD1write-rshift",make_dash_op_dash_writer(">>"),"\uFDD1write-lshift",make_dash_op_dash_writer("<<"),"\uFDD1write-bitwise-or",make_dash_op_dash_writer("|"),"\uFDD1write-bitwise-and",make_dash_op_dash_writer("&"),"\uFDD1make-fresh",make_dash_fresh,"\uFDD1get-code",(function() {return code["join"]("");
})); }));
}); });
module["exports"] = generator; module["exports"] = generator;
Expand Down
7 changes: 7 additions & 0 deletions backends/js.ol
Expand Up @@ -92,6 +92,7 @@
(set! name (name.replace (RegExp "<" "g") "_lt_")) (set! name (name.replace (RegExp "<" "g") "_lt_"))
(set! name (name.replace (RegExp "%" "g") "_per_")) (set! name (name.replace (RegExp "%" "g") "_per_"))
(set! name (name.replace (RegExp "=" "g") "_eq_")) (set! name (name.replace (RegExp "=" "g") "_eq_"))
(set! name (name.replace (RegExp "\\/" "g") "_slash_"))
(set! name (name.replace (RegExp "\\*" "g") "_star_")) (set! name (name.replace (RegExp "\\*" "g") "_star_"))
(set! name (name.replace (RegExp "\\+" "g") "_plus_")) (set! name (name.replace (RegExp "\\+" "g") "_plus_"))
(write name)) (write name))
Expand Down Expand Up @@ -270,7 +271,13 @@
:write-divide (make-op-writer "/") :write-divide (make-op-writer "/")
:write-gt (make-op-writer ">") :write-gt (make-op-writer ">")
:write-lt (make-op-writer "<") :write-lt (make-op-writer "<")
:write-gteq (make-op-writer ">=")
:write-lteq (make-op-writer "<=")
:write-mod (make-op-writer "%") :write-mod (make-op-writer "%")
:write-rshift (make-op-writer ">>")
:write-lshift (make-op-writer "<<")
:write-bitwise-or (make-op-writer "|")
:write-bitwise-and (make-op-writer "&")


:make-fresh make-fresh :make-fresh make-fresh
:get-code (lambda () (code.join ""))}) :get-code (lambda () (code.join ""))})
Expand Down
24 changes: 14 additions & 10 deletions compiler.js
Expand Up @@ -468,24 +468,22 @@ var o38 = obj2;
return loop(o37,o38); return loop(o37,o38);
}))(); }))();
}))(); }))();
} else {return (function() {if((vector_p_(obj1) && vector_p_(obj2))) {return ((function() {return ((function() {var loop = (function(i){ } else {return (function() {if((vector_p_(obj1) && vector_p_(obj2))) {return ((function() {return (function() {if(not(_eq_(obj1["length"],obj2["length"]))) {return false;
return (function() {if(((i < obj1["length"]) && (i < obj2["length"]))) {return ((function() {return true; } else {return ((function() {var loop = (function(i){
}))(); return (function() {if((i < obj1["length"])) {return (function() {if(_eq_(vector_dash_ref(obj1,i),vector_dash_ref(obj2,i))) {return vector("__tco_call",(function() {return loop((i + 1));
} else {return (function() {if(((i < obj1["length"]) || (i < obj2["length"]))) {return ((function() {return false; }));
}))();
} else {return ((function() {return (function() {if(equal_p_(vector_dash_ref(obj1,i),vector_dash_ref(obj2,i))) {return loop((i + 1));
} else {return false; } else {return false;
}})() }})()
; ;
}))(); } else {return true;
}})()
;
}})() }})()
; ;
}); });
var o39 = 0; var o39 = 0;
return loop(o39); return trampoline(loop(o39));
}))(); }))();
}})()
;
}))(); }))();
} else {return (function() {if((dict_p_(obj1) && dict_p_(obj2))) {return ((function() {return ((function() {var o40 = (function(keys1,keys2){ } else {return (function() {if((dict_p_(obj1) && dict_p_(obj2))) {return ((function() {return ((function() {var o40 = (function(keys1,keys2){
return (eq_p_(length(keys1),length(keys2)) && ((function() {var loop = (function(lst){ return (eq_p_(length(keys1),length(keys2)) && ((function() {var loop = (function(lst){
Expand Down Expand Up @@ -1340,6 +1338,12 @@ install_dash_native("\uFDD1*","\uFDD1write-multiply",verify_dash_not_dash_single
install_dash_native("\uFDD1/","\uFDD1write-divide",verify_dash_not_dash_single); install_dash_native("\uFDD1/","\uFDD1write-divide",verify_dash_not_dash_single);
install_dash_native("\uFDD1>","\uFDD1write-gt",verify_dash_not_dash_single); install_dash_native("\uFDD1>","\uFDD1write-gt",verify_dash_not_dash_single);
install_dash_native("\uFDD1<","\uFDD1write-lt",verify_dash_not_dash_single); install_dash_native("\uFDD1<","\uFDD1write-lt",verify_dash_not_dash_single);
install_dash_native("\uFDD1<=","\uFDD1write-lteq",verify_dash_not_dash_single);
install_dash_native("\uFDD1>=","\uFDD1write-gteq",verify_dash_not_dash_single);
install_dash_native("\uFDD1>>","\uFDD1write-rshift",verify_dash_not_dash_single);
install_dash_native("\uFDD1<<","\uFDD1write-lshift",verify_dash_not_dash_single);
install_dash_native("\uFDD1bitwise-or","\uFDD1write-bitwise-or",verify_dash_not_dash_single);
install_dash_native("\uFDD1bitwise-and","\uFDD1write-bitwise-and",verify_dash_not_dash_single);
install_dash_native("\uFDD1%","\uFDD1write-mod",verify_dash_not_dash_single); install_dash_native("\uFDD1%","\uFDD1write-mod",verify_dash_not_dash_single);
install_dash_native("\uFDD1require","\uFDD1write-require",(function(form){ install_dash_native("\uFDD1require","\uFDD1write-require",(function(form){
verify_dash_not_dash_single(form); verify_dash_not_dash_single(form);
Expand Down
6 changes: 6 additions & 0 deletions compiler.ol
Expand Up @@ -452,6 +452,12 @@
(install-native '/ 'write-divide verify-not-single) (install-native '/ 'write-divide verify-not-single)
(install-native '> 'write-gt verify-not-single) (install-native '> 'write-gt verify-not-single)
(install-native '< 'write-lt verify-not-single) (install-native '< 'write-lt verify-not-single)
(install-native '<= 'write-lteq verify-not-single)
(install-native '>= 'write-gteq verify-not-single)
(install-native '>> 'write-rshift verify-not-single)
(install-native '<< 'write-lshift verify-not-single)
(install-native 'bitwise-or 'write-bitwise-or verify-not-single)
(install-native 'bitwise-and 'write-bitwise-and verify-not-single)
(install-native '% 'write-mod verify-not-single) (install-native '% 'write-mod verify-not-single)


(install-native 'require 'write-require (install-native 'require 'write-require
Expand Down
34 changes: 23 additions & 11 deletions runtime.js
Expand Up @@ -151,7 +151,21 @@ return fold((function(el,acc){
return (acc + 1); return (acc + 1);
}),0,lst); }),0,lst);
}); });
var list_dash_append = (function(lst1,lst2){ var list_dash_append = (function(){
var lsts = vector_dash__gt_list(Array.prototype.slice.call(arguments, 0));
var l_star_ = (function() {if(null_p_(lsts)) {return _emptylst;
} else {return lsts;
}})()
;
return (function() {if(null_p_(l_star_)) {return _emptylst;
} else {return (function() {if(null_p_(cdr(l_star_))) {return car(l_star_);
} else {return _list_dash_append(car(l_star_),apply(list_dash_append,cdr(l_star_)));
}})()
;
}})()
;
});
var _list_dash_append = (function(lst1,lst2){
return ((function() {var loop = (function(lst){ return ((function() {var loop = (function(lst){
return (function() {if(null_p_(lst)) {return lst2; return (function() {if(null_p_(lst)) {return lst2;
} else {return cons(car(lst),loop(cdr(lst))); } else {return cons(car(lst),loop(cdr(lst)));
Expand Down Expand Up @@ -468,24 +482,22 @@ var o38 = obj2;
return loop(o37,o38); return loop(o37,o38);
}))(); }))();
}))(); }))();
} else {return (function() {if((vector_p_(obj1) && vector_p_(obj2))) {return ((function() {return ((function() {var loop = (function(i){ } else {return (function() {if((vector_p_(obj1) && vector_p_(obj2))) {return ((function() {return (function() {if(not(_eq_(obj1["length"],obj2["length"]))) {return false;
return (function() {if(((i < obj1["length"]) && (i < obj2["length"]))) {return ((function() {return true; } else {return ((function() {var loop = (function(i){
}))(); return (function() {if((i < obj1["length"])) {return (function() {if(_eq_(vector_dash_ref(obj1,i),vector_dash_ref(obj2,i))) {return vector("__tco_call",(function() {return loop((i + 1));
} else {return (function() {if(((i < obj1["length"]) || (i < obj2["length"]))) {return ((function() {return false; }));
}))();
} else {return ((function() {return (function() {if(equal_p_(vector_dash_ref(obj1,i),vector_dash_ref(obj2,i))) {return loop((i + 1));
} else {return false; } else {return false;
}})() }})()
; ;
}))(); } else {return true;
}})()
;
}})() }})()
; ;
}); });
var o39 = 0; var o39 = 0;
return loop(o39); return trampoline(loop(o39));
}))(); }))();
}})()
;
}))(); }))();
} else {return (function() {if((dict_p_(obj1) && dict_p_(obj2))) {return ((function() {return ((function() {var o40 = (function(keys1,keys2){ } else {return (function() {if((dict_p_(obj1) && dict_p_(obj2))) {return ((function() {return ((function() {var o40 = (function(keys1,keys2){
return (eq_p_(length(keys1),length(keys2)) && ((function() {var loop = (function(lst){ return (eq_p_(length(keys1),length(keys2)) && ((function() {var loop = (function(lst){
Expand Down
33 changes: 19 additions & 14 deletions runtime.ol
Expand Up @@ -136,7 +136,16 @@
0 0
lst)) lst))


(define (list-append lst1 lst2) (define (list-append . lsts)
(define l* (if (null? lsts) '() lsts))
(if (null? l*)
'()
(if (null? (cdr l*))
(car l*)
(_list-append (car l*)
(apply list-append (cdr l*))))))

(define (_list-append lst1 lst2)
(let loop ((lst lst1)) (let loop ((lst lst1))
(if (null? lst) (if (null? lst)
lst2 lst2
Expand Down Expand Up @@ -357,19 +366,15 @@
#f))))) #f)))))
((and (vector? obj1) ((and (vector? obj1)
(vector? obj2)) (vector? obj2))
(let loop ((i 0)) (if (not (= obj1.length obj2.length))
(cond #f
((and (< i obj1.length) (let loop ((i 0))
(< i obj2.length)) (if (< i obj1.length)
#t) (if (= (vector-ref obj1 i)
((or (< i obj1.length) (vector-ref obj2 i))
(< i obj2.length)) (loop (+ i 1))
#f) #f)
(else #t))))
(if (equal? (vector-ref obj1 i)
(vector-ref obj2 i))
(loop (+ i 1))
#f)))))
((and (dict? obj1) ((and (dict? obj1)
(dict? obj2)) (dict? obj2))
(let ((keys1 (keys obj1)) (let ((keys1 (keys obj1))
Expand Down

0 comments on commit 5f50f24

Please sign in to comment.