mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
some fragments of Turkish noun morphology
This commit is contained in:
@@ -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 ;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
concrete GrammarTur of Grammar =
|
||||
NumeralTur
|
||||
NumeralTur,
|
||||
StructuralTur
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
@@ -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" ;
|
||||
} ;
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
} ;
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 ;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user