diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2016-07-22 19:56:18 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2016-07-22 19:56:18 -0700 |
commit | 9acf5c0fc91d7e348c794c8b8181d4e56f393925 (patch) | |
tree | 97bf8a15ec6c4803d661e13c868e8f288fc977aa /lambda-to-mu.mu | |
parent | 1cb09d70d068304f5330330c5708b806ab693589 (diff) | |
download | mu-9acf5c0fc91d7e348c794c8b8181d4e56f393925.tar.gz |
3129
Degenerate 'parser' that handles just atoms of one character.
Diffstat (limited to 'lambda-to-mu.mu')
-rw-r--r-- | lambda-to-mu.mu | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/lambda-to-mu.mu b/lambda-to-mu.mu index bfdc0e9d..9afe1ed3 100644 --- a/lambda-to-mu.mu +++ b/lambda-to-mu.mu @@ -124,3 +124,32 @@ scenario cell-operations-on-pair [ 11 <- 0 # rest is nil ] ] + +def parse in:address:array:character -> out:address:cell [ + local-scope + load-ingredients + s:address:stream <- new-stream in + out, s <- parse s +] + +def parse in:address:stream -> out:address:cell, in:address:stream [ + local-scope + load-ingredients + b:address:buffer <- new-buffer 30 + c:character, in <- read in + b <- append b, c + s:address:array:character <- buffer-to-array b + out <- new-atom s +] + +scenario parse-atom [ + local-scope + s:address:array:character <- new [a] + x:address:cell <- parse s + s2:address:array:character, 10:boolean/raw <- maybe-convert *x, atom:variant + 11:array:character/raw <- copy *s2 + memory-should-contain [ + 10 <- 1 # parse result is an atom + 11:array:character <- [a] + ] +] |