continuing to implement performstatement
This commit is contained in:
parent
f1a9c6039c
commit
c84eba7786
|
@ -155,11 +155,10 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;; Assign the value in the val register into
|
;; Assign the value in the val register into the prefix installed at (depth, pos).
|
||||||
;; the prefix installed at (depth, pos).
|
|
||||||
(define-struct: SetToplevel! ([depth : Natural]
|
(define-struct: SetToplevel! ([depth : Natural]
|
||||||
[pos : Natural]
|
[pos : Natural]
|
||||||
[name : Symbol])
|
[name : Symbol])
|
||||||
#:transparent)
|
#:transparent)
|
||||||
|
|
||||||
;; Check that the value in the prefix has been defined.
|
;; Check that the value in the prefix has been defined.
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
cname]
|
cname]
|
||||||
...
|
...
|
||||||
[else
|
[else
|
||||||
(error 'lookup)]
|
(void)]
|
||||||
)))))]))
|
)))))]))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
)
|
)
|
||||||
#:transparent)
|
#:transparent)
|
||||||
|
|
||||||
(define-struct: toplevel ([vals : (Vectorof Any)])
|
(define-struct: toplevel ([vals : (Listof Any)])
|
||||||
#:transparent)
|
#:transparent)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -144,9 +144,8 @@
|
||||||
(error 'step-perform)]
|
(error 'step-perform)]
|
||||||
[(ExtendEnvironment/Prefix!? op)
|
[(ExtendEnvironment/Prefix!? op)
|
||||||
(env-push m
|
(env-push m
|
||||||
(make-toplevel (list->vector
|
(make-toplevel (map lookup-primitive
|
||||||
(map lookup-primitive
|
(ExtendEnvironment/Prefix!-names op))))]
|
||||||
(ExtendEnvironment/Prefix!-names op)))))]
|
|
||||||
[(InstallClosureValues!? op)
|
[(InstallClosureValues!? op)
|
||||||
(error 'step-perform)])))
|
(error 'step-perform)])))
|
||||||
|
|
||||||
|
|
|
@ -222,8 +222,24 @@
|
||||||
|
|
||||||
;; AssignPrimOpStatement
|
;; AssignPrimOpStatement
|
||||||
(let ([m (new-machine `(,(make-PerformStatement (make-ExtendEnvironment/Prefix! '(+ - * =)))))])
|
(let ([m (new-machine `(,(make-PerformStatement (make-ExtendEnvironment/Prefix! '(+ - * =)))))])
|
||||||
(test (first (machine-env (run m)))
|
(void (run m))
|
||||||
(make-toplevel (vector (lookup-primitive '+)
|
;; FIXME: I'm hitting what appears to be a Typed Racket bug that prevents me from inspecting
|
||||||
(lookup-primitive '-)
|
;; the toplevel structure in the environment... :(
|
||||||
(lookup-primitive '*)
|
#;(test (first (machine-env (run m)))
|
||||||
(lookup-primitive '=)))))
|
(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 '=)))))
|
Loading…
Reference in New Issue
Block a user