GrammaticalFramework/gf-core
{ "createdAt": "2018-07-26T18:32:19Z", "defaultBranch": "master", "description": "Grammatical Framework core: compiler, shell & runtimes", "fullName": "GrammaticalFramework/gf-core", "homepage": "https://www.grammaticalframework.org", "language": "Haskell", "name": "gf-core", "pushedAt": "2025-11-13T09:58:34Z", "stargazersCount": 145, "topics": [], "updatedAt": "2025-11-13T15:17:58Z", "url": "https://github.com/GrammaticalFramework/gf-core"}Grammatical Framework (GF)
Section titled “Grammatical Framework (GF)”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)
Compilation and installation
Section titled “Compilation and installation”The simplest way of installing GF from source is with the command:
cabal installor:
stack installNote 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 configurerunghc Setup.hs buildsudo runghc Setup.hs installThe 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.
About this repository
Section titled “About this repository”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.