This commit is contained in:
aarne
2004-10-22 07:59:13 +00:00
parent 733d527797
commit 72f02027b3
9 changed files with 248 additions and 53 deletions

10
grammars/basic/README Normal file
View File

@@ -0,0 +1,10 @@
The naming of the grammars tut1.*.gf comes from their use in the
first GF tutorial in 1998. They still make a good starting
point to try out translating and editing. Their code is mostly
automatic translation from old-GF source.
The grammars Basic.gf and English.gf follow the module syntax
of GF 2. The other grammars can also be used in GF 2, which
creates a module structure when compiling them.
(AR 1998-2004)

View File

@@ -0,0 +1,12 @@
cat
S ; NP ; A1 ; CN ;
fun
PredA1 : NP -> A1 -> S ;
CondS : S -> S -> S ;
DisjA1 : A1 -> A1 -> A1 ;
Every : CN -> NP ;
ModA1 : CN -> A1 -> CN ;
Number : CN ;
Even : A1 ; Odd : A1 ; Prime : A1 ;
Zero : NP ;

View File

@@ -0,0 +1,32 @@
include tut1.Abs.gf ;
param Ord = dir | indir | sub ;
lincat S = {s : Ord => Str} ;
lincat NP = {s : Str} ;
lincat A1 = {s : Str} ;
lincat CN = {s : Str} ;
lin PredA1 Q F = {s = table {
{dir} => Q.s ++ "ist" ++ F.s ;
{indir} => "ist" ++ Q.s ++ F.s ;
{sub} => Q.s ++ F.s ++ "ist"}} ;
lin CondS A B = {s = table {
{dir} => "wenn" ++ (A.s ! sub) ++ "dann" ++ B.s ! indir ;
{indir} => (B.s ! indir) ++ "wenn" ++ A.s ! sub ;
{sub} => (B.s ! sub) ++ "wenn" ++ A.s ! sub}} ;
lin DisjA1 F G =
{s = F.s ++ "oder" ++ G.s} ;
lin Every A =
{s = "jede" ++ A.s} ;
lin ModA1 A F =
{s = F.s ++ A.s} ;
lin Number =
{s = "Zahl"} ;
lin Even =
{s = "gerade"} ;
lin Odd =
{s = "ungerade"} ;
lin Prime =
{s = "unteilbar"} ;
lin Zero =
{s = "Null"} ;

View File

@@ -0,0 +1,26 @@
include tut1.Abs.gf ;
lincat
S = {s : Str} ; NP = {s : Str} ; A1 = {s : Str} ; CN = {s : Str} ;
lin PredA1 Q F =
{s = Q.s ++ "is" ++ F.s} ;
lin CondS A B =
{s = "if" ++ A.s ++ "then" ++ B.s} ;
lin DisjA1 F G =
{s = F.s ++ "or" ++ G.s} ;
lin Every A =
{s = "every" ++ A.s} ;
lin ModA1 A F =
{s = F.s ++ A.s} ;
lin Number =
{s = "number"} ;
lin Even =
{s = "even"} ;
lin Odd =
{s = "odd"} ;
lin Prime =
{s = "prime"} ;
lin Zero =
{s = "zero"} ;

View File

@@ -0,0 +1,26 @@
include tut1.Abs.gf ;
lincat S = {s : Str} ;
lincat NP = {s : Str} ;
lincat A1 = {s : Str} ;
lincat CN = {s : Str} ;
lin PredA1 Q F =
{s = Q.s ++ "on" ++ F.s} ;
lin CondS A B =
{s = "jos" ++ A.s ++ "niin" ++ B.s} ;
lin DisjA1 F G =
{s = F.s ++ "tai" ++ G.s} ;
lin Every A =
{s = A.s ++ "kuin" ++ A.s} ;
lin ModA1 A F =
{s = F.s ++ A.s} ;
lin Number =
{s = "luku"} ;
lin Even =
{s = "parillinen"} ;
lin Odd =
{s = "pariton"} ;
lin Prime =
{s = "jaoton"} ;
lin Zero =
{s = "nolla"} ;

View File

@@ -0,0 +1,26 @@
include tut1.Abs.gf ;
lincat S = {s : Str} ;
lincat NP = {s : Str} ;
lincat A1 = {s : Str} ;
lincat CN = {s : Str} ;
lin PredA1 Q F =
{s = Q.s ++ "est" ++ F.s} ;
lin CondS A B =
{s = "si" ++ A.s ++ "alors" ++ B.s} ;
lin DisjA1 F G =
{s = F.s ++ "ou" ++ G.s} ;
lin Every A =
{s = "tout" ++ A.s} ;
lin ModA1 A F =
{s = A.s ++ F.s} ;
lin Number =
{s = "nombre"} ;
lin Even =
{s = "pair"} ;
lin Odd =
{s = "impair"} ;
lin Prime =
{s = "premier"} ;
lin Zero =
{s = "zéro"} ;

View File

@@ -0,0 +1,26 @@
include tut1.Abs.gf ;
lincat S = {s : Str} ;
lincat NP = {s : Str} ;
lincat A1 = {s : Str} ;
lincat CN = {s : Str} ;
lin PredA1 Q F =
{s = Q.s ++ "è" ++ F.s} ;
lin CondS A B =
{s = "se" ++ A.s ++ "allora" ++ B.s} ;
lin DisjA1 F G =
{s = F.s ++ "o" ++ G.s} ;
lin Every A =
{s = "ogni" ++ A.s} ;
lin ModA1 A F =
{s = A.s ++ F.s} ;
lin Number =
{s = "numero"} ;
lin Even =
{s = "pari"} ;
lin Odd =
{s = "dispari"} ;
lin Prime =
{s = "primo"} ;
lin Zero =
{s = "zero"} ;

View File

@@ -0,0 +1,32 @@
include tut1.Abs.gf ;
param Ord = dir | indir | sub ;
lincat S = {s : Ord => Str} ;
lincat NP = {s : Str} ;
lincat A1 = {s : Str} ;
lincat CN = {s : Str} ;
lin PredA1 Q F = {s = table {
dir => Q.s ++ "är" ++ F.s ;
indir => "är" ++ Q.s ++ F.s ;
sub => Q.s ++ "är" ++ F.s}} ;
lin CondS A B = {s = table {
dir => "om" ++ A.s ! sub ++ "så" ++ B.s ! indir ;
indir => B.s ! indir ++ "om" ++ A.s ! sub ;
sub => B.s ! sub ++ "om" ++ A.s ! sub}} ;
lin DisjA1 F G =
{s = F.s ++ "eller" ++ G.s} ;
lin Every A =
{s = "varje" ++ A.s} ;
lin ModA1 A F =
{s = F.s ++ A.s} ;
lin Number =
{s = "tal"} ;
lin Even =
{s = "jämnt"} ;
lin Odd =
{s = "udda"} ;
lin Prime =
{s = "primt"} ;
lin Zero =
{s = "noll"} ;