diff options
author | Camil Staps | 2016-04-12 22:01:25 +0200 |
---|---|---|
committer | Camil Staps | 2016-04-12 22:01:25 +0200 |
commit | b605f30516cc1fef04a706137dc9bc202aadc991 (patch) | |
tree | 7c1ea3670052489d455c9262c3a04267afc87503 /test.icl |
Initial commit
Diffstat (limited to 'test.icl')
-rw-r--r-- | test.icl | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/test.icl b/test.icl new file mode 100644 index 0000000..77e836c --- /dev/null +++ b/test.icl @@ -0,0 +1,34 @@ +module test + +import StdEnv +import Data.Maybe +from Data.Func import $ + +import Smurf +import SmurfParse + +Start :: *World -> *World +Start w +# (io, w) = stdio w +//# io = loop (prog reverse) zero io +# (mbSt, io) = run (prog reverse) zero io +# result = if (isNothing mbSt) "uh-oh." (toString $ fromJust mbSt) +# io = io <<< "\n--------------------\n" <<< result <<< "\n" += snd $ fclose io w +where + loop :: !Program State !*File -> *File + loop p st f + # (mbProgSt, f) = step p st f + | isNothing mbProgSt = f <<< "NOTHING!!!\n" + # (prog, st) = fromJust mbProgSt + | isEmpty prog = f <<< "\n---------------------------\n" <<< toString st + # f = f <<< "---> " <<< toString (hd prog) <<< " ? " + # (cmd, f) = freadline f + | cmd == "state\n" = loop prog st (f <<< toString st) + = loop prog st f + + prog txt = fromJust $ parse txt + + // From http://esolangs.org/wiki/Smurf + reverse = ['"+"i+""p""gtg""gt"i"p"\\"\\"p\\"i\\"gh\\"o\\"g+\\"o\\"p\\"i\\"gt\\"i\\"p\\"\\\\\\"+\\\\\\"\\\\\\"\\\\\\"p\\"\\"i\\"gq+\\"tg\\"+\\"i\\"gq+\\"\\\\\\"i\\\\\\"p\\"+\\"o\\"gq+\\"\\\\\\"o\\\\\\"p\\"+\\"\\"gq+\\"\\"g+\\"\\"p\\"o\\"gq\\"o\\"+\\"+\\"pgx"""p"\\"+\\"\\"\\"p""i"gq+"tg"+"i"gq+"\\"i\\"p\\"\\""+""gq+""g+""p"""+""i"g+pgx'] + |