Turkish: some more nouns in the lexicon and some work on the paradigms. still not complete

This commit is contained in:
krasimir
2009-05-07 07:41:38 +00:00
parent 112de09f6b
commit b0cbba9e0d
3 changed files with 103 additions and 34 deletions

View File

@@ -3,6 +3,9 @@
concrete LexiconTur of Lexicon = CatTur **
open ResTur, ParadigmsTur, Prelude in {
flags
coding=utf8;
lin
airplane_N = regN "uçak" ;
apartment_N = regN "apartman" ;
@@ -13,12 +16,54 @@ lin
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" ;
day_N = regN "gün" ;
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

@@ -49,13 +49,16 @@ oper
regN : Str -> Noun = \base -> {
s = \\n => table {
Nom => add_number n base ;
Acc => harmony4 (add_number n base) "i" ;
Dat => harmony2 (add_number n base) "e" ;
Gen => harmony4 (add_number n base) "in" ;
Loc => harmony2 (add_number n base) "de" ;
Ablat => add_number n base ;
Abess => add_number n base
Nom => add_number n base ;
Acc => harmony4 (add_number n base) "i" ;
Dat => harmony2 (add_number n base) "e" ;
Gen => harmony4 (add_number n base) "in" ;
Loc => harmony2 (add_number n base) "de" ;
Ablat => harmony2 (add_number n base) "den" ;
Abess p => case p of {
Pos => harmony4 (add_number n base) "li" ;
Neg => harmony4 (add_number n base) "siz"
}
} ;
gen = \\n => table {
{n=Sg; p=P1} => harmony4 (add_number n base) "im" ;

View File

@@ -4,8 +4,11 @@ resource ResTur = ParamX ** open Prelude, Predef in {
--2 For $Noun$
flags
coding=utf8 ;
param
Case = Nom | Acc | Dat | Gen | Loc | Ablat | Abess ;
Case = Nom | Acc | Dat | Gen | Loc | Ablat | Abess Polarity ;
Species = Indef | Def ;
@@ -60,48 +63,66 @@ resource ResTur = ParamX ** open Prelude, Predef in {
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"
} ;
= \base0,suffix0 ->
let buffer : Str =
case dp 1 base0 + take 1 suffix0 of {
("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")+("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö") => "y" ;
_ => ""
} ;
h : Str =
case c of {
("ı"|"a") => "ı" ;
("i"|"e") => "i" ;
("u"|"o") => "u" ;
("ü"|"ö") => "ü"
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 suffix0 of {
("k")+("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö") => tk 1 base0 + "ğ" ;
_ => base0
} ;
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"|"ü"|"ö")
+ ("ı"|"i"|"u"|"ü")
+s2 => s1+h+s2 ;
s => s
}
in base + suffix ;
in base + buffer + suffix ;
harmony2 : Str -> Str -> Str
= \base,suffix0 ->
let c : Str =
let buffer : Str =
case dp 1 base + take 1 suffix0 of {
("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")+("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö") => "n" ;
_ => ""
} ;
h : 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 ;
("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"
} ;
h : Str =
case c of {
("a"|"ı"|"u"|"o") => "a" ;
("e"|"i"|"ü"|"ö") => "e"
} ;
suffix : Str =
suffix1 : 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"|"ü"|"ö")
+ ("a"|"e")
+s2 => s1+h+s2 ;
s => s
}
in base + suffix ;
} ;
suffix : Str =
case dp 1 base + take 1 suffix1 of {
("ç"|"p"|"ş"|"k"|"f")+("d") => "t"+drop 1 suffix1 ;
_ => suffix1
} ;
in base + buffer + suffix ;
}