The GF Resource Grammar Library is the standard library for Grammatical Framework. It covers the morphology and basic syntax of over 30 languages.
For more about the RGL, see the synopsis page.
There are 3 ways to build and install the RGL:
Setup.hs
Setup.sh
(does not require Haskell)Setup.bat
(does not require Haskell)The install scripts will try to determine where to copy the compiled RGL modules. It will look for, in this order:
--dest=
flag (see below)GF_LIB_PATH
environment variable../gf-core/DATA_DIR
(relative to this directory). This only works if you have the gf-core
and gf-rgl
repositories in the same top-level directory and you have already compiled GF from source.
(This is considered a bit hacky and will probably disappear in the future).A list of all languages and their properties is maintained centrally in languages.csv
.
This file should be kept up-to-date and all build methods should read this config file.
If you see something wrong, please report/fix it.
# | Column | Description | Default |
---|---|---|---|
1 | Code | 3-letter language code, e.g. Eng |
- |
2 | Name | language name in English, e.g. English |
- |
3 | Directory | folder name under src , e.g. english |
- |
4 | Functor | functor name (not used) | - |
5 | Unlexer | unlexer (not used) | - |
6 | Present | language is marked with --# notpresent |
n |
7 | All | compile All module |
y |
8 | Try | compile Try module |
y |
9 | Symbolic | compile Symbolic module |
y |
10 | Compatibility | complile Compatibility module |
n |
11 | Synopsis | include language in the RGL synopsis | n |
If default is y
then anything other than n
, including the empty string, is treated as true (and vice versa when default is n
).
If you have Make
installed and don't care about advanced settings,
you can compile the RGL and install it to the default location with:
make install
This is the same as make build
followed by make copy
.
There is also make clean
available.
The Makefile will try to use the Haskell install script, falling back to the shell script if you do not have Haskell installed.
Setup.hs
This build method gives you most options. You will need Haskell installed on your system.
Run the build script with:
runghc Setup.hs ...
Where ...
is one of:
build [CMDS] [MODE] [--langs=[+|-]LANG,LANG,...] [--gf=...] [--verbose|-v]
copy [MODE] [--dest=...]
install [CMDS] [MODE] [--langs=[+|-]LANG,LANG,...] [--gf=...] [--dest=...] [--verbose|-v]
clean
CMDS
is one or more of:
prelude
,
all
,
lang
,
api
,
compat
,
or an explicit module name (e.g. ExtraEng.gf
. You don't need to specify to language subdirectory, but there is a restriction that the module must exist in a direct subdirectory of src
).
If ommitted, the default command is prelude all
.MODE
is one of:
present
,
alltenses
(default is both).LANG
is a 3-letter language code, e.g. Eng
, Swe
etc.--langs=...
--langs=+...
langs=-...
--gf
flag (default is that the gf
executable is in the global system path).--dest
flag can be used to manually specify where the compiled RGL modules should be copied/installed. This is the same place as GF_LIB_PATH
.Setup.sh
This method is provided as an alternative for those who don't have Haskell installed. Simply run the script to build the entire RGL and install in the default location.
You can pass the following flags:
--dest=...
to manually specify the install location--gf=...
to specify the path to the gf
executable, if not available on the system path--verbose
or -v
to show a list of files being built (errors will always be shown)Setup.bat
This method is provided as an alternative for Windows users who don't have Haskell or Bash installed.
It is supposed to be a port of Setup.sh
and works in largely the same way.
In particular, it accepts the same flags (in the same format) as described above.
However it currently tries to build all modules for all languages and doesn't consider the details of which modules should be compiled for each language (specified in languages.csv
)
On 2018-07-25, the monolithic GF repository was split in two:
The former repository is now archived and no longer updated. The split was performed using this script and the output of that script is here.