diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-02-21 22:06:03 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-02-21 22:08:13 -0800 |
commit | 210c48370a9cfda64e421440df4bb378b0167d0b (patch) | |
tree | 18d84e300ca78107243cf3237735dbf0bf7895ea /baremetal/shell/read.mu | |
parent | 19f93c7457529a4dc04638eef5de878475067aa8 (diff) | |
download | mu-210c48370a9cfda64e421440df4bb378b0167d0b.tar.gz |
7777
Same identity REPL, but now going through some symbol processing.
Diffstat (limited to 'baremetal/shell/read.mu')
-rw-r--r-- | baremetal/shell/read.mu | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/baremetal/shell/read.mu b/baremetal/shell/read.mu new file mode 100644 index 00000000..ba575d83 --- /dev/null +++ b/baremetal/shell/read.mu @@ -0,0 +1,25 @@ +# out is not allocated +fn read-cell in: (addr gap-buffer), _out: (addr handle cell) { + # TODO: + # tokenize + # insert parens + # transform infix + # token tree + # syntax tree + rewind-gap-buffer in + # read symbol + var out/eax: (addr handle cell) <- copy _out + new-symbol out + var out-a/eax: (addr cell) <- lookup *out + var out-data-ah/eax: (addr handle stream byte) <- get out-a, text-data + var _out-data/eax: (addr stream byte) <- lookup *out-data-ah + var out-data/edi: (addr stream byte) <- copy _out-data + { + var done?/eax: boolean <- gap-buffer-scan-done? in + compare done?, 0/false + break-if-!= + var g/eax: grapheme <- read-from-gap-buffer in + write-grapheme out-data, g + loop + } +} |