summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--next-lib/src/turkish/CatTur.gf6
-rw-r--r--next-lib/src/turkish/GrammarTur.gf3
-rw-r--r--next-lib/src/turkish/LexiconTur.gf13
-rw-r--r--next-lib/src/turkish/ParadigmsTur.gf26
-rw-r--r--next-lib/src/turkish/ResTur.gf27
-rw-r--r--next-lib/src/turkish/StructuralTur.gf21
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 ;
}