melvinzhang / maru

A compiler to IA32 and REPL for maru in maru under 7k s-expressions
15 stars 2 forks source link

bin/eval fails with "undefined variable: string->double" on test-pepsi #1

Open melvinzhang opened 9 years ago

melvinzhang commented 9 years ago
make bin/eval
cd test-pepsi; ../bin/eval boot.l repl.l test-pepsi.l
eval.k: undefined variable: string->double
 20: (eval.0+39 (cons.0+42 (Fixed(Subr(quote)) lambda) (cons.0+42 args.2+2 (cons.0+42 (cons.0+42 (Fixed(Subr(quote)) with-instance-accessors) (cons.0+42 type.2+1 body.2+3)) (Fixed(Subr(quote)) nil)))))
 19: (<selector>-add-method.0+234 self.2+0 type.2+1 (eval.0+39 (cons.0+42 (Fixed(Subr(quote)) lambda) (cons.0+42 args.2+2 (cons.0+42 (cons.0+42 (Fixed(Subr(quote)) with-instance-accessors) (cons.0+42 type.2+1 body.2+3)) (Fixed(Subr(quote)) nil))))))
 18: (apply.0+38 (Fixed(Subr(or)) (array-at.0+63 (oop-at.0+60 (%typecheck.0+150 <selector>.0+227 self.2+0) 1) (type-of.0+51 (car.0+56 arguments.2+1))) (<selector>-inherit.0+232 (oop-at.0+60 (%typecheck.0+150 <selector>.0+227 self.2+0) 1) (type-of.0+51 (car.0+56 arguments.2+1))) (oop-at.0+60 (%typecheck.0+150 <selector>.0+227 self.2+0) 2)) arguments.2+1)
 17: (add-method.0+236 $ufloat.0+620 <temp-grammar>.0+564 (Fixed(Subr(quote)) (self)) (Fixed(Subr(quote)) ((let ((s)) (let ((pos (oop-at (%typecheck <parser-stream> self.source) 1))) (or (and (let ((_s (and (let ((pos (oop-at (%typecheck <parser-stream> self.source) 1))) (and (let ((pos (oop-at (%typecheck <parser-stream> self.source) 1))) (or (and (let ((_list_ (group))) (while (peg-invoke-rule $digit (quote $digit) self) (group-append _list_ self.result self.source)) (and (not (group-empty? _list_)) (let nil (set self.result (group->list! _list_)) 1))) (set self.result (parser-stream-match-string self.source ".")) (let ((_list_ (group))) (while (peg-invoke-rule $digit (quote $digit) self) (group-append _list_ self.result self.source)) (and (not (group-empty? _list_)) (let nil (set self.result (group->list! _list_)) 1))) (let ((_list_ (group))) (and (let ((pos (oop-at (%typecheck <parser-stream> self.source) 1))) (or (and (set self.result (parser-stream-match-string self.source "e")) (let ((_list_ (group))) (while (peg-invoke-rule $digit (quote $digit) self) (group-append _list_ self.result self.source)) (and (not (group-empty? _list_)) (let nil (set self.result (group->list! _list_)) 1)))) (let nil (set-oop-at (%typecheck <parser-stream> self.source) 1 pos) nil))) (group-append _list_ self.result self.source)) (set self.result (group->list! _list_)) 1)) (let nil (set-oop-at (%typecheck <parser-stream> self.source) 1 pos) nil))) (let nil (set self.result (list-from-to pos (oop-at (%typecheck <parser-stream> self.source) 1))) 1))) (set self.result (list->string self.result))))) (and _s (let nil (set s self.result) _s))) (peg-invoke-rule $_ (quote $_) self) (let nil (peg-source-range-begin self) (set self.result (string->double s)) (peg-source-range-end self) 1)) (let nil (set-oop-at (%typecheck <parser-stream> self.source) 1 pos) nil)))))))
 16: (eval.0+39 expr.2+0)
 15: (Fixed(Subr(let)) Env<2> ((result.2+1 (eval.0+39 expr.2+0))) (Fixed(Subr(and)) (>.0+31 (verbose.0+71) 1) (println.0+240 "=> " result.2+1)) result.2+1)
 14: (pval.0+304 defn.2+5)
 13: (Fixed(Subr(let)) Env<2> ((defn.2+5 (car.0+56 _list_.2+4))) (pval.0+304 defn.2+5))
 12: (Fixed(Subr(while)) _list_.2+4 (Fixed(Subr(let)) Env<2> ((defn.2+5 (car.0+56 _list_.2+4))) (pval.0+304 defn.2+5)) (Fixed(Subr(set)) _list_.2+4 (cdr.0+57 _list_.2+4)))
 11: (Fixed(Subr(let)) Env<2> ((_list_.2+4 defns.2+3)) (Fixed(Subr(while)) _list_.2+4 (Fixed(Subr(let)) Env<2> ((defn.2+5 (car.0+56 _list_.2+4))) (pval.0+304 defn.2+5)) (Fixed(Subr(set)) _list_.2+4 (cdr.0+57 _list_.2+4))))
 10: (Fixed(Subr(let)) Env<2> ((decls.2+2 (with-map.0+119 peg-make-declaration.0+486 name.2+0 rules.2+1)) (defns.2+3 (with-map.0+119 peg-make-definition.0+487 name.2+0 rules.2+1))) (Fixed(Subr(let)) Env<2> ((_list_.2+4 decls.2+2)) (Fixed(Subr(while)) _list_.2+4 (Fixed(Subr(let)) Env<2> ((decl.2+5 (car.0+56 _list_.2+4))) (pval.0+304 decl.2+5)) (Fixed(Subr(set)) _list_.2+4 (cdr.0+57 _list_.2+4)))) (Fixed(Subr(let)) Env<2> ((_list_.2+4 defns.2+3)) (Fixed(Subr(while)) _list_.2+4 (Fixed(Subr(let)) Env<2> ((defn.2+5 (car.0+56 _list_.2+4))) (pval.0+304 defn.2+5)) (Fixed(Subr(set)) _list_.2+4 (cdr.0+57 _list_.2+4)))) (concat-list.0+97 decls.2+2 defns.2+3))
  9: (peg-compile-rules.0+489 (Fixed(Subr(quote)) <temp-grammar>) rules.2+1)
  8: (eval.0+39 v.2+4)
  7: (Fixed(Subr(set)) v.2+4 (eval.0+39 v.2+4))
  6: (Fixed(Subr(while)) (Fixed(Subr(let)) Env<2> nil (Fixed(Subr(and)) prompt.2+1 (print.0+36 prompt.2+1)) ($sexpression.0+517 p.2+2)) (Fixed(Subr(set)) v.2+4 (oop-at.0+60 (%typecheck.0+150 <parser>.0+411 p.2+2) 1)) (Fixed(Subr(set)) v.2+4 (eval.0+39 v.2+4)))
  5: (Fixed(Subr(let)) Env<2> ((p.2+2 (parser.0+415 <peg>.0+422 stream.2+0)) (s.2+3 *parser-stream*.0+561) (v.2+4)) (Fixed(Subr(set)) *parser-stream*.0+561 stream.2+0) (Fixed(Subr(while)) (Fixed(Subr(let)) Env<2> nil (Fixed(Subr(and)) prompt.2+1 (print.0+36 prompt.2+1)) ($sexpression.0+517 p.2+2)) (Fixed(Subr(set)) v.2+4 (oop-at.0+60 (%typecheck.0+150 <parser>.0+411 p.2+2) 1)) (Fixed(Subr(set)) v.2+4 (eval.0+39 v.2+4))) ($sspace.0+518 p.2+2) (Fixed(Subr(or)) (parser-stream-at-end.0+366 *parser-stream*.0+561) (Fixed(Subr(let)) Env<2> nil (print.0+36 "\012syntax error in read-eval-print near: ") (Fixed(Subr(while)) (not.0+16 (parser-stream-at-end.0+366 *parser-stream*.0+561)) (print.0+36 (format.0+34 "%c" (parser-stream-next.0+370 *parser-stream*.0+561)))) (println.0+240 "<EOF>") (error.0+80 "abort"))) (Fixed(Subr(set)) *parser-stream*.0+561 s.2+3) v.2+4)
  4: (repl-parser-stream.0+588 (parser-stream.0+365 stream.2+0) prompt.2+1)
  3: (repl-stream.0+589 (parser-input-stream.0+383 (input-stream.0+335 file.2+0 path.2+2)) prompt.2+1)
  2: (repl-file.0+590 (Fixed(Subr(or)) (open.0+46 path.2+0) (error.0+80 "cannot open: " path.2+0)) prompt.2+1 path.2+0)
  1: (repl-path.0+591 (Fixed(Subr(let)) Env<1> ((_list_.1+0 *arguments*.0+74)) (Fixed(Subr(let)) Env<1> ((_head_.1+1 (car.0+56 _list_.1+0))) (Fixed(Subr(set)) *arguments*.0+74 (cdr.0+57 _list_.1+0)) _head_.1+1)) nil)
  0: (Fixed(Subr(while)) *arguments*.0+74 (repl-path.0+591 (Fixed(Subr(let)) Env<1> ((_list_.1+0 *arguments*.0+74)) (Fixed(Subr(let)) Env<1> ((_head_.1+1 (car.0+56 _list_.1+0))) (Fixed(Subr(set)) *arguments*.0+74 (cdr.0+57 _list_.1+0)) _head_.1+1)) nil))
melvinzhang commented 9 years ago

one of the problem is eval.l does not support double and operations on double