# Mu - shell/read.mu

https://github.com/akkartik/mu/blob/main/shell/read.mu

     1 fn read-cell in: (addr gap-buffer), out: (addr handle cell), trace: (addr trace) {
     2   # TODO: we may be able to generate tokens lazily and drop this stream.
     3   # Depends on how we implement indent-sensitivity and infix.
     4   var tokens-storage: (stream cell 0x400)
     5   var tokens/ecx: (addr stream cell) <- address tokens-storage
     6   tokenize in, tokens, trace
     7   var error?/eax: boolean <- has-errors? trace
     8   compare error?, 0/false
     9   {
    10     break-if-=
    11     return
    12   }
    13   # TODO: insert parens
    14   # TODO: transform infix
    15   parse-input tokens, out, trace
    16 }