X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=spl.icl;h=2b458e47ca6642cdba3099f917fe6eee9874e108;hb=90e3f306b5813ff66f8249ba243a8a4220c915fe;hp=893d69932597be73b76f4e31e158fd37682f2446;hpb=fe40818bbc1d327f0adfbbbfe7ecfbe15d4eb053;p=cc1516.git diff --git a/spl.icl b/spl.icl index 893d699..2b458e4 100644 --- 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)