summaryrefslogtreecommitdiff
path: root/gf-book/toc-gf-book.txt
blob: b46165de7b6e3b4e190e004bad87ebb28930eb66 (plain)
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
1 Introduction
1.1 What this book is about 
1.2 How to use this book 
1.3 The role of grammars in language processing 
1.4 The cost of grammars 
1.5 Multilinguality 
1.6 Semantic actions and interoperability 
1.7 Application grammars and resource grammars 
1.8 History of GF and its applications 
1.9 Related work 

part I A GF Tutorial

2 Basic concepts of multilingual grammars 
2.1 The BNF grammar format 
2.2 Using the GF system 
2.3 Testing a grammar in the GF system 
2.4 A BNF grammar for Italian 
2.5 BNF grammars and translation 
2.6 Abstract and concrete syntax 
2.7 Translating in GF 
2.8 The structure of grammar modules 
2.9 On the limitations of BNF grammars 
2.10 Suppression and metavariables 
2.11 Free variation 
2.12 Ambiguity 
2.13 Remaining problems 
2.14 Graph-based visualization and shell escapes 
2.15 Lexing and unlexing 
2.16 Character encoding 

3 Parameters, tables, and records 
3.1 The problem of morphological variation 
3.2 Parameters and tables 
3.3 Variable vs. inherent features 
3.4 Records and record types 
3.5 Linearization types and agreement 
3.6 Functional programming in GF: operation definitions 
3.7 The Food grammar revisited 
3.8 Testing inflection and operations in GF 
3.9 Partial application 
3.10 Discontinuous constituents 
3.11 Non-concatenative morphology 

4 Modular and scalable grammar writing 
4.1 Reusable resource modules 
4.2 Data abstraction 
4.3 Case expressions and string matching 
4.4 Smart paradigms 
4.5 Arabic morphology revisited 
4.6 Separating operation types and definitions 
4.7 Overloading of operations 
4.8 Module extension and inheritance 
4.9 Inheritance and opening 
4.10 Dependency graphs 
4.11 Algebraic datatypes for parameters 
4.12 Record extension and subtyping 
4.13 Tuples and product types 
4.14 Prefix-dependent choices and pattern macros 
4.15 Strings at compile time vs. run time 

5 Using the Resource Grammar Library 
5.1 The purpose and coverage of the library 
5.2 Lexical vs. phrasal rules 
5.3 Lexical categories and rules 
5.4 Phrasal categories and rules 
5.5 The resource API 
5.6 The library path 
5.7 Example: English 
5.8 Functor implementation of multilingual grammars 
5.9 Interfaces and instances 
5.10 A design pattern for multilingual grammars 
5.11 Division of labour revisited 
5.12 Overriding a functor 
5.13 Compile-time transfer 
5.14 The resource grammar as a linguistic ontology 
5.15 A tour of the resource API 
5.16 Flattening of constructions 
5.17 Tense and polarity 
5.18 Browsing the library 

6 Semantic actions and conditions in abstract syntax 
6.1 GF as a logical framework 
6.2 Dependent types 
6.3 Selectional restrictions 
6.4 Polymorphism 
6.5 Dependent types in concrete syntax 
6.6 Proof objects 
6.7 Proof-carrying documents 
6.8 Restricted polymorphism 
6.9 Variable bindings and higher-order abstract syntax 
6.10 Anaphoric expressions 
6.11 Semantic definitions 
6.12 Intensional and extensional equality 
6.13 Semantic actions and run-time transfer 
6.14 Predefined categories 
6.15 Probabilistic GF grammars 

part II Larger Grammars and Applications

7 Embedded grammars and code generation 
7.1 The portable grammar format 
7.2 The embedded interpreter and its API 
7.3 Embedded GF applications in Haskell 
7.4 The module PGF 
7.5 A stand-alone translator 
7.6 A translator loop 
7.7 A question-answer system 
7.8 Exporting GF datatypes 
7.9 Putting it all together 
7.10 Web server applications 
7.11 Embedded grammars in other host languages 
7.12 Multilingual syntax editing 
7.13 Language models for speech recognition 
7.14 Statistical language models 
7.15 Multimodal dialogue systems 

8 Interfacing formal and natural languages 
8.1 Arithmetic expressions 
8.2 Code generation as linearization 
8.3 Programs with variables 
8.4 The concrete syntax of assignments 
8.5 A liberal syntax of variables 
8.6 Is GF useful for defining formal languages? 
8.7 Natural language generation from logic 
8.8 Logical semantics of natural language 
8.9 Grammars for fractals 

9 Getting started with resource grammar programming 
9.1 Overview 
9.2 The miniature resource grammar 
9.3 Feature design 
9.4 Predication 
9.5 Complementation 
9.6 Determination 
9.7 Modification 
9.8 Lexical insertion 
9.9 The miniature resource in Italian 
9.10 Implementing morphology 
9.11 Implementing modification and determination 
9.12 Implementing verb phrases and complementation 
9.13 Implementing predication 
9.14 Implementing the rest 
9.15 Coordination and extraction 

10 Extending the Resource Grammar Library 
10.1 The module structure of a resource grammar 
10.2 Effort statistics 
10.3 Workflow for a new language 
10.4 Reusing code from the miniature resource 
10.5 The development-test cycle 
10.6 Non-ASCII alphabets and transliterations 
10.7 Coding discipline 
10.8 Functors in the resource grammar 
10.9 Widening the coverage for parsing text 
10.10 Bootstrapping a resource lexicon 

A A miniature resource grammar 
A.1 Abstract syntax 
A.2 Auxiliary resource module for Italian 
A.3 Italian concrete syntax 
A.4 Morphological paradigms API for Italian 
A.5 Test lexicon 
A.6 Syntax API 

B A glossary of linguistic terms 

part III GF Reference Manual

C The GF Programming Language 

C.1 Overview of GF 
C.2 The module system 
C.2.1 Top-level and supplementary module structure 
C.2.2 Compilation units 
C.2.3 Names 
C.2.4 The structure of a module 
C.2.5 Module types, headers, and bodies 
C.2.6 Digression: the logic of module types 
C.2.7 Inheritance 
C.2.8 Opening 
C.2.9 Name resolution 
C.2.10 Functor instantiations 
C.2.11 Completeness 
C.3 Judgements 
C.3.1 Overview of the forms of judgement 
C.3.2 Category declarations, cat  
C.3.3 Hypotheses and contexts 
C.3.4 Function declarations, fun  
C.3.5 Function definitions, def  
C.3.6 Data constructor declarations, data  
C.3.7 The semantic status of an abstract syntax function 
C.3.8 Linearization type definitions, lincat  
C.3.9 Linearization definitions, lin  
C.3.10 Linearization default definitions, lindef  
C.3.11 Printname definitions, printname cat/fun  
C.3.12 Parameter type definitions, param  
C.3.13 Parameter values 
C.3.14 Operation definitions, oper  
C.3.15 Operation overloading 
C.3.16 Flag definitions, flags  
C.4 Types and expressions 
C.4.1 Overview of expression forms 
C.4.2 The functional fragment: expressions in abstract syntax 
C.4.3 List categories 
C.4.4 Conversions 
C.4.5 Syntax trees 
C.4.6 Predefined types in abstract syntax 
C.4.7 Overview of expressions in concrete syntax 
C.4.8 Values, canonical forms, and run-time variables 
C.4.9 Token lists, tokens, and strings 
C.4.10 Records and record types 
C.4.11 Subtyping 
C.4.12 Tables and table types 
C.4.13 Pattern matching 
C.4.14 Free variation 
C.4.15 Local definitions 
C.4.16 Function applications in concrete syntax 
C.4.17 Reusing top-level grammars as resources 
C.4.18 Predefined concrete syntax types 
C.4.19 Predefined concrete syntax operations 
C.5 Flags and pragmas 
C.5.1 Some flags and their values 
C.5.2 Compiler pragmas 
C.6 The grammar of GF 
C.6.1 The lexical structure of GF 
C.6.2 The syntactic structure of GF 

D The GF Resource Grammar Library 
D.1 The category system 
D.1.1 Phrasal and closed lexical categories 
D.1.2 Open lexical categories 
D.2 Syntax rules 
D.2.1 Suprasentential level: texts and utterances 
D.2.2 Sentential level: polarity, tense, and mood 
D.2.3 Predication, complementation, and extraction 
D.2.4 Question and relative clause formation 
D.2.5 Interrogative and relative pronouns 
D.2.6 Noun phrases and determiners 
D.2.7 The numeral system 
D.2.8 Common nouns, adjectives, and adverbs 
D.2.9 Coordination 
D.2.10 Structural words 
D.3 Lexical Paradigms 
D.3.1 Paradigms for regular words 
D.3.2 Paradigms for verb, adjective, and noun subcategories 
D.4 Other library modules 
D.4.1 The Prelude module 
D.4.2 The Formal module 
D.4.3 The Symbolic module 
D.4.4 The Combinators module 

E The GF Software System 
E.1 The GF shell 
E.2 The GF batch compiler 

F Bibliography 
F.1 Publications on GF 
F.2 Background and related work 

Index