1
0
forked from GitHub/gf-core

Started working on gfc command-line options.

This commit is contained in:
bringert
2007-09-21 10:30:00 +00:00
parent 47a48e8e78
commit f2b095b519

145
src/GF/Devel/GFC/Options.hs Normal file
View File

@@ -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 })