1
0
forked from GitHub/gf-core

Turkish moved to next-lib

This commit is contained in:
krasimir
2009-03-27 08:41:55 +00:00
parent 90528ec1f1
commit 5ced40f789
8 changed files with 242 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
concrete CatTur of Cat = CommonX ** open ResTur, Prelude in {
flags optimize=all_subs ;
lincat
-- Noun
NP, Pron = {s : Case => Str ; a : Agr} ;
-- Open lexical classes, e.g. Lexicon
V, VS, VQ, VA = Verb ;
N = {s : Number => Case => Str} ;
}

View File

@@ -0,0 +1,9 @@
--# -path=.:../abstract:../common:prelude
concrete GrammarTur of Grammar =
NumeralTur
** {
flags startcat = Phr ; unlexer = text ; lexer = text ;
} ;

View File

@@ -0,0 +1,10 @@
--# -path=.:../abstract:../common:prelude
concrete LangTur of Lang =
GrammarTur,
LexiconTur
** {
flags startcat = Phr ; unlexer = text ; lexer = text ; coding=utf8 ;
} ;

View File

@@ -0,0 +1,11 @@
--# -path=.:prelude
concrete LexiconTur of Lexicon = CatTur **
open ResTur, ParadigmsTur, Prelude in {
lin
come_V = regV "gelmek" ;
go_V = regV "gitmek" ;
run_V = regV "koşmek" ;
stop_V = regV "durmak" ;
} ;

View File

@@ -0,0 +1,34 @@
concrete NumeralTur of Numeral = CatTur ** open ResTur in {
lincat
Digit = {s : DForm => Str} ;
Sub10 = {s : DForm => Str ; n : Number} ;
Sub100 = {s : Str ; n : Number} ;
Sub1000 = {s : Str ; n : Number} ;
Sub1000000 = {s : Str ; n : Number} ;
lin num x = x ;
lin n2 = mkNum "iki" "yirmi" ;
lin n3 = mkNum "üç" "otuz" ;
lin n4 = mkNum "dört" "kırk" ;
lin n5 = mkNum "beş" "elli" ;
lin n6 = mkNum "altı" "altmış" ;
lin n7 = mkNum "yedi" "yetmiş" ;
lin n8 = mkNum "sekiz" "seksen" ;
lin n9 = mkNum "dokuz" "doksan" ;
lin pot01 = mkNum "bir" "on" ** {n = Sg} ;
lin pot0 d = d ** {n = Pl} ;
lin pot110 = {s="on"; n = Pl} ;
lin pot111 = {s="on" ++ "&+" ++ "bir"; n = Pl} ;
lin pot1to19 d = {s = "on" ++ "&+" ++ d.s ! unit; n = Pl} ;
lin pot0as1 n = {s = n.s ! unit; n = n.n} ;
lin pot1 d = {s = d.s ! ten; n = Pl} ;
lin pot1plus d e = {s = d.s ! ten ++ e.s ! unit ; n = Pl} ;
lin pot1as2 n = n ;
lin pot2 d = {s = d.s ! unit ++ "&+" ++ "yüz"; n = Pl} ;
lin pot2plus d e = {s = d.s ! unit ++ "&+" ++ "yüz" ++ e.s ; n = Pl} ;
lin pot2as3 n = n ;
lin pot3 n = {s = n.s ++ "&+" ++ "bin" ; n = Pl} ;
lin pot3plus n m = {s = n.s ++ "&+" ++ "bin" ++ "&+" ++ m.s; n = Pl} ;
}

View File

@@ -0,0 +1,43 @@
resource ParadigmsTur = open
Predef,
Prelude,
ResTur
in {
oper
regV : Str -> Verb = \inf ->
let base : Str
= case inf of {
base+"mak" => base ;
base+"mek" => base
}
in { s = table {
VPres Sg P1 => harmony4 (harmony4 base "iyor") "im" ;
VPres Sg P2 => harmony4 (harmony4 base "iyor") "sin" ;
VPres Sg P3 => harmony4 base "iyor" ;
VPres Pl P1 => harmony4 (harmony4 base "iyor") "iz" ;
VPres Pl P2 => harmony4 (harmony4 (harmony4 base "iyor") "sin") "iz" ;
VPres Pl P3 => harmony4 (harmony4 base "iyor") "ler" ;
VPast Sg P1 => harmony4 base "dim" ;
VPast Sg P2 => harmony4 base "din" ;
VPast Sg P3 => harmony4 base "di" ;
VPast Pl P1 => harmony4 base "dik" ;
VPast Pl P2 => harmony4 (harmony4 base "din") "iz" ;
VPast Pl P3 => harmony4 base "diler" ;
VFuture Sg P1 => harmony4 (harmony2 base "ecek") "im" ;
VFuture Sg P2 => harmony4 (harmony2 base "ecek") "sin" ;
VFuture Sg P3 => harmony2 base "ecek" ;
VFuture Pl P1 => harmony4 (harmony2 base "ecek") "iz" ;
VFuture Pl P2 => harmony4 (harmony2 base "ecek") "siniz" ;
VFuture Pl P3 => harmony4 (harmony2 base "ecek") "ler" ;
VAorist Sg P1 => harmony4 base "im" ;
VAorist Sg P2 => harmony4 base "sin" ;
VAorist Sg P3 => base ;
VAorist Pl P1 => harmony4 base "iz" ;
VAorist Pl P2 => harmony4 (harmony4 base "sin") "iz" ;
VAorist Pl P3 => harmony4 base "ler" ;
VImperative => base ;
VInfinitive => inf
}
} ;
}

View File

@@ -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 ;
}

View File

@@ -0,0 +1,16 @@
concrete StructuralTur of Structural = CatTur ** {
flags optimize=all ;
lin
he_Pron = mkNP "o" "onu" "ona" "onun" "onda" "ondan" Sg P3 ;
i_Pron = mkNP "ben" "beni" "bana" "banim" "bende" "benden" Sg P1 ;
it_Pron = mkNP "o" "onu" "ona" "onun" "onda" "ondan" Sg P3 ;
she_Pron = mkNP "o" "onu" "ona" "onun" "onda" "ondan" Sg P3 ;
they_Pron = mkNP "onlar" "onları" "onlara" "onların" "onlarda" "onlardan" Pl P3 ;
we_Pron = mkNP "biz" "bizi" "bize" "bizim" "bizde" "bizden" Pl P1 ;
youSg_Pron = mkNP "sen" "seni" "sana" "senin" "sende" "senden" Sg P2 ;
youPl_Pron = mkNP "siz" "sizi" "size" "sizin" "sizde" "sizden" Pl P2 ;
youPol_Pron = mkNP "siz" "sizi" "size" "sizin" "sizde" "sizden" Pl P2 ;
}