This commit is contained in:
Kartik K. Agaram 2021-02-26 22:14:36 -08:00
parent c4f43035b0
commit c782d38f0b
2 changed files with 12 additions and 11 deletions

View File

@ -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
}

View File

@ -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