X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=spl.icl;h=93374a5cd2b49ca57ab30fa7cdcaee8969ce8bcb;hb=c270b0fc79caa24c08c2d00c2e8205bbd47921ed;hp=0a3f1970ec14d1210c54bab4957ee421408badbb;hpb=dd9529f0ce7864e2bf6df4e4973bd2af068985a0;p=cc1516.git diff --git a/spl.icl b/spl.icl index 0a3f197..93374a5 100644 --- a/spl.icl +++ b/spl.icl @@ -16,6 +16,7 @@ from Text import class Text(concat), instance Text String import parse import lex +import sem import AST from yard import :: Error, instance toString Error @@ -24,7 +25,6 @@ from yard import :: Error, instance toString Error program :: String, lex :: Bool, parse :: Bool, - selftest :: Bool, fp :: Maybe String, help :: Bool} @@ -50,7 +50,6 @@ 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 @@ -59,19 +58,24 @@ 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 + # stdin = if (not args.parse) stdin (case parseOut of (Right ast) = - stdin <<< "---PARSER\n" <<< toString ast <<< "---PARSER\n" + stdin <<< "//PARSER\n" <<< toString ast <<< "//PARSER\n" (Left parse) = stdin <<< toString parse) + # semOut = sem parseOut + # stdin = case semOut of + (Right ast) = + stdin <<< "//TYPE\n" <<< toString ast <<< "//TYPE\n" + (Left parse) = stdin <<< toString parse = snd $ fclose stdin w where printTokens :: [Token] -> String printTokens ts = concat $ flatten $ map pt ts where - pt ({line,col},token) = [toString line, ":", + pt ({line,col},token) = [toString line, ":", toString col, ": ", printToString token, "\n"] parseArgs :: *World -> (Opts, *World) @@ -93,8 +97,6 @@ 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)