diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2016-07-27 22:33:18 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2016-07-27 22:33:18 -0700 |
commit | 4f3510d05a144addc9612a046a1f2fa31a8a8c41 (patch) | |
tree | 014d681ff9f082d9e013b1b37302b1af82b9f56c /lambda-to-mu.mu | |
parent | 814333e288a75af10fc39b8ca8d8eefcb855fb25 (diff) | |
download | mu-4f3510d05a144addc9612a046a1f2fa31a8a8c41.tar.gz |
3156
Make 'stream' generic.
Diffstat (limited to 'lambda-to-mu.mu')
-rw-r--r-- | lambda-to-mu.mu | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/lambda-to-mu.mu b/lambda-to-mu.mu index cda352a7..fdde50ef 100644 --- a/lambda-to-mu.mu +++ b/lambda-to-mu.mu @@ -170,17 +170,18 @@ scenario cell-operations-on-pair [ def parse in:address:array:character -> out:address:cell [ local-scope load-ingredients - s:address:stream <- new-stream in + s:address:stream:character <- new-stream in out, s <- parse s trace 2, [app/parse], out ] -def parse in:address:stream -> out:address:cell, in:address:stream [ +def parse in:address:stream:character -> out:address:cell, in:address:stream:character [ local-scope load-ingredients # skip whitespace in <- skip-whitespace in - c:character <- peek in + c:character, eof?:boolean <- peek in + reply-if eof?, 0/nil pair?:boolean <- equal c, 40/open-paren { break-if pair? @@ -221,11 +222,11 @@ def parse in:address:stream -> out:address:cell, in:address:stream [ # read in any remaining elements curr:address:cell <- copy out { + in <- skip-whitespace in end?:boolean <- end-of-stream? in not-end?:boolean <- not end? assert not-end?, [unbalanced '(' in expression] # termination check: ')' - in <- skip-whitespace in c <- peek in { close-paren?:boolean <- equal c, 41/close-paren @@ -264,7 +265,7 @@ def parse in:address:stream -> out:address:cell, in:address:stream [ } ] -def skip-whitespace in:address:stream -> in:address:stream [ +def skip-whitespace in:address:stream:character -> in:address:stream:character [ local-scope load-ingredients { |