Skip to content

Commit

Permalink
refactor without dynops io
Browse files Browse the repository at this point in the history
  • Loading branch information
fperrad committed Jun 13, 2010
1 parent 904f2d2 commit 8e5b2fc
Showing 1 changed file with 21 additions and 16 deletions.
37 changes: 21 additions & 16 deletions unl.pir
Expand Up @@ -19,9 +19,6 @@ L<http://en.wikipedia.org/wiki/Unlambda>

=cut

.loadlib 'io_ops'
.include 'stdio.pasm'

.sub _main :main
.param pmc argv

Expand All @@ -30,18 +27,19 @@ L<http://en.wikipedia.org/wiki/Unlambda>
.local pmc in, cchar
argc = argv
if argc > 1 goto open_file
$P0 = getinterp
in = $P0.'stdhandle'(.PIO_STDIN_FILENO)
in = getstdin
goto run
open_file:
$S0 = argv[1]
in = new 'FileHandle'
in.'open'($S0, 'r')
$I0 = defined in
if $I0 goto run
printerr "can't open '"
printerr $S0
printerr "' for reading."
.local pmc stderr
stderr = getstderr
print stderr, "can't open '"
print stderr, $S0
print stderr, "' for reading."
exit 1
run:
.local pmc prog
Expand Down Expand Up @@ -136,9 +134,11 @@ L<http://en.wikipedia.org/wiki/Unlambda>
if ch == "\t" goto loop
if ch == "\n" goto loop
if ch == "\r" goto loop
printerr "unrecogniced char in program '"
printerr ch
printerr "'\n"
.local pmc stderr
stderr = getstderr
print stderr, "unrecogniced char in program '"
print stderr, ch
print stderr, "'\n"
exit 1
.end

Expand Down Expand Up @@ -198,7 +198,9 @@ L<http://en.wikipedia.org/wiki/Unlambda>
no_ar:
.return (exp)
no_pair:
printerr "no pair\n"
.local pmc stderr
stderr = getstderr
print stderr, "no pair\n"
exit 1
.end

Expand Down Expand Up @@ -353,13 +355,17 @@ L<http://en.wikipedia.org/wiki/Unlambda>
.local pmc cc
cc = find_lex 'cc'
cc(x)
printerr "not reached\n"
.local pmc stderr
stderr = getstderr
print stderr, "not reached\n"
exit 1
.end

# d delay
.sub d
printerr "not reached\n"
.local pmc stderr
stderr = getstderr
print stderr, "not reached\n"
exit 1
.end

Expand Down Expand Up @@ -397,8 +403,7 @@ L<http://en.wikipedia.org/wiki/Unlambda>

.local pmc cchar, i, v, io
.local string ch
$P0 = getinterp
io = $P0.'stdhandle'(.PIO_STDIN_FILENO)
io = getstdin
ch = ''
unless io goto void
ch = io.'read'(1)
Expand Down

0 comments on commit 8e5b2fc

Please sign in to comment.