diff --git a/doc/gf2-highlights.html b/doc/gf2-highlights.html new file mode 100644 index 000000000..57cd45044 --- /dev/null +++ b/doc/gf2-highlights.html @@ -0,0 +1,299 @@ + + +
+ ++ +13/10/2003 + +
+ +Aarne Ranta + +
+ +GF1 grammars can be automatically translated to GF2 (although result not as good +as manual). The results can be saved in GF2 files, but this is not necessary. + +
+ +Example grammars and resource libraries are in the process of +be converted. At the same time, their API has grown with +new constructions. +English and German resources are up-to-date. +Finnish and Swedish are also, but their derived libraries +have not been adapted to the use of security-bringing lock fields. + + +
+ +A make facility works, finding out which modules have to be recompiled. +There is some room for improvement. + +
+
+The module type grammar (to build multilingual grammars) not yet
+implemented.
+
+
+
+Abstract modules (interface, instance, and incomplete)
+have not been stress-tested, but work in the examples in
+resource/romance and resource/french.
+
+
+
+Soundness checking of module depencencies and completeness is not
+complete.
+
+
+
+
+
+
+The option -o causes GF2 to write these modules into files.
+
+
+
+The flags -abs, -cnc, and -res can be used
+to give custom names to the modules. In particular, it is good to use
+the -abs flag to guarantee that the abstract syntax module
+has the same name for all grammars in a multilingual environmens:
+
+
+The same flags as in the import command can be used when invoking
+GF2 from the system shell. Many grammars can be imported on the same command
+line, e.g.
+
+
+Moreover:
+
+Example of qualified opening:
+
+
+The module header is the beginning of the module code up to the
+first left bracket ({). The header gives
+
+
+filename = modulename . extension
+
+
+
+File name extensions:
+
+
+What the make facility does when compiling Foo.gf
+How to use GF 1.* files
+
+The import command i is given the option -old. E.g.
+
+ i -old tut1.Eng.g2
+
+This generates, internally, three modules:
+
+ abstract tut1 = ...
+ resource ResEng = ...
+ concrete Eng of tut1 = open ResEng in ...
+
+(The names are different if the file name has fewer parts.)
+
+
+ i -old -abs=Numerals hungarian.gf
+ i -old -abs=Numerals tamil.gf
+ i -old -abs=Numerals sanskrit.gf
+
+
+
+ % gf2 -old -abs=Tutorial tut1.Eng.gf tut1.Fin.gf tut1.Fra.gf
+
+
+
+
+
+
+
+Abstract, concrete, and resource modules
+
+Judgement forms are sorted as follows:
+
+
+Example:
+
+ abstract Sums = {
+ cat
+ Exp ;
+ fun
+ One : Exp ;
+ plus : Exp -> Exp -> Exp ;
+ }
+
+ concrete EnglishSums of Sums = open ResEng in {
+ lincat
+ Exp = {s : Str ; n : Number} ;
+ lin
+ One = expSg "one" ;
+ sum x y = expSg ("the" ++ "sum" ++ "of" ++ x.s ++ "and" ++ y.s) ;
+ }
+
+ resource ResEng = {
+ param
+ Number = Sg | Pl ;
+ oper
+ expSG : Str -> {s : Str ; n : Number} = \s -> {s = s ; n = Sg} ;
+ }
+
+
+
+
+
+
+Opening and extending modules
+
+A concrete or resource can open a
+resource. This means that
+
+
+A module of any type can moreover extend a module of the same type.
+This means that
+
+
+Examples of extension:
+
+ abstract Products = Sums ** {
+ fun times : Exp -> Exp -> Exp ;
+ }
+ -- names exported: Exp, plus, times
+
+ concrete English of Products = EnglishSums ** open ResEng in {
+ lin times x y = expSg ("the" ++ "product" ++ "of" ++ x.s ++ "and" ++ y.s) ;
+ }
+
+Another important difference:
+
+ concrete NumberSystems of Systems = open (Bin = Binary), (Dec = Decimal) in {
+ lin
+ BZero = Bin.Zero ;
+ DZero = Dec.Zero
+ }
+
+
+
+
+
+Compiling modules
+
+Separate compilation assumes there is one module per file.
+
+
+
+
+
+
+Only gf files should ever be written/edited manually!
+
+
+
+
+
+
+
+
+
+
+
+