about summary refs log tree commit diff stats
path: root/baremetal/shell/main.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-02-21 21:25:38 -0800
committerKartik K. Agaram <vc@akkartik.com>2021-02-21 21:26:08 -0800
commit8b8d0fc77130c6f39aae42319aee1f449fd4db70 (patch)
treebdf3516884e159fcd33874d837e53816cebd25fd /baremetal/shell/main.mu
parent7e9e65eece359d6bb28d202eec035cf7acc5118a (diff)
downloadmu-8b8d0fc77130c6f39aae42319aee1f449fd4db70.tar.gz
7772
Diffstat (limited to 'baremetal/shell/main.mu')
-rw-r--r--baremetal/shell/main.mu20
1 files changed, 20 insertions, 0 deletions
diff --git a/baremetal/shell/main.mu b/baremetal/shell/main.mu
index f3f6240c..e54515ed 100644
--- a/baremetal/shell/main.mu
+++ b/baremetal/shell/main.mu
@@ -20,3 +20,23 @@ fn main {
     loop
   }
 }
+
+type interpreter {
+  # tokenize
+  # insert parens
+  # transform infix
+  # token tree
+  # syntax tree
+}
+
+fn run _self: (addr interpreter), in: (addr stream byte), out: (addr stream byte) {
+  clear-stream out
+  {
+    var done?/eax: boolean <- stream-empty? in
+    compare done?, 0/false
+    break-if-!=
+    var g/eax: grapheme <- read-grapheme in
+    write-grapheme out, g
+    loop
+  }
+}