summaryrefslogtreecommitdiff
path: root/next-lib/src/turkish/ResTur.gf
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2009-03-27 08:41:55 +0000
committerkrasimir <krasimir@chalmers.se>2009-03-27 08:41:55 +0000
commit5ced40f789bc8ef4ec824e6dca4aeb856bf5eac9 (patch)
treea79fb2ce82e90dc06e764a79b6d6ba9a1106ea6c /next-lib/src/turkish/ResTur.gf
parent90528ec1f13727e280d5826ffef80c0734916c24 (diff)
Turkish moved to next-lib
Diffstat (limited to 'next-lib/src/turkish/ResTur.gf')
-rw-r--r--next-lib/src/turkish/ResTur.gf106
1 files changed, 106 insertions, 0 deletions
diff --git a/next-lib/src/turkish/ResTur.gf b/next-lib/src/turkish/ResTur.gf
new file mode 100644
index 000000000..1fc1a8157
--- /dev/null
+++ b/next-lib/src/turkish/ResTur.gf
@@ -0,0 +1,106 @@
+--# -path=.:../abstract:../common:../../prelude
+
+resource ResTur = ParamX ** open Prelude, Predef in {
+
+--2 For $Noun$
+
+ param
+ Case = Nom | Acc | Dat | Gen | Loc | Ablat | Abess ;
+
+ Species = Indef | Def ;
+
+ VForm =
+ VPres Number Person
+ | VPast Number Person
+ | VFuture Number Person
+ | VAorist Number Person
+ | VImperative
+ | VInfinitive
+ ;
+
+ oper
+ Agr = {n : Number ; p : Person} ;
+
+-- For $Verb$.
+
+ Verb : Type = {
+ s : VForm => Str
+ } ;
+
+--2 For $Numeral$
+ param
+ DForm = unit | ten ;
+
+-- For $Numeral$.
+ oper
+ mkNum : Str -> Str -> {s : DForm => Str} =
+ \two, twenty ->
+ {s = table {
+ unit => two ;
+ ten => twenty
+ }
+ } ;
+
+ mkNP : (ben,beni,bana,banin,bende,benden:Str) -> Number -> Person ->
+ {s : Case => Str ; a : Agr} =
+ \ben,beni,bana,banin,bende,benden,n,p -> {
+ s = table {
+ Nom => ben ;
+ Acc => beni ;
+ Dat => bana ;
+ Gen => banin ;
+ Loc => bende ;
+ Abl => benden
+ } ;
+ a = {n=n; p=p} ;
+ } ;
+
+ oper
+ harmony4 : Str -> Str -> Str
+ = \base,suffix0 ->
+ let c : Str =
+ case base of {
+ _+c@("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")+
+ ("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")* => c ;
+ _ => error "harmony4"
+ } ;
+ h : Str =
+ case c of {
+ ("ı"|"a") => "ı" ;
+ ("i"|"e") => "i" ;
+ ("u"|"o") => "u" ;
+ ("ü"|"ö") => "ü"
+ } ;
+ suffix : Str =
+ case suffix0 of {
+ s1@(("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")*)
+ + ("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")
+ +s2 => s1+h+s2 ;
+ s => s
+ }
+ in base + suffix ;
+
+ harmony2 : Str -> Str -> Str
+ = \base,suffix0 ->
+ let c : Str =
+ case base of {
+ _+c@("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")+
+ ("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")* => c ;
+ _ => error "harmony4"
+ } ;
+ h : Str =
+ case c of {
+ ("ı"|"a") => "ı" ;
+ ("i"|"e") => "i" ;
+ ("u"|"o") => "u" ;
+ ("ü"|"ö") => "ü"
+ } ;
+ suffix : Str =
+ case suffix0 of {
+ s1@(("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")*)
+ + ("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")
+ +s2 => s1+h+s2 ;
+ s => s
+ }
+ in base + suffix ;
+}