some fragments of Turkish noun morphology

This commit is contained in:
krasimir
2009-03-27 08:43:43 +00:00
parent 5ced40f789
commit 587549a871
6 changed files with 70 additions and 26 deletions

View File

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

View File

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

View File

@@ -4,8 +4,21 @@ concrete LexiconTur of Lexicon = CatTur **
open ResTur, ParadigmsTur, Prelude in {
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" ;
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" ;
run_V = regV "koşmek" ;
stop_V = regV "durmak" ;
} ;

View File

@@ -40,4 +40,30 @@ oper
VInfinitive => inf
}
} ;
add_number : Number -> Str -> Str = \n,base ->
case n of {
Sg => base ;
Pl => harmony2 base "ler"
} ;
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
} ;
gen = \\n => table {
{n=Sg; p=P1} => harmony4 (add_number n base) "im" ;
{n=Sg; p=P2} => harmony4 (add_number n base) "in" ;
{n=Sg; p=P3} => harmony4 (add_number n base) "i" ;
{n=Pl; p=P1} => harmony4 (add_number n base) "imiz" ;
{n=Pl; p=P2} => harmony4 (add_number n base) "iniz" ;
{n=Pl; p=P3} => harmony4 (add_number n base) "i"
}
} ;
}

View File

@@ -9,6 +9,14 @@ resource ResTur = ParamX ** open Prelude, Predef in {
Species = Indef | Def ;
oper
Agr = {n : Number ; p : Person} ;
Noun = {s : Number => Case => Str; gen : Number => Agr => Str} ;
Pron = {s : Case => Str; a : Agr} ;
-- For $Verb$.
param
VForm =
VPres Number Person
| VPast Number Person
@@ -19,10 +27,6 @@ resource ResTur = ParamX ** open Prelude, Predef in {
;
oper
Agr = {n : Number ; p : Person} ;
-- For $Verb$.
Verb : Type = {
s : VForm => Str
} ;
@@ -41,14 +45,13 @@ resource ResTur = ParamX ** open Prelude, Predef in {
}
} ;
mkNP : (ben,beni,bana,banin,bende,benden:Str) -> Number -> Person ->
{s : Case => Str ; a : Agr} =
\ben,beni,bana,banin,bende,benden,n,p -> {
mkPron : (ben,beni,bana,banin,bende,benden:Str) -> Number -> Person -> Pron =
\ben,beni,bana,benim,bende,benden,n,p -> {
s = table {
Nom => ben ;
Acc => beni ;
Dat => bana ;
Gen => banin ;
Gen => benim ;
Loc => bende ;
Abl => benden
} ;
@@ -86,14 +89,12 @@ resource ResTur = ParamX ** open Prelude, Predef in {
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"
_ => error "harmony2"
} ;
h : Str =
case c of {
("ı"|"a") => "ı" ;
("i"|"e") => "i" ;
("u"|"o") => "u" ;
("ü"|"ö") => "ü"
("a"|"ı"|"u"|"o") => "a" ;
("e"|"i"|"ü"|"ö") => "e"
} ;
suffix : Str =
case suffix0 of {

View File

@@ -1,16 +1,17 @@
concrete StructuralTur of Structural = CatTur ** {
concrete StructuralTur of Structural = CatTur **
open ResTur in {
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 ;
he_Pron = mkPron "o" "onu" "ona" "onun" "onda" "ondan" Sg P3 ;
i_Pron = mkPron "ben" "beni" "bana" "benim" "bende" "benden" Sg P1 ;
it_Pron = mkPron "o" "onu" "ona" "onun" "onda" "ondan" Sg P3 ;
she_Pron = mkPron "o" "onu" "ona" "onun" "onda" "ondan" Sg P3 ;
they_Pron = mkPron "onlar" "onları" "onlara" "onların" "onlarda" "onlardan" Pl P3 ;
we_Pron = mkPron "biz" "bizi" "bize" "bizim" "bizde" "bizden" Pl P1 ;
youSg_Pron = mkPron "sen" "seni" "sana" "senin" "sende" "senden" Sg P2 ;
youPl_Pron = mkPron "siz" "sizi" "size" "sizin" "sizde" "sizden" Pl P2 ;
youPol_Pron = mkPron "siz" "sizi" "size" "sizin" "sizde" "sizden" Pl P2 ;
}