From 38e52ec6f0310e85245763f2d57f2907bfd69e90 Mon Sep 17 00:00:00 2001 From: krasimir Date: Fri, 27 Mar 2009 08:43:43 +0000 Subject: [PATCH] some fragments of Turkish noun morphology --- next-lib/src/turkish/CatTur.gf | 6 ++++-- next-lib/src/turkish/GrammarTur.gf | 3 ++- next-lib/src/turkish/LexiconTur.gf | 13 +++++++++++++ next-lib/src/turkish/ParadigmsTur.gf | 26 ++++++++++++++++++++++++++ next-lib/src/turkish/ResTur.gf | 27 ++++++++++++++------------- next-lib/src/turkish/StructuralTur.gf | 21 +++++++++++---------- 6 files changed, 70 insertions(+), 26 deletions(-) diff --git a/next-lib/src/turkish/CatTur.gf b/next-lib/src/turkish/CatTur.gf index 9de9db5c9..8b7dcd394 100644 --- a/next-lib/src/turkish/CatTur.gf +++ b/next-lib/src/turkish/CatTur.gf @@ -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 ; } diff --git a/next-lib/src/turkish/GrammarTur.gf b/next-lib/src/turkish/GrammarTur.gf index e61e55718..ca6feea69 100644 --- a/next-lib/src/turkish/GrammarTur.gf +++ b/next-lib/src/turkish/GrammarTur.gf @@ -1,7 +1,8 @@ --# -path=.:../abstract:../common:prelude concrete GrammarTur of Grammar = - NumeralTur + NumeralTur, + StructuralTur ** { flags startcat = Phr ; unlexer = text ; lexer = text ; diff --git a/next-lib/src/turkish/LexiconTur.gf b/next-lib/src/turkish/LexiconTur.gf index 20b1d5f54..b85b5d8ec 100644 --- a/next-lib/src/turkish/LexiconTur.gf +++ b/next-lib/src/turkish/LexiconTur.gf @@ -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" ; } ; diff --git a/next-lib/src/turkish/ParadigmsTur.gf b/next-lib/src/turkish/ParadigmsTur.gf index 102098c8c..969a17bee 100644 --- a/next-lib/src/turkish/ParadigmsTur.gf +++ b/next-lib/src/turkish/ParadigmsTur.gf @@ -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" + } + } ; } \ No newline at end of file diff --git a/next-lib/src/turkish/ResTur.gf b/next-lib/src/turkish/ResTur.gf index 1fc1a8157..e2cb748c6 100644 --- a/next-lib/src/turkish/ResTur.gf +++ b/next-lib/src/turkish/ResTur.gf @@ -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 { diff --git a/next-lib/src/turkish/StructuralTur.gf b/next-lib/src/turkish/StructuralTur.gf index ee27b2a1a..7b8bda2e9 100644 --- a/next-lib/src/turkish/StructuralTur.gf +++ b/next-lib/src/turkish/StructuralTur.gf @@ -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 ; }