1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
|
<!DOCTYPE html>
<HTML>
<HEAD>
<TITLE>GF - Grammatical Framework</TITLE>
<link rel=stylesheet href="css/style.css">
<script type="text/javascript">
function sitesearch() {
var q=document.forms[0].q.value;
var site=" site:www.grammaticalframework.org";
var search=encodeURIComponent(q+site)
document.location.href="http://www.google.com/search?q="+search
return false;
}
</script>
</HEAD>
<BODY>
<script type="text/javascript">
document.write('<div style="text-align: right"> <form onsubmit="return sitesearch()" method=get action="http://www.google.com/search"> <input type=search name="q" placeholder="site search"> <input type=submit value="Search"> </form></div>')
</script>
<div class=center>
<IMG SRC="doc/Logos/gf0.png" alt="">
<H1>Grammatical Framework</H1>
<P>
Version 3.3.3
<br>
March 2012
<P>
<div class=mainlinks style="font-size: 140%">
[ <A HREF="demos/index.html">Demos</A>
| <A HREF="http://www.grammaticalframework.org/download/index.html">Download</A>
| <A HREF="lib/doc/synopsis.html">Libraries</A>
| <A HREF="doc/gf-refman.html">Reference</A>
| <A HREF="doc/tutorial/gf-tutorial.html">Tutorial</A>
| <A HREF="doc/gf-quickstart.html">QuickStart</A>
| <A HREF="http://groups.google.com/group/gf-dev">UserGroup</A>
| <A HREF="gf-book">Book</A><font size=-1 color=red><i>New!</i></font>
| <a href="http://cloud.grammaticalframework.org/"><img src="src/www/P/gf-cloud.png" alt="GF Cloud Service" title="GF Cloud Service"></a>
]
</div>
<div class=extralinks>
<p>
[ <a href="http://code.google.com/p/grammatical-framework/issues/list">Issues</a>
| <A HREF="http://code.google.com/p/grammatical-framework/wiki/SideBar?tm=6">Wiki</A>
| <A HREF="doc/gf-people.html">People</A>
| <A HREF="doc/gf-bibliography.html">Publications</A>
| <A HREF="doc/gf-reference.html">QuickRefCard</A>
| <A HREF="doc/gf-shell-reference.html">GF Shell Reference</A>
| <a href="doc/gf-editor-modes.html">GF Editor Modes</a>
| <a href="eclipse/index.html">GF Eclipse Plugin</a>
| <A HREF="doc/gf-lrec-2010.pdf">LibTutorial</A>
| <A HREF="http://www.molto-project.eu">MOLTO</A>
| <A HREF="http://school.grammaticalframework.org">SummerSchool</A>
| <A HREF="/android/">Android</A>
]
</div>
</div>
<H2>News</H2>
<div class=news2>
<dl>
<dt>2012-05-07: New resource grammar language: Japanese.
See <a href="lib/doc/synopsis.html">library synopsis</a>.
<dt>2012-03-23: There will be a
<a href="gf-tutorial-icfp-2012/">GF tutorial at ICFP 2012</a>
in Copenhagen.
<dt>2012-03-03: <strong>GF 3.3.3 released!</strong>
<a href="download/release-3.3.3.html">Release notes</a>.
<dt>2012-02-24: New resource grammar languages: Hindi, Sindhi.
See <a href="lib/doc/synopsis.html">library synopsis</a>.
<dt>2011-12-29: New resource grammar languages: Latvian, Thai.
See <a href="lib/doc/synopsis.html">library synopsis</a>.
<dt>2011-10-27: <strong>GF 3.3 released!</strong>
<a href="download/release-3.3.html">Release notes</a>.
<dt>2011-09-20: There is now a page collecting
<a href="doc/gf-editor-modes.html">editor modes for GF</a>.
Contributions are welcome!
<dt>2011-09-12: <strong>GF 3.2.9</strong> source snapshot with faster grammar compilation available. See <a href="download/index.html">Downloads</a>.
<dt>2011-04-22: <a href="android/tutorial/">JPGF Android Tutorial</a> added.
<dt>2011-04-15: The <a href="gf-book">GF Book</a> is available.
<dt>2011-01-13: <a href="http://www.molto-project.eu/node/1177">Phrasedroid
available on the Android Market</a>.
<dt>2011-01-04: GF is part of the
<a href="http://www.clt.gu.se/clt-toolkit">CLT Toolkit</a>.
<dt>2010-12-23: <strong>GF 3.2 released!</strong>
<a href="download/release-3.2.html">Release notes</a>.
<dt>2010-12-22:
<A HREF="http://school.grammaticalframework.org">GF Summer School</A>
in Barcelona, 15-26 August 2011.
</dl>
</div>
<H2>What is GF</H2>
<P>
GF, Grammatical Framework, is a programming language for
<B>multilingual grammar applications</B>. It is
</P>
<UL>
<LI>a <B>special-purpose language for grammars</B>, like YACC, Bison, Happy, BNFC,
but not restricted to programming languages
<LI>a <B>functional language</B>, like Haskell, Lisp, OCaml, Scheme, SML,
but specialized to grammar writing
<LI>a <B>natural language processing framework</B>, like LKB, XLE, Regulus,
but based on functional programming and type theory
<LI>a <B>categorial grammar formalism</B>, like ACG, CCG,
but different and equipped with different tools
<LI>a <B>logical framework</B>, like Agda, Coq, Isabelle,
but equipped with concrete syntax in addition to logic
</UL>
<P>
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.
</P>
<H2>Applications</H2>
<P>
GF can be used for building
</P>
<UL>
<LI><A HREF="http://grammaticalframework.org:41296">translation systems</A>
<LI><A HREF="http://grammaticalframework.org:41296/minibar/minibar.html">multilingual web gadgets</A>
<LI><A HREF="http://www.cs.chalmers.se/~hallgren/Alfa/Tutorial/GFplugin.html">natural-language interfaces</A>
<LI><A HREF="http://www.youtube.com/watch?v=1bfaYHWS6zU">dialogue systems</A>
<LI><A HREF="lib/doc/synopsis.html">natural language resources</A>
</UL>
<H2>Availability</H2>
<P>
GF is <B>open-source</B>, licensed under <A HREF="LICENSE">GPL</A> (the program) and
<A HREF="./LICENSE">LGPL</A> and <A HREF="./LICENSE">BSD</A> (the libraries). It
is available for
</P>
<UL>
<LI>Linux
<LI>Mac OS X
<LI>Windows
<li>Android mobile platform (via Java; runtime)
<LI>via compilation to JavaScript, almost any platform that has a web browser (runtime)
</UL>
<H2>Projects</H2>
<P>
GF was first created in 1998 at
<A HREF="http://www.xrce.xerox.com/">Xerox Research Centre Europe</A>,
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.
</P>
<P>
Later projects using GF and involving third parties include, in chronological order,
</P>
<UL>
<LI><A HREF="http://www.cs.chalmers.se/~hallgren/Alfa/Tutorial/GFplugin.html">GF-Alfa</A>:
natural language interface to formal proofs
<LI><A HREF="http://efficient.citi.tudor.lu/index_noframe.html">Efficient</A>:
authoring tool for business models.
<LI><A HREF="http://www.key-project.org/">GF-KeY</A>:
authoring and translation of software specifications
<LI><A HREF="http://www.talk-project.org">TALK</A>:
multilingual and multimodal spoken dialogue systems
<LI><A HREF="http://webalt.math.helsinki.fi/">WebALT</A>:
multilingual generation of mathematical exercises (commercial project)
<LI><A HREF="http://spraakbanken.gu.se/sal/">SALDO</A>:
Swedish morphological dictionary based on rules developed for GF and
<A HREF="http://www.cse.chalmers.se/alumni/markus/FM/">Functional Morphology</A>
<LI><a href="http://www.molto-project.eu">MOLTO</a>:
multilingual online translation.
</UL>
<P>
Academically, GF has been used in four PhD theses and resulted in around
fifty scientific publications (see <A HREF="doc/gf-bibliography.html">GF publication list</A>).
</P>
<H2>Programming in GF</H2>
<P>
GF is easy to learn by following the <A HREF="doc/tutorial/gf-tutorial.html">tutorial</A>.
You can write your first translator in 15 minutes.
</P>
<P>
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:
</P>
<UL>
<LI>Haskell
<li>Java, in particular the Android platform
<LI>JavaScript
<LI>Speech recognition: HTK/ATK, Nuance, JSGF
</UL>
<P>
The GF programming language is high-level and advanced, featuring
</P>
<UL>
<LI>static type checking
<LI>higher-order functions
<LI>dependent types
<LI>pattern matching with data constructors and regular expressions
<LI>module system with multiple inheritance and parametrized modules
</UL>
<H2>Libraries</H2>
<P>
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
<A HREF="lib/doc/synopsis.html">GF resource grammar library</A> has
support for an increasing number of languages, currently including
</P>
<OL>
<LI>Amharic (partial)
<LI>Arabic (partial)
<LI>Bulgarian
<LI>Catalan
<LI>Danish
<LI>Dutch
<LI>English
<LI>Finnish
<LI>French
<LI>German
<LI>Hindi (fragments)
<LI><A HREF="http://www.interlingua.com/">Interlingua</A>
<LI>Italian
<LI>Latin (fragments)
<LI>Latvian
<LI>Nepali
<LI>Norwegian bokmål
<LI>Persian
<LI>Polish
<li>Punjabi
<LI>Romanian
<LI>Russian
<LI>Spanish
<LI>Swedish
<LI>Thai
<LI>Turkish (fragments)
<LI>Urdu
</OL>
<P>
Adding a language to the resource library takes 3 to 9
months - contributions
are welcome! You can start with the <A HREF="doc/gf-lrec-2010.pdf">resource grammarian's tutorial</A>.
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-7811807-3");
pageTracker._trackPageview();
} catch(err) {}</script>
</BODY>
</HTML>
|