diff options
| author | krasimir <krasimir@chalmers.se> | 2009-03-27 08:41:55 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2009-03-27 08:41:55 +0000 |
| commit | 5ced40f789bc8ef4ec824e6dca4aeb856bf5eac9 (patch) | |
| tree | a79fb2ce82e90dc06e764a79b6d6ba9a1106ea6c /next-lib/src/turkish/ResTur.gf | |
| parent | 90528ec1f13727e280d5826ffef80c0734916c24 (diff) | |
Turkish moved to next-lib
Diffstat (limited to 'next-lib/src/turkish/ResTur.gf')
| -rw-r--r-- | next-lib/src/turkish/ResTur.gf | 106 |
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 ; +} |
