clean.sty
[cc1516.git] / spl.icl
diff --git a/spl.icl b/spl.icl
index 893d699..2b458e4 100644 (file)
--- a/spl.icl
+++ b/spl.icl
@@ -24,6 +24,7 @@ from yard import :: Error, instance toString Error
        program :: String,
        lex :: Bool,
        parse :: Bool,
+       selftest :: Bool,
        fp :: Maybe String,
        help :: Bool}
 
@@ -49,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
@@ -57,12 +59,12 @@ Start w
        # lexOut = lexer cs
        # stdin = if (not args.lex) stdin (case lexOut of
                (Right toks) = 
-                       stdin <<< "---LEXER\n" <<< printTokens toks <<< "---LEXER\n"
+                       stdin <<< "//LEXER\n" <<< printTokens toks <<< "//LEXER\n"
                _ = stdin)
        # parseOut = parser lexOut
        # stdin = if (not args.parse) stdin (case parser lexOut of
                (Right ast) = 
-                       stdin <<<  "---PARSER\n" <<< toString ast <<< "---PARSER\n" 
+                       stdin <<<  "//PARSER\n" <<< toString ast <<< "//PARSER\n" 
                (Left parse) = stdin <<< toString parse)
        = snd $ fclose stdin w
                where
@@ -80,6 +82,7 @@ parseArgs w
        version=False,
        lex=False,
        parse=True,
+       selftest=False,
        fp=Nothing,
        help=False}, w)
 where
@@ -91,6 +94,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)