added command line option for selftest, still needs to implement
[cc1516.git] / spl.icl
diff --git a/spl.icl b/spl.icl
index 63b1487..0a3f197 100644 (file)
--- a/spl.icl
+++ b/spl.icl
@@ -16,6 +16,7 @@ from Text import class Text(concat), instance Text String
 
 import parse
 import lex
+import AST
 from yard import :: Error, instance toString Error
 
 :: Opts = {
@@ -23,6 +24,7 @@ from yard import :: Error, instance toString Error
        program :: String,
        lex :: Bool,
        parse :: Bool,
+       selftest :: Bool,
        fp :: Maybe String,
        help :: Bool}
 
@@ -48,6 +50,7 @@ Start w
                <<< "  --version          Show the version\n"
                <<< "  --[no-]lex         Lexer output(default: disabled)\n"
                <<< "  --[no-]parse       Parser output(default: enabled)\n"
+               <<< "  --[no-]selftest    Feed pprint parse back(default: disabled)\n"
        = snd $ fclose stdin w
 # (contents, stdin, w) = readFileOrStdin stdin args.fp w
 = case contents of
@@ -68,8 +71,8 @@ Start w
                        printTokens :: [Token] -> String
                        printTokens ts = concat $ flatten $ map pt ts
                                where
-                                       pt {line,column,token} = [toString line, ":", 
-                                               toString column, ": ", printToString token, "\n"]
+                                       pt ({line,col},token) = [toString line, ":", 
+                                               toString col, ": ", printToString token, "\n"]
 
 parseArgs :: *World -> (Opts, *World)
 parseArgs w
@@ -90,6 +93,8 @@ where
        pa ["--no-lex":r] o = pa r {o & lex=False}
        pa ["--parse":r] o = pa r {o & parse=True}
        pa ["--no-parse":r] o = pa r {o & parse=False}
+       pa ["--selftest":r] o = pa r {o & selftest=True}
+       pa ["--no-selftest":r] o = pa r {o & selftest=False}
        pa [x:r] o = pa r {o & fp=Just x}
 
 readFileOrStdin :: *File (Maybe String) *World -> *(Either String [Char], *File, *World)