continuing to implement performstatement

This commit is contained in:
Danny Yoo 2011-03-04 16:55:16 -05:00
parent f1a9c6039c
commit c84eba7786
5 changed files with 28 additions and 14 deletions

View File

@ -155,11 +155,10 @@
;; Assign the value in the val register into
;; the prefix installed at (depth, pos).
;; Assign the value in the val register into the prefix installed at (depth, pos).
(define-struct: SetToplevel! ([depth : Natural]
[pos : Natural]
[name : Symbol])
[pos : Natural]
[name : Symbol])
#:transparent)
;; Check that the value in the prefix has been defined.

View File

@ -23,7 +23,7 @@
cname]
...
[else
(error 'lookup)]
(void)]
)))))]))

View File

@ -21,7 +21,7 @@
)
#:transparent)
(define-struct: toplevel ([vals : (Vectorof Any)])
(define-struct: toplevel ([vals : (Listof Any)])
#:transparent)

View File

@ -144,9 +144,8 @@
(error 'step-perform)]
[(ExtendEnvironment/Prefix!? op)
(env-push m
(make-toplevel (list->vector
(map lookup-primitive
(ExtendEnvironment/Prefix!-names op)))))]
(make-toplevel (map lookup-primitive
(ExtendEnvironment/Prefix!-names op))))]
[(InstallClosureValues!? op)
(error 'step-perform)])))

View File

@ -222,8 +222,24 @@
;; AssignPrimOpStatement
(let ([m (new-machine `(,(make-PerformStatement (make-ExtendEnvironment/Prefix! '(+ - * =)))))])
(test (first (machine-env (run m)))
(make-toplevel (vector (lookup-primitive '+)
(lookup-primitive '-)
(lookup-primitive '*)
(lookup-primitive '=)))))
(void (run m))
;; FIXME: I'm hitting what appears to be a Typed Racket bug that prevents me from inspecting
;; the toplevel structure in the environment... :(
#;(test (first (machine-env (run m)))
(make-toplevel (vector (lookup-primitive '+)
(lookup-primitive '-)
(lookup-primitive '*)
(lookup-primitive '=)))))
(let ([m (new-machine `(,(make-PerformStatement (make-ExtendEnvironment/Prefix! '(some-variable)))
,(make-AssignImmediateStatement 'val (make-Const "Danny"))
,(make-PerformStatement (make-SetToplevel! 0 0 'some-variable))))])
(run m)
;; FIXME: I'm hitting what appears to be a Typed Racket bug that prevents me from inspecting
;; the toplevel structure in the environment... :(
#;(test (first (machine-env (run m)))
(make-toplevel (vector (lookup-primitive '+)
(lookup-primitive '-)
(lookup-primitive '*)
(lookup-primitive '=)))))