The Grammatical Framework is a grammar formalism based on type theory. It consists of:
- a special-purpose programming language
- a compiler of the language
- a generic grammar processor
The compiler reads GF grammars from user-provided files, and the generic grammar processor performs various tasks with the grammars:
- generation
- parsing
- translation
- type checking
- computation
- paraphrasing
- random generation
- syntax editing
GF particularly addresses four aspects of grammars:
- multilinguality (parallel grammars for different languages)
- semantics (semantic conditions of well-formedness, semantic properties of expressions)
- grammar engineering (modularity, abstractions, libraries)
- embeddability in programs written in other languages (C, C++, Haskell, Java, JavaScript)
The simplest way of installing GF from source is with the command:
cabal install
or:
stack install
Note that if you are unlucky to have Cabal 3.0 or later, then it uses the so-called Nix style commands. Using those for GF development is a pain. Every time when you change something in the source code, Cabal will generate a new folder for GF to look for the GF libraries and the GF cloud. Either reinstall everything with every change in the compiler, or be sane and stop using cabal-install. Instead you can do:
runghc Setup.hs configure
runghc Setup.hs build
sudo runghc Setup.hs install
The script will install the GF dependencies globally. The only solution to the Nix madness that I found is radical:
"No person, no problem" (Нет человека – нет проблемы).
For more information, including links to precompiled binaries, see the download page.
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.