From f2b095b519e739e56faa5523fe975010ece07cf4 Mon Sep 17 00:00:00 2001 From: bringert Date: Fri, 21 Sep 2007 10:30:00 +0000 Subject: [PATCH] Started working on gfc command-line options. --- src/GF/Devel/GFC/Options.hs | 145 ++++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 src/GF/Devel/GFC/Options.hs diff --git a/src/GF/Devel/GFC/Options.hs b/src/GF/Devel/GFC/Options.hs new file mode 100644 index 000000000..be4353cb7 --- /dev/null +++ b/src/GF/Devel/GFC/Options.hs @@ -0,0 +1,145 @@ +module GF.Devel.Options where + +import System.Console.GetOpt + +{- + +Usage: gfc [OPTIONS] [FILE [...]] + +How each FILE is handled depends on the file name suffix: + +.gf Normal or old GF source, will be compiled. +.gfc Compiled GF source, will be loaded as is. +.gfe Example-based GF source, will be converted to .gf and compiled. +.ebnf Extended BNF format, will be converted to .gf and compiled. +.cf Context-free (BNF) format, will be converted to .gf and compiled. + +If multiple FILES are given, they must be normal GF source, .gfc or .gfe files. +For the other input formats, only one file can be given. + + +== Compilation mode == + +-E +Stop after preprocessing (with --preproc). + +-C +Stop after converting to .gf (for .gfe, .ebnf and .cf). + +-c +Stop after generating .gfc (do not link). + + +== Help and verbosity options == + +-V, --version +Display GF version + +-v N +Set verbosity +-q +Same as -v 0 +-v +Same as -v 3 + +-?, -h, --help +Show help message + +--cpu +Show compilation CPU time statistics + + +== GFC file handling == + +--gfc-dir=DIR +Directory to put .gfc files in. + +--no-emit-gfc +Do not create .gfc files. + +--emit-gfc +Create .gfc files (default) + + +== Output options == + +-f, --output-format=FORMAT +Output format. FORMAT can be one of: +Multiple concrete: gfcc (default), gar, js, ... +Single concrete only: cf, bnf, lbnf, gsl, srgs_xml, srgs_abnf, ... +Abstract only: haskell, ... + +-o FILE +Save output in FILE. Default is out.X, where X depends on the value of -f. + + +== Finding libaries == + +-i DIR +Add DIR to the library search path. + +--path=DIR:DIR:... +Set the library search path. + +--package=PACKAGE +Get libraries from PACKAGE. FIXME: not sure about how this should work. + + +== Recompilation checking == + +--src, --force-recomp +Always recompile from source, i.e. disable recompilation checking. + + +== Preprocessing == + +--preproc=COMMAND +Use COMMAND to preprocess input files. + + +== Optimization == + +-O OPTIMIZATION +Perform the named optimization. +Available optimizations: share, parametrize, values, all, none, subs +The default is share for concrete, none for resource modules. +Several -O flags can be given. + + +== Probabilistic grammars == + +--prob +Read probabilities from "--# prob" pragmas. + + +== Grammar flags == + +--startcat=CAT +Use CAT at the start category in the generated grammar. + +--language=LANG +Set the speech language flag to LANG in the generated grammar. + +-} + +data Phase = Preproc | Convert | Compile | Link + +data Options = Options { + optStopAfterPhase :: Phase, + optVerbosity :: Int, + optShowCPUTime :: Bool + } + +defaultOptions :: Options +defaultOptions = Options { + optStopAfterPhase = Link, + optVerbosity = 1, + optShowCPUTime = False + } + +optDescr :: [OptDescr (Options -> Options)] +optDescr = + [ + Option ['E'] [] (phase Preproc) "Stop after preprocessing (with --preproc)" + ] + where phase p = NoArg (\o -> o { optStopAfterPhase = p })