diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-06-18 21:41:17 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-06-18 21:42:01 -0700 |
commit | 29795a0db4e1d180217123f81f14b69189b3c12c (patch) | |
tree | 7f60a0df59feb7141ec1d722ed852c3764cff2b1 /shell/read.mu | |
parent | e5cf5708900497919f7ff4f2f1897e6c6af57aee (diff) | |
download | mu-29795a0db4e1d180217123f81f14b69189b3c12c.tar.gz |
start emitting indent tokens
Diffstat (limited to 'shell/read.mu')
-rw-r--r-- | shell/read.mu | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/shell/read.mu b/shell/read.mu index 3804c9e4..e5eea010 100644 --- a/shell/read.mu +++ b/shell/read.mu @@ -1,8 +1,7 @@ fn read-cell in: (addr gap-buffer), out: (addr handle cell), trace: (addr trace) { - # TODO: we may be able to generate tokens lazily and drop this stream. - # Depends on how we implement indent-sensitivity and infix. + # eagerly tokenize everything so that the phases are easier to see in the trace var tokens-storage: (stream token 0x400) - var tokens/ecx: (addr stream token) <- address tokens-storage + var tokens/edx: (addr stream token) <- address tokens-storage tokenize in, tokens, trace var error?/eax: boolean <- has-errors? trace compare error?, 0/false @@ -10,7 +9,16 @@ fn read-cell in: (addr gap-buffer), out: (addr handle cell), trace: (addr trace) break-if-= return } - # TODO: insert parens + # insert more parens based on indentation + var parenthesized-tokens-storage: (stream token 0x400) + var parenthesized-tokens/ecx: (addr stream token) <- address parenthesized-tokens-storage + parenthesize tokens, parenthesized-tokens, trace + var error?/eax: boolean <- has-errors? trace + compare error?, 0/false + { + break-if-= + return + } # TODO: transform infix - parse-input tokens, out, trace + parse-input parenthesized-tokens, out, trace } |