From 634e23daa8f1ce79d41284a2f8f0860459b0cb1b Mon Sep 17 00:00:00 2001 From: Danny Yoo Date: Thu, 10 Mar 2011 14:49:50 -0500 Subject: [PATCH] tracing bug in environment handling --- assemble.rkt | 7 +++---- package.rkt | 8 ++++---- simulator-prims.rkt | 5 ++++- simulator.rkt | 2 ++ test-compiler.rkt | 12 ++++++++++++ 5 files changed, 25 insertions(+), 9 deletions(-) diff --git a/assemble.rkt b/assemble.rkt index d75905e..060ed34 100644 --- a/assemble.rkt +++ b/assemble.rkt @@ -215,8 +215,8 @@ EOF (format "~a = ~a;" t (assemble-oparg v)))] [(AssignPrimOpStatement? stmt) - (format "MACHINE.~a=~a;" - (AssignPrimOpStatement-target stmt) + (format "~a=~a;" + (assemble-target (AssignPrimOpStatement-target stmt)) (assemble-op-expression (AssignPrimOpStatement-op stmt)))] [(PerformStatement? stmt) @@ -235,8 +235,7 @@ EOF (assemble-label (make-Label (TestAndBranchStatement-label stmt))))]))] [(GotoStatement? stmt) - (format "return ~a();" - (assemble-location (GotoStatement-target stmt)))] + (format "return ~a();" (assemble-location (GotoStatement-target stmt)))] [(PushControlFrame? stmt) (format "MACHINE.control.push(new Frame(~a, MACHINE.proc));" (PushControlFrame-label stmt))] [(PopControlFrame? stmt) diff --git a/package.rkt b/package.rkt index d63536d..87cc027 100644 --- a/package.rkt +++ b/package.rkt @@ -1,9 +1,9 @@ #lang racket/base (require "compile.rkt" - "typed-structs.rkt" "assemble.rkt" "typed-parse.rkt" + "il-structs.rkt" racket/runtime-path racket/port) @@ -21,9 +21,9 @@ (copy-port ip op))) (newline op) (fprintf op "var invoke = ") - (assemble/write-invoke (statements (compile-top (parse source-code) - 'val - 'return)) + (assemble/write-invoke (compile (parse source-code) + 'val + 'next) op) (fprintf op ";\n")) diff --git a/simulator-prims.rkt b/simulator-prims.rkt index ba9a26f..16aac52 100644 --- a/simulator-prims.rkt +++ b/simulator-prims.rkt @@ -45,5 +45,8 @@ abs void quotient - remainder) + remainder + display + displayln + newline) #:constants (null pi e))) diff --git a/simulator.rkt b/simulator.rkt index 2bbe723..5df52aa 100644 --- a/simulator.rkt +++ b/simulator.rkt @@ -328,6 +328,8 @@ v] [(null? v) v] + [(void? v) + v] [(cons? v) (cons (loop (car v)) (loop (cdr v)))] [(primitive-proc? v) diff --git a/test-compiler.rkt b/test-compiler.rkt index 79aad6e..337d758 100644 --- a/test-compiler.rkt +++ b/test-compiler.rkt @@ -448,5 +448,17 @@ (expt 2 23984000))) +(test (begin (define (length l) + (if (null? l) + 0 + (+ 1 (length (cdr l))))) + (display (length (list 1 2 3 4 5 6))) + (newline) + #;(display (length (list "hello" "world"))) + #;(newline)) + (void)) + + + ;(simulate (compile (parse '42) 'val 'next)) ;(compile (parse '(+ 3 4)) 'val 'next) \ No newline at end of file