From e9981404da5fcaf24acc6b298f4752a543d8af9f Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Thu, 6 May 2021 17:27:17 -0700 Subject: [PATCH] . --- shell/evaluate.mu | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/shell/evaluate.mu b/shell/evaluate.mu index 78250ed1..0763dd07 100644 --- a/shell/evaluate.mu +++ b/shell/evaluate.mu @@ -120,11 +120,24 @@ fn evaluate _in-ah: (addr handle cell), _out-ah: (addr handle cell), env-h: (han trace-higher trace return } - # in is a syntax tree + # 'in' is a syntax tree + $evaluate:literal-function: { + # trees starting with "litfn" are literals + var expr/esi: (addr cell) <- copy in + var in/edx: (addr cell) <- copy in + var first-ah/ecx: (addr handle cell) <- get in, left + var first/eax: (addr cell) <- lookup *first-ah + var litfn?/eax: boolean <- litfn? first + compare litfn?, 0/false + break-if-= + trace-text trace, "eval", "literal function" + copy-object _in-ah, _out-ah + trace-higher trace + return + } $evaluate:anonymous-function: { # trees starting with "fn" are anonymous functions var expr/esi: (addr cell) <- copy in - # if its first elem is not "fn", break var in/edx: (addr cell) <- copy in var first-ah/ecx: (addr handle cell) <- get in, left var first/eax: (addr cell) <- lookup *first-ah