mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-24 02:12:50 -06:00
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