summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-11-07 13:07:02 +0000
committeraarne <aarne@cs.chalmers.se>2007-11-07 13:07:02 +0000
commit8c47cb46b2dd6592281b31452dba360caebc4dd6 (patch)
tree7a6d4e09bc3bcace8949605c9a5fe2f9874fbc45 /src
parent2c4d34af28b31fefe26379bf6301ce9b48fb38dc (diff)
moved gfcc program to gfi, wrote document gf3.txt
Diffstat (limited to 'src')
-rw-r--r--src/GF/Devel/GFI.hs (renamed from src/GF/Devel/Shell.hs)0
-rw-r--r--src/GF/Devel/gf3.txt76
-rw-r--r--src/Makefile8
3 files changed, 80 insertions, 4 deletions
diff --git a/src/GF/Devel/Shell.hs b/src/GF/Devel/GFI.hs
index 1d88a24a0..1d88a24a0 100644
--- a/src/GF/Devel/Shell.hs
+++ b/src/GF/Devel/GFI.hs
diff --git a/src/GF/Devel/gf3.txt b/src/GF/Devel/gf3.txt
new file mode 100644
index 000000000..3eb2d6e35
--- /dev/null
+++ b/src/GF/Devel/gf3.txt
@@ -0,0 +1,76 @@
+GF Version 3.0
+Aarne Ranta
+7 November 2007
+
+
+==Overview==
+
+GF 3 results from the following needs:
+- refactor GF to make it more maintainable
+- provide a simple command-line batch compiler
+- replace the gfcc 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
+
+
+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
+
+
+- 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
+
diff --git a/src/Makefile b/src/Makefile
index 6cda7d458..99a8c9304 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -198,10 +198,10 @@ gfc:
strip gfc
mv gfc ../bin/
-gfcc:
- $(GHMAKE) $(GHCOPTFLAGS) -o gfcc GF/Devel/Shell.hs
- strip gfcc
- mv gfcc ../bin/
+gfi:
+ $(GHMAKE) $(GHCOPTFLAGS) -o gfi GF/Devel/GFI.hs
+ strip gfi
+ mv gfi ../bin/
gf3:
$(GHMAKE) $(GHCOPTFLAGS) -o gf3 GF/Devel/GF3.hs