GF, Grammatical Framework, is a programming language for multilingual grammar applications. It is
Don't worry if you don't know most of the references above - but if you do know at least one, it may help you to get a first idea of what GF is.
GF is easy to learn by following the tutorial. You can write your first translator in 15 minutes.
GF has an interactive command interpreter, as well as a batch compiler. Grammars can be compiled to parser and translator code in many different formats. These components can then be embedded in applications written in other programming languages. The formats currently supported are:
The GF programming language is high-level and advanced, featuring:
If you need some help with GF, the first places to start are the Tutorial and Reference pages. The printed book contains all the material in the tutorial and some extra bits, and is the recommended reference for GF.
There is also a GF server on Discord.
For bug reports and feature requests, please create an issue in the
GF Core or
For programming questions, consider asking them on Stack Overflow with the
If you have a more general question to the community, we recommend you ask it on the mailing list.
GF was first created in 1998 at Xerox Research Centre Europe, Grenoble, in the project Multilingual Document Authoring. At Xerox, it was used for prototypes including a restaurant phrase book, a database query system, a formalization of an alarm system instructions with translations to 5 languages, and an authoring system for medical drug descriptions.
Later projects using GF and involving third parties include, in chronological order:
Academically, GF has been used in at least ten PhD theses and resulted in more than a hundred scientific publications.
Libraries are at the heart of modern software engineering. In natural language applications, libraries are a way to cope with thousands of details involved in syntax, lexicon, and inflection. The GF resource grammar library (RGL) has support for an increasing number of languages, currently including Afrikaans, Amharic (partial), Arabic (partial), Basque (partial), Bulgarian, Catalan, Chinese, Czech (partial), Danish, Dutch, English, Estonian, Finnish, French, German, Greek ancient (partial), Greek modern, Hebrew (fragments), Hindi, Hungarian (partial), Interlingua, Italian, Japanese, Korean (partial), Latin (partial), Latvian, Maltese, Mongolian, Nepali, Norwegian bokmål, Norwegian nynorsk, Persian, Polish, Punjabi, Romanian, Russian, Sindhi, Slovak (partial), Slovene (partial), Somali (partial), Spanish, Swahili (fragments), Swedish, Thai, Turkish (fragments), and Urdu.
Adding a language to the resource library takes 3 to 9 months - contributions are welcome! You can start with the resource grammarian's tutorial.