summaryrefslogtreecommitdiff
path: root/src/GF/Devel/gf3.txt
blob: 56feeba2a690f56250ed3edd9384ee14dac02d1d (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
GF Version 3.0
Aarne Ranta
7 November 2007


This document summarizes the goals and status of the forthcoming
GF version 3.0.

==Overview==

GF 3 results from the following needs:
- refactor GF to make it more maintainable
- provide a simple command-line batch compiler
- replace gfc by the much simpler gfcc format for embedded grammars


The current implementation of GF 3 has three binaries:
- gfc, batch compiler, for building grammar applications
- gfi, interpreter for gfcc grammars, for using grammars
- gf, interactive compiler with interpreter, for developing grammars


Thus, roughly, gf = gfc + gfi.

Question: should we have, like current GF, just one binary, gf, and
implement the others by shell scripts calling gf with suitable options?
- +: one binary is less code altogether
- +: one binary is easier to distribute and update
- -: each of the components is less code by itself
- -: many users might only need either the compiler or the interpreter
- -: those users could avoid installation problems such as readline


There are some analogies in other languages:

  || GF    | Haskell | Java   ||
  |  gfc   | ghc     | javac   |
  |  gfi   | ghci*   | java    |
  |  gf    | ghci*   | -       |

In Haskell, ghci makes more than gfi since it reads source files, but
less than gf since it does not compile them to externally usable target
code.




==Status of code and functionalities==

GF executable v. 2.8
- gf: 263 modules, executable 7+ MB (on MacOS i386)


Current status of GF 3.0 alpha:
- gf3: 94 modules, executable 4+ MB
- gfc: 71 modules, executable 3+ MB
- gfi: 35 modules, executable 1+ MB


Missing functionalities
- in gfc:
  - input formats: cf, ebnf, gfe, old gf
  - output formats: speech grammars, bnfc
  - integrating options for input, output, and debugging information
    (as described in Devel/GFC/Options.hs)


- in gfi:
  - command cc (computing with resource)
  - morphological analysis, linearization with tables
  - quizzes, treebanks
  - syntax editor
  - readline


==Additional feature options==

Native Haskell readline

Binary formats for gfo and gfcc

Parallel compilation on multicore machines