summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2007-09-21 10:30:00 +0000
committerbringert <bringert@cs.chalmers.se>2007-09-21 10:30:00 +0000
commit470038e017b6dc7abbb006c245e90794aadc0533 (patch)
treee33a875e2868943066b004b8805a8e92c5220a33 /src
parent58d34eca14d02e6bb388521954938824bb0c8079 (diff)
Started working on gfc command-line options.
Diffstat (limited to 'src')
-rw-r--r--src/GF/Devel/GFC/Options.hs145
1 files changed, 145 insertions, 0 deletions
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 })