1
0
forked from GitHub/gf-core

next-lib renamed to lib, lib to old-lib

This commit is contained in:
aarne
2009-06-22 15:39:08 +00:00
parent 90bd07b1cf
commit 2116f41bc2
1433 changed files with 8 additions and 8 deletions

View File

@@ -0,0 +1,5 @@
--# -path=.:../abstract:../common:prelude
concrete AllTur of AllTurAbs =
LangTur
** {} ;

View File

@@ -0,0 +1,5 @@
--# -path=.:../abstract:../common:prelude
abstract AllTurAbs =
Lang
** {} ;

20
lib/src/turkish/CatTur.gf Normal file
View File

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

View File

@@ -0,0 +1,11 @@
--# -path=.:../abstract:../common:prelude
concrete GrammarTur of Grammar =
NounTur,
NumeralTur,
StructuralTur
** {
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,69 @@
--# -path=.:prelude
concrete LexiconTur of Lexicon = CatTur **
open ResTur, ParadigmsTur, Prelude in {
flags
coding=utf8;
lin
airplane_N = regN "uçak" ;
apartment_N = regN "apartman" ;
art_N = regN "sanat" ;
beer_N = regN "bira" ;
boat_N = regN "gemi" ;
book_N = regN "kitap" ;
boot_N = regN "ayakkabı" ;
boss_N = regN "şef" ;
bread_N = regN "ekmek" ;
brother_N2 = regN "kardeş" ;
butter_N = regN "yağ" ;
cap_N = regN "şapka" ;
car_N = regN "araba" ;
carpet_N = regN "kilim" ;
cat_N = regN "kedi" ;
child_N = regN "çocuk" ;
city_N = regN "şehir" ;
coat_N = regN "kazak" ;
come_V = regV "gelmek" ;
father_N2 = regN "baba" ;
go_V = regV "gitmek" ;
house_N = regN "ev" ;
mother_N2 = regN "anne" ;
pen_N = regN "kalem" ;
run_V = regV "koşmek" ;
stop_V = regV "durmak" ;
table_N = regN "masa" ;
television_N = regN "televizyon" ;
tree_N = regN "ağaç" ;
woman_N = regN "kadın" ;
wood_N = regN "kereste" ;
song_N = regN "şarkı" ;
back_N = regN "sırt" ;
belly_N = regN "göbek" ;
day_N = regN "gün" ;
ear_N = regN "kulak" ;
egg_N = regN "yumurta" ;
eye_N = regN "göz" ;
fire_N = regN "ateş" ;
flower_N = regN "çiçek" ;
grass_N = regN "çimen" ;
hand_N = regN "kol" ;
head_N = regN "baş" ;
heart_N = regN "kalp" ;
husband_N = regN "eş" ;
ice_N = regN "buz" ;
leg_N = regN "bacak" ;
mouth_N = regN "agız" ;
name_N = regN "ad" ;
night_N = regN "gece" ;
nose_N = regN "burun" ;
salt_N = regN "tuz" ;
sand_N = regN "kum" ;
snow_N = regN "kar" ;
tail_N = regN "kuyruk" ;
tooth_N = regN "diş" ;
wife_N = regN "eş" ;
year_N = regN "sene" ;
reason_N = regN "mazaret" ;
} ;

View File

@@ -0,0 +1,33 @@
concrete NounTur of Noun = CatTur ** open ResTur, Prelude in {
flags optimize=all_subs ;
lin
DetCN det cn = {
s = \\c => det.s ++ cn.s ! det.n ! c ;
a = agrP3 det.n
} ;
UsePron p = p ;
DetQuant quant num = {
s = quant.s ++ num.s ;
n = num.n
} ;
NumSg = {s = []; n = Sg} ;
NumPl = {s = []; n = Pl} ;
NumCard n = n ** {n = Sg} ;
NumNumeral numeral = {s = numeral.s} ;
DefArt = {
s = []
} ;
IndefArt = {
s = []
} ;
UseN n = n ;
}

View File

@@ -0,0 +1,37 @@
concrete NumeralTur of Numeral = CatTur ** open ResTur in {
flags
coding = utf8 ;
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,66 @@
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" "yiyor") "im" "yim" ;
VPres Sg P2 => harmony4 (harmony4 base "iyor" "yiyor") "sin" "sin" ;
VPres Sg P3 => harmony4 base "iyor" "yiyor" ;
VPres Pl P1 => harmony4 (harmony4 base "iyor" "yiyor") "iz" "yiz" ;
VPres Pl P2 => harmony4 (harmony4 (harmony4 base "iyor" "yiyor") "sin" "sin") "iz" "yiz" ;
VPres Pl P3 => harmony2 (harmony4 base "iyor" "yiyor") "ler" "ler" ;
VPast Sg P1 => harmony4 base "dim" "dim" ;
VPast Sg P2 => harmony4 base "din" "din" ;
VPast Sg P3 => harmony4 base "di" "di" ;
VPast Pl P1 => harmony4 base "dik" "dik" ;
VPast Pl P2 => harmony4 (harmony4 base "din" "din") "iz" "yiz" ;
VPast Pl P3 => harmony4 base "diler" "diler" ;
VFuture Sg P1 => harmony4 (harmony2 base "ecek" "yecek") "im" "yim" ;
VFuture Sg P2 => harmony4 (harmony2 base "ecek" "yecek") "sin" "sin" ;
VFuture Sg P3 => harmony2 base "ecek" "yecek";
VFuture Pl P1 => harmony4 (harmony2 base "ecek" "yecek") "iz" "yiz" ;
VFuture Pl P2 => harmony4 (harmony2 base "ecek" "yecek") "siniz" "siniz" ;
VFuture Pl P3 => harmony2 (harmony2 base "ecek" "yecek") "ler" "ler" ;
VAorist Sg P1 => harmony4 base "im" "yim" ;
VAorist Sg P2 => harmony4 base "sin" "sin" ;
VAorist Sg P3 => base ;
VAorist Pl P1 => harmony4 base "iz" "yiz" ;
VAorist Pl P2 => harmony4 (harmony4 base "sin" "sin") "iz" "yiz" ;
VAorist Pl P3 => harmony2 base "ler" "ler" ;
VImperative => base ;
VInfinitive => inf
}
} ;
regN : Str -> Noun = \base -> {
s = \\n => table {
Nom => add_number n base ;
Acc => harmony4 (add_number n base) "i" "yi" ;
Dat => harmony2 (add_number n base) "e" "ye" ;
Gen => harmony4 (add_number n base) "in" "nin" ;
Loc => harmony2 (add_number n base) "de" "de" ;
Ablat => harmony2 (add_number n base) "den" "den" ;
Abess p => case p of {
Pos => harmony4 (add_number n base) "li" "li" ;
Neg => harmony4 (add_number n base) "siz" "siz"
}
} ;
gen = \\n => table {
{n=Sg; p=P1} => harmony4 (add_number n base) "im" "yim" ;
{n=Sg; p=P2} => harmony4 (add_number n base) "in" "yin" ;
{n=Sg; p=P3} => harmony4 (add_number n base) "i" "yi" ;
{n=Pl; p=P1} => harmony4 (add_number n base) "imiz" "yimiz" ;
{n=Pl; p=P2} => harmony4 (add_number n base) "iniz" "yiniz" ;
{n=Pl; p=P3} => harmony4 (add_number n base) "i" "yi"
}
} ;
}

152
lib/src/turkish/ResTur.gf Normal file
View File

@@ -0,0 +1,152 @@
--# -path=.:../abstract:../common:../../prelude
resource ResTur = ParamX ** open Prelude, Predef in {
--2 For $Noun$
flags
coding=utf8 ;
param
Case = Nom | Acc | Dat | Gen | Loc | Ablat | Abess Polarity ;
Species = Indef | Def ;
oper
Agr = {n : Number ; p : Person} ;
Noun = {s : Number => Case => Str; gen : Number => Agr => Str} ;
Pron = {s : Case => Str; a : Agr} ;
agrP3 : Number -> Agr ;
agrP3 n = {n = n; p = P3} ;
-- For $Verb$.
param
VForm =
VPres Number Person
| VPast Number Person
| VFuture Number Person
| VAorist Number Person
| VImperative
| VInfinitive
;
oper
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
}
} ;
mkPron : (ben,beni,bana,banin,bende,benden,benli,bensiz:Str) -> Number -> Person -> Pron =
\ben,beni,bana,benim,bende,benden,benli,bensiz,n,p -> {
s = table {
Nom => ben ;
Acc => beni ;
Dat => bana ;
Gen => benim ;
Loc => bende ;
Ablat => benden ;
Abess Pos => benli ;
Abess Neg => bensiz
} ;
a = {n=n; p=p} ;
} ;
oper
harmony4 : Str -> Str -> Str -> Str
= \base0,suffixC,suffixV ->
let h : Str =
case base0 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")* =>
case c of {
("ı"|"a") => "ı" ;
("i"|"e") => "i" ;
("u"|"o") => "u" ;
("ü"|"ö") => "ü"
} ;
_ => error "harmony4"
} ;
base : Str =
case dp 1 base0 + take 1 suffixC of {
("k")+("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö") => tk 1 base0 + "ğ" ;
_ => base0
} ;
suffix : Str =
case dp 1 base0 of {
("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö") => case suffixV of {
s1@("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")
+ ("ı"|"i"|"u"|"ü")
+s2 => s1+h+s2 ;
s => s
} ;
_ => case suffixC of {
s1@(("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")*)
+ ("ı"|"i"|"u"|"ü")
+s2 => s1+h+s2 ;
s => s
}
}
in base + suffix ;
harmony2 : Str -> Str -> Str -> Str
= \base0,suffixC,suffixV ->
let h : Str =
case base0 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")* =>
case c of {
("a"|"ı"|"u"|"o") => "a" ;
("e"|"i"|"ü"|"ö") => "e"
} ;
_ => error "harmony2"
} ;
base : Str =
case dp 1 base0 + take 1 suffixC of {
("k")+("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö") => tk 1 base0 + "ğ" ;
_ => base0
} ;
suffix : Str =
case dp 1 base0 of {
("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö") => case suffixV of {
s1@("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")
+ ("a"|"e")
+s2 => s1+h+s2 ;
s => s
} ;
("p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h") => case suffixC of {
s1@(("b"|"v"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")*)
+ ("a"|"e")
+s2 => s1+h+s2 ;
("da"|"de")+s => "t"+h+s ;
s => s
} ;
_ => case suffixC of {
s1@(("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")*)
+ ("a"|"e")
+s2 => s1+h+s2 ;
s => s
}
}
in base + suffix ;
add_number : Number -> Str -> Str = \n,base ->
case n of {
Sg => base ;
Pl => harmony2 base "ler" "ler"
} ;
}

View File

@@ -0,0 +1,18 @@
concrete StructuralTur of Structural = CatTur **
open ResTur in {
flags
optimize=all ; coding = utf8 ;
lin
he_Pron = mkPron "o" "onu" "ona" "onun" "onda" "ondan" "onlu" "onsuz" Sg P3 ;
i_Pron = mkPron "ben" "beni" "bana" "benim" "bende" "benden" "benli" "bensiz" Sg P1 ;
it_Pron = mkPron "o" "onu" "ona" "onun" "onda" "ondan" "onlu" "onsuz" Sg P3 ;
she_Pron = mkPron "o" "onu" "ona" "onun" "onda" "ondan" "onlu" "onsuz" Sg P3 ;
they_Pron = mkPron "onlar" "onları" "onlara" "onların" "onlarda" "onlardan" "onlarlı" "onlarsız" Pl P3 ;
we_Pron = mkPron "biz" "bizi" "bize" "bizim" "bizde" "bizden" "bizli" "bizsiz" Pl P1 ;
youSg_Pron = mkPron "sen" "seni" "sana" "senin" "sende" "senden" "senli" "sensiz" Sg P2 ;
youPl_Pron = mkPron "siz" "sizi" "size" "sizin" "sizde" "sizden" "sizli" "sizsiz" Pl P2 ;
youPol_Pron = mkPron "siz" "sizi" "size" "sizin" "sizde" "sizden" "sizli" "sizsiz" Pl P2 ;
}