summaryrefslogtreecommitdiff
path: root/grammars/basic
diff options
context:
space:
mode:
Diffstat (limited to 'grammars/basic')
-rw-r--r--grammars/basic/README10
-rw-r--r--grammars/basic/tut1.Abs.gf12
-rw-r--r--grammars/basic/tut1.Deu.gf32
-rw-r--r--grammars/basic/tut1.Eng.gf26
-rw-r--r--grammars/basic/tut1.Fin.gf26
-rw-r--r--grammars/basic/tut1.Fra.gf26
-rw-r--r--grammars/basic/tut1.Ita.gf26
-rw-r--r--grammars/basic/tut1.Sve.gf32
8 files changed, 190 insertions, 0 deletions
diff --git a/grammars/basic/README b/grammars/basic/README
new file mode 100644
index 000000000..f4e31e22d
--- /dev/null
+++ b/grammars/basic/README
@@ -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)
diff --git a/grammars/basic/tut1.Abs.gf b/grammars/basic/tut1.Abs.gf
new file mode 100644
index 000000000..195ca3b87
--- /dev/null
+++ b/grammars/basic/tut1.Abs.gf
@@ -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 ;
diff --git a/grammars/basic/tut1.Deu.gf b/grammars/basic/tut1.Deu.gf
new file mode 100644
index 000000000..f060cfb37
--- /dev/null
+++ b/grammars/basic/tut1.Deu.gf
@@ -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"} ;
+
diff --git a/grammars/basic/tut1.Eng.gf b/grammars/basic/tut1.Eng.gf
new file mode 100644
index 000000000..f9481a8e0
--- /dev/null
+++ b/grammars/basic/tut1.Eng.gf
@@ -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"} ;
+
diff --git a/grammars/basic/tut1.Fin.gf b/grammars/basic/tut1.Fin.gf
new file mode 100644
index 000000000..1aa20ea3b
--- /dev/null
+++ b/grammars/basic/tut1.Fin.gf
@@ -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"} ;
diff --git a/grammars/basic/tut1.Fra.gf b/grammars/basic/tut1.Fra.gf
new file mode 100644
index 000000000..04bd309c6
--- /dev/null
+++ b/grammars/basic/tut1.Fra.gf
@@ -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"} ;
diff --git a/grammars/basic/tut1.Ita.gf b/grammars/basic/tut1.Ita.gf
new file mode 100644
index 000000000..85542d5fa
--- /dev/null
+++ b/grammars/basic/tut1.Ita.gf
@@ -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"} ;
diff --git a/grammars/basic/tut1.Sve.gf b/grammars/basic/tut1.Sve.gf
new file mode 100644
index 000000000..1bf610ecc
--- /dev/null
+++ b/grammars/basic/tut1.Sve.gf
@@ -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"} ;
+