From c782d38f0b4d263d243415495b8e9d9c84f119db Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Fri, 26 Feb 2021 22:14:36 -0800 Subject: 7816 --- baremetal/shell/parse.mu | 17 ++++++----------- baremetal/shell/read.mu | 6 ++++++ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/baremetal/shell/parse.mu b/baremetal/shell/parse.mu index b9eeccab..918fb108 100644 --- a/baremetal/shell/parse.mu +++ b/baremetal/shell/parse.mu @@ -1,14 +1,9 @@ fn parse-sexpression tokens: (addr stream cell), _out: (addr handle cell), trace: (addr trace) { # For now we just convert first token into a symbol and return it. TODO - var empty?/eax: boolean <- stream-empty? tokens - compare empty?, 0/false - { - break-if-!= - var out/eax: (addr handle cell) <- copy _out - allocate out - var out-addr/eax: (addr cell) <- lookup *out - read-from-stream tokens, out-addr - var type/ecx: (addr int) <- get out-addr, type - copy-to *type, 2/symbol - } + var out/eax: (addr handle cell) <- copy _out + allocate out + var out-addr/eax: (addr cell) <- lookup *out + read-from-stream tokens, out-addr + var type/ecx: (addr int) <- get out-addr, type + copy-to *type, 2/symbol } diff --git a/baremetal/shell/read.mu b/baremetal/shell/read.mu index d5a1d776..e49fbbac 100644 --- a/baremetal/shell/read.mu +++ b/baremetal/shell/read.mu @@ -3,6 +3,12 @@ fn read-cell in: (addr gap-buffer), out: (addr handle cell), trace: (addr trace) var tokens-storage: (stream cell 0x100) var tokens/ecx: (addr stream cell) <- address tokens-storage tokenize in, tokens, trace + var error?/eax: boolean <- has-errors? trace + compare error?, 0/false + { + break-if-= + return + } # TODO: insert parens # TODO: transform infix parse-sexpression tokens, out, trace -- cgit 1.4.1-2-gfad0