forked from GitHub/gf-core
next-lib renamed to lib, lib to old-lib
This commit is contained in:
5
lib/src/turkish/AllTur.gf
Normal file
5
lib/src/turkish/AllTur.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
concrete AllTur of AllTurAbs =
|
||||
LangTur
|
||||
** {} ;
|
||||
5
lib/src/turkish/AllTurAbs.gf
Normal file
5
lib/src/turkish/AllTurAbs.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
abstract AllTurAbs =
|
||||
Lang
|
||||
** {} ;
|
||||
20
lib/src/turkish/CatTur.gf
Normal file
20
lib/src/turkish/CatTur.gf
Normal 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 ;
|
||||
}
|
||||
11
lib/src/turkish/GrammarTur.gf
Normal file
11
lib/src/turkish/GrammarTur.gf
Normal file
@@ -0,0 +1,11 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
concrete GrammarTur of Grammar =
|
||||
NounTur,
|
||||
NumeralTur,
|
||||
StructuralTur
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
} ;
|
||||
10
lib/src/turkish/LangTur.gf
Normal file
10
lib/src/turkish/LangTur.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
concrete LangTur of Lang =
|
||||
GrammarTur,
|
||||
LexiconTur
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ; coding=utf8 ;
|
||||
|
||||
} ;
|
||||
69
lib/src/turkish/LexiconTur.gf
Normal file
69
lib/src/turkish/LexiconTur.gf
Normal 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" ;
|
||||
} ;
|
||||
33
lib/src/turkish/NounTur.gf
Normal file
33
lib/src/turkish/NounTur.gf
Normal 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 ;
|
||||
}
|
||||
37
lib/src/turkish/NumeralTur.gf
Normal file
37
lib/src/turkish/NumeralTur.gf
Normal 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} ;
|
||||
}
|
||||
66
lib/src/turkish/ParadigmsTur.gf
Normal file
66
lib/src/turkish/ParadigmsTur.gf
Normal 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
152
lib/src/turkish/ResTur.gf
Normal 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"
|
||||
} ;
|
||||
}
|
||||
18
lib/src/turkish/StructuralTur.gf
Normal file
18
lib/src/turkish/StructuralTur.gf
Normal 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 ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user