Mercurial > repos > icfp2012
changeset 20:50a456168c25
Split readFd out of readFile for use in lifter. Add code to read map from stdin to lifter using code in sim
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 14 Jul 2012 12:33:01 -0700 |
parents | 7f2aba75c449 |
children | be6d1cf7b7d7 |
files | Makefile src/lifter.tp src/sim.tp |
diffstat | 3 files changed, 33 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile Sat Jul 14 12:09:06 2012 -0700 +++ b/Makefile Sat Jul 14 12:33:01 2012 -0700 @@ -12,8 +12,13 @@ gcc -ggdb -I$(TPDIR) -o $@ $< $(TPDIR)/runtime/object.c $(OBJDIR)/%.tp.c : $(SRCDIR)/%.tp - d8 $(TPC) -- -basedir $(TPDIR)/ $< > $@ + d8 $(TPC) -- -basedir $(TPDIR)/ -i src $< > $@ clean : - rm -f $(OBJS) - rm -f $(BINS) + rm -f $(OBJS) $(BINS) + +cleansim : + rm -f bin/sim build/sim.tp.c + +cleanlift : + rm -f bin/lifter build/lifter.tp.c
--- a/src/lifter.tp Sat Jul 14 12:09:06 2012 -0700 +++ b/src/lifter.tp Sat Jul 14 12:33:01 2012 -0700 @@ -1,5 +1,21 @@ #{ + true <- #{ + if:else <- :self trueblock :elseblock { + trueblock: + } + } + + false <- #{ + if:else <- :self trueblock :elseblock { + elseblock: + } + } + main <- { - 0 + text <- sim readFd: 0 + playfield <- (sim state) fromStr: text + os write: 2 text + os write: 2 "width: " . (string: (playfield width)) . "\n" + os write: 2 "height: " . (string: (playfield height)) . "\n" } }
--- a/src/sim.tp Sat Jul 14 12:09:06 2012 -0700 +++ b/src/sim.tp Sat Jul 14 12:33:01 2012 -0700 @@ -170,8 +170,7 @@ } } - readFile <- :path { - fd <- os open: path (os O_RDONLY) + readFd <- :fd { if: fd < 0 { "" } else: { cur <- "" part <- "" @@ -181,11 +180,17 @@ } do: { cur <- cur . part } - os close: fd cur } } + readFile <- :path { + fd <- os open: path (os O_RDONLY) + out <- readFd: fd + os close: fd + out + } + getMove <- { os read: 0 1 }