From 091a4e4001f42fb059107e854ba0449b3d27c16f Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Thu, 4 Mar 2021 23:08:44 -0800 Subject: 7851 - shell snapshot: symbol lookup --- shell/sandbox.mu | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'shell/sandbox.mu') diff --git a/shell/sandbox.mu b/shell/sandbox.mu index 6f25474a..fbed3cff 100644 --- a/shell/sandbox.mu +++ b/shell/sandbox.mu @@ -174,9 +174,28 @@ fn run in: (addr gap-buffer), out: (addr stream byte), trace: (addr trace) { break-if-= return } + var nil-storage: (handle cell) + var nil-ah/ecx: (addr handle cell) <- address nil-storage + allocate-pair nil-ah + # HERE + var tmp-storage: (handle cell) + var tmp-ah/edx: (addr handle cell) <- address tmp-storage + # tmp = a + new-symbol tmp-ah, "a" + # tmp = (a) + new-pair tmp-ah, *tmp-ah, *nil-ah + # tmp = (a . (a)) = (a a) + var tmp/eax: (addr cell) <- lookup *tmp-ah + { + var new-ah/ecx: (addr handle cell) <- get tmp, left + new-pair tmp-ah, *new-ah, *tmp-ah + } + # env = tmp = ((a a)) + new-pair tmp-ah, *tmp-ah, *nil-ah + var env/eax: (addr cell) <- lookup *tmp-ah var eval-result-storage: (handle cell) var eval-result/edi: (addr handle cell) <- address eval-result-storage - evaluate read-result, eval-result, trace + evaluate read-result, eval-result, env, trace var error?/eax: boolean <- has-errors? trace { compare error?, 0/false -- cgit 1.4.1-2-gfad0