This commit is contained in:
Kartik K. Agaram 2021-02-28 18:47:34 -08:00
parent 3ce9511621
commit 755c02c4e6
2 changed files with 10 additions and 6 deletions

View File

@ -1,7 +1,15 @@
fn parse-input tokens: (addr stream cell), out: (addr handle cell), trace: (addr trace) {
rewind-stream tokens
parse-sexpression tokens, out, trace
var empty?/eax: boolean <- stream-empty? tokens
compare empty?, 0/false
break-if-!=
error trace, "unexpected tokens at end; only type in a single expression at a time"
}
fn parse-sexpression tokens: (addr stream cell), _out: (addr handle cell), trace: (addr trace) {
trace-text trace, "read", "parse"
trace-lower trace
rewind-stream tokens
var curr-token-storage: cell
var curr-token/ecx: (addr cell) <- address curr-token-storage
var empty?/eax: boolean <- stream-empty? tokens
@ -14,10 +22,6 @@ fn parse-sexpression tokens: (addr stream cell), _out: (addr handle cell), trace
read-from-stream tokens, curr-token
parse-atom curr-token, _out, trace
trace-higher trace
var empty?/eax: boolean <- stream-empty? tokens
compare empty?, 0/false
break-if-!=
error trace, "unexpected tokens at end; only type in a single expression at a time"
}
fn parse-atom _curr-token: (addr cell), _out: (addr handle cell), trace: (addr trace) {

View File

@ -11,5 +11,5 @@ fn read-cell in: (addr gap-buffer), out: (addr handle cell), trace: (addr trace)
}
# TODO: insert parens
# TODO: transform infix
parse-sexpression tokens, out, trace
parse-input tokens, out, trace
}