X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=src%2Fmain.icl;h=31c98d760e0899bacbfb28ba60d09170f7f69614;hb=b3bedf1e825aaaee9134dddc6de82b373bf8b86b;hp=ee1e0bd4aa9b1579bef3bd87ba81e8c98a4caf8c;hpb=7baaa30310aa8c80d9a0e643e03c030f01424d04;p=cc1516.git diff --git a/src/main.icl b/src/main.icl index ee1e0bd..31c98d7 100644 --- a/src/main.icl +++ b/src/main.icl @@ -19,6 +19,7 @@ import lex from yard import :: Error, instance toString Error :: Opts = { + version :: Bool, program :: String, lex :: Bool, parse :: Bool, @@ -30,15 +31,23 @@ derive gPrint TokenValue Start :: *World -> *World Start w # (args, w) = parseArgs w -| args.help - # (out, w) = stdio w - # out = out <<< "Usage: " <<< args.program <<< " [opts] [FILENAME]\n" - <<< "\t--help Show this help\n" - <<< "\t--[no-]lex Lexer output(default: disabled)\n" - <<< "\t--[no-]parse Parser output(default: enabled)\n\n" - <<< "\tFILENAME File to parse, when unspecified stdin is parsed\n" - = snd $ fclose out w # (stdin, w) = stdio w +| args.version + # stdin = stdin + <<< "main 0.1 (17 march 2016)\n" + <<< "Copyright Pim Jager and Mart Lubbers\n" + = snd $ fclose stdin w +| args.help + # stdin = stdin + <<< "Usage: " <<< args.program <<< " [OPTION] [FILE]\n" + <<< "Lex parse and either FILE or stdin\n" + <<< "\n" + <<< "Options:\n" + <<< " --help Show this help\n" + <<< " --version Show the version\n" + <<< " --[no-]lex Lexer output(default: disabled)\n" + <<< " --[no-]parse Parser output(default: enabled)\n" + = snd $ fclose stdin w # (contents, stdin, w) = readFileOrStdin stdin args.fp w = case contents of (Left cs) = snd $ fclose (stdin <<< cs) w @@ -64,11 +73,18 @@ Start w parseArgs :: *World -> (Opts, *World) parseArgs w # ([p:args], w) = getCommandLine w -= (pa args {program=p, lex=False, parse=True, fp=Nothing, help=False}, w) += (pa args { + program=p, + version=False, + lex=False, + parse=True, + fp=Nothing, + help=False}, w) where pa :: [String] Opts -> Opts pa [] o = o pa ["--help":r] o = pa r {o & help=True} + pa ["--version":r] o = pa r {o & version=True} pa ["--lex":r] o = pa r {o & lex=True} pa ["--no-lex":r] o = pa r {o & lex=False} pa ["--parse":r] o = pa r {o & parse=True}