forked from GitHub/gf-core
Started working on gfc command-line options.
This commit is contained in:
145
src/GF/Devel/GFC/Options.hs
Normal file
145
src/GF/Devel/GFC/Options.hs
Normal 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 })
|
||||
Reference in New Issue
Block a user