forked from GitHub/gf-core
Turkish moved to next-lib
This commit is contained in:
13
next-lib/src/turkish/CatTur.gf
Normal file
13
next-lib/src/turkish/CatTur.gf
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
concrete CatTur of Cat = CommonX ** open ResTur, Prelude in {
|
||||||
|
|
||||||
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
|
lincat
|
||||||
|
|
||||||
|
-- Noun
|
||||||
|
NP, Pron = {s : Case => Str ; a : Agr} ;
|
||||||
|
|
||||||
|
-- Open lexical classes, e.g. Lexicon
|
||||||
|
V, VS, VQ, VA = Verb ;
|
||||||
|
N = {s : Number => Case => Str} ;
|
||||||
|
}
|
||||||
9
next-lib/src/turkish/GrammarTur.gf
Normal file
9
next-lib/src/turkish/GrammarTur.gf
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
--# -path=.:../abstract:../common:prelude
|
||||||
|
|
||||||
|
concrete GrammarTur of Grammar =
|
||||||
|
NumeralTur
|
||||||
|
** {
|
||||||
|
|
||||||
|
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||||
|
|
||||||
|
} ;
|
||||||
10
next-lib/src/turkish/LangTur.gf
Normal file
10
next-lib/src/turkish/LangTur.gf
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
--# -path=.:../abstract:../common:prelude
|
||||||
|
|
||||||
|
concrete LangTur of Lang =
|
||||||
|
GrammarTur,
|
||||||
|
LexiconTur
|
||||||
|
** {
|
||||||
|
|
||||||
|
flags startcat = Phr ; unlexer = text ; lexer = text ; coding=utf8 ;
|
||||||
|
|
||||||
|
} ;
|
||||||
11
next-lib/src/turkish/LexiconTur.gf
Normal file
11
next-lib/src/turkish/LexiconTur.gf
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
--# -path=.:prelude
|
||||||
|
|
||||||
|
concrete LexiconTur of Lexicon = CatTur **
|
||||||
|
open ResTur, ParadigmsTur, Prelude in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
come_V = regV "gelmek" ;
|
||||||
|
go_V = regV "gitmek" ;
|
||||||
|
run_V = regV "koşmek" ;
|
||||||
|
stop_V = regV "durmak" ;
|
||||||
|
} ;
|
||||||
34
next-lib/src/turkish/NumeralTur.gf
Normal file
34
next-lib/src/turkish/NumeralTur.gf
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
concrete NumeralTur of Numeral = CatTur ** open ResTur in {
|
||||||
|
|
||||||
|
lincat
|
||||||
|
Digit = {s : DForm => Str} ;
|
||||||
|
Sub10 = {s : DForm => Str ; n : Number} ;
|
||||||
|
Sub100 = {s : Str ; n : Number} ;
|
||||||
|
Sub1000 = {s : Str ; n : Number} ;
|
||||||
|
Sub1000000 = {s : Str ; n : Number} ;
|
||||||
|
|
||||||
|
lin num x = x ;
|
||||||
|
|
||||||
|
lin n2 = mkNum "iki" "yirmi" ;
|
||||||
|
lin n3 = mkNum "üç" "otuz" ;
|
||||||
|
lin n4 = mkNum "dört" "kırk" ;
|
||||||
|
lin n5 = mkNum "beş" "elli" ;
|
||||||
|
lin n6 = mkNum "altı" "altmış" ;
|
||||||
|
lin n7 = mkNum "yedi" "yetmiş" ;
|
||||||
|
lin n8 = mkNum "sekiz" "seksen" ;
|
||||||
|
lin n9 = mkNum "dokuz" "doksan" ;
|
||||||
|
lin pot01 = mkNum "bir" "on" ** {n = Sg} ;
|
||||||
|
lin pot0 d = d ** {n = Pl} ;
|
||||||
|
lin pot110 = {s="on"; n = Pl} ;
|
||||||
|
lin pot111 = {s="on" ++ "&+" ++ "bir"; n = Pl} ;
|
||||||
|
lin pot1to19 d = {s = "on" ++ "&+" ++ d.s ! unit; n = Pl} ;
|
||||||
|
lin pot0as1 n = {s = n.s ! unit; n = n.n} ;
|
||||||
|
lin pot1 d = {s = d.s ! ten; n = Pl} ;
|
||||||
|
lin pot1plus d e = {s = d.s ! ten ++ e.s ! unit ; n = Pl} ;
|
||||||
|
lin pot1as2 n = n ;
|
||||||
|
lin pot2 d = {s = d.s ! unit ++ "&+" ++ "yüz"; n = Pl} ;
|
||||||
|
lin pot2plus d e = {s = d.s ! unit ++ "&+" ++ "yüz" ++ e.s ; n = Pl} ;
|
||||||
|
lin pot2as3 n = n ;
|
||||||
|
lin pot3 n = {s = n.s ++ "&+" ++ "bin" ; n = Pl} ;
|
||||||
|
lin pot3plus n m = {s = n.s ++ "&+" ++ "bin" ++ "&+" ++ m.s; n = Pl} ;
|
||||||
|
}
|
||||||
43
next-lib/src/turkish/ParadigmsTur.gf
Normal file
43
next-lib/src/turkish/ParadigmsTur.gf
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
resource ParadigmsTur = open
|
||||||
|
Predef,
|
||||||
|
Prelude,
|
||||||
|
ResTur
|
||||||
|
in {
|
||||||
|
|
||||||
|
oper
|
||||||
|
regV : Str -> Verb = \inf ->
|
||||||
|
let base : Str
|
||||||
|
= case inf of {
|
||||||
|
base+"mak" => base ;
|
||||||
|
base+"mek" => base
|
||||||
|
}
|
||||||
|
in { s = table {
|
||||||
|
VPres Sg P1 => harmony4 (harmony4 base "iyor") "im" ;
|
||||||
|
VPres Sg P2 => harmony4 (harmony4 base "iyor") "sin" ;
|
||||||
|
VPres Sg P3 => harmony4 base "iyor" ;
|
||||||
|
VPres Pl P1 => harmony4 (harmony4 base "iyor") "iz" ;
|
||||||
|
VPres Pl P2 => harmony4 (harmony4 (harmony4 base "iyor") "sin") "iz" ;
|
||||||
|
VPres Pl P3 => harmony4 (harmony4 base "iyor") "ler" ;
|
||||||
|
VPast Sg P1 => harmony4 base "dim" ;
|
||||||
|
VPast Sg P2 => harmony4 base "din" ;
|
||||||
|
VPast Sg P3 => harmony4 base "di" ;
|
||||||
|
VPast Pl P1 => harmony4 base "dik" ;
|
||||||
|
VPast Pl P2 => harmony4 (harmony4 base "din") "iz" ;
|
||||||
|
VPast Pl P3 => harmony4 base "diler" ;
|
||||||
|
VFuture Sg P1 => harmony4 (harmony2 base "ecek") "im" ;
|
||||||
|
VFuture Sg P2 => harmony4 (harmony2 base "ecek") "sin" ;
|
||||||
|
VFuture Sg P3 => harmony2 base "ecek" ;
|
||||||
|
VFuture Pl P1 => harmony4 (harmony2 base "ecek") "iz" ;
|
||||||
|
VFuture Pl P2 => harmony4 (harmony2 base "ecek") "siniz" ;
|
||||||
|
VFuture Pl P3 => harmony4 (harmony2 base "ecek") "ler" ;
|
||||||
|
VAorist Sg P1 => harmony4 base "im" ;
|
||||||
|
VAorist Sg P2 => harmony4 base "sin" ;
|
||||||
|
VAorist Sg P3 => base ;
|
||||||
|
VAorist Pl P1 => harmony4 base "iz" ;
|
||||||
|
VAorist Pl P2 => harmony4 (harmony4 base "sin") "iz" ;
|
||||||
|
VAorist Pl P3 => harmony4 base "ler" ;
|
||||||
|
VImperative => base ;
|
||||||
|
VInfinitive => inf
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
}
|
||||||
106
next-lib/src/turkish/ResTur.gf
Normal file
106
next-lib/src/turkish/ResTur.gf
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
--# -path=.:../abstract:../common:../../prelude
|
||||||
|
|
||||||
|
resource ResTur = ParamX ** open Prelude, Predef in {
|
||||||
|
|
||||||
|
--2 For $Noun$
|
||||||
|
|
||||||
|
param
|
||||||
|
Case = Nom | Acc | Dat | Gen | Loc | Ablat | Abess ;
|
||||||
|
|
||||||
|
Species = Indef | Def ;
|
||||||
|
|
||||||
|
VForm =
|
||||||
|
VPres Number Person
|
||||||
|
| VPast Number Person
|
||||||
|
| VFuture Number Person
|
||||||
|
| VAorist Number Person
|
||||||
|
| VImperative
|
||||||
|
| VInfinitive
|
||||||
|
;
|
||||||
|
|
||||||
|
oper
|
||||||
|
Agr = {n : Number ; p : Person} ;
|
||||||
|
|
||||||
|
-- For $Verb$.
|
||||||
|
|
||||||
|
Verb : Type = {
|
||||||
|
s : VForm => Str
|
||||||
|
} ;
|
||||||
|
|
||||||
|
--2 For $Numeral$
|
||||||
|
param
|
||||||
|
DForm = unit | ten ;
|
||||||
|
|
||||||
|
-- For $Numeral$.
|
||||||
|
oper
|
||||||
|
mkNum : Str -> Str -> {s : DForm => Str} =
|
||||||
|
\two, twenty ->
|
||||||
|
{s = table {
|
||||||
|
unit => two ;
|
||||||
|
ten => twenty
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkNP : (ben,beni,bana,banin,bende,benden:Str) -> Number -> Person ->
|
||||||
|
{s : Case => Str ; a : Agr} =
|
||||||
|
\ben,beni,bana,banin,bende,benden,n,p -> {
|
||||||
|
s = table {
|
||||||
|
Nom => ben ;
|
||||||
|
Acc => beni ;
|
||||||
|
Dat => bana ;
|
||||||
|
Gen => banin ;
|
||||||
|
Loc => bende ;
|
||||||
|
Abl => benden
|
||||||
|
} ;
|
||||||
|
a = {n=n; p=p} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
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"
|
||||||
|
} ;
|
||||||
|
h : Str =
|
||||||
|
case c of {
|
||||||
|
("ı"|"a") => "ı" ;
|
||||||
|
("i"|"e") => "i" ;
|
||||||
|
("u"|"o") => "u" ;
|
||||||
|
("ü"|"ö") => "ü"
|
||||||
|
} ;
|
||||||
|
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"|"ü"|"ö")
|
||||||
|
+s2 => s1+h+s2 ;
|
||||||
|
s => s
|
||||||
|
}
|
||||||
|
in base + suffix ;
|
||||||
|
|
||||||
|
harmony2 : 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"
|
||||||
|
} ;
|
||||||
|
h : Str =
|
||||||
|
case c of {
|
||||||
|
("ı"|"a") => "ı" ;
|
||||||
|
("i"|"e") => "i" ;
|
||||||
|
("u"|"o") => "u" ;
|
||||||
|
("ü"|"ö") => "ü"
|
||||||
|
} ;
|
||||||
|
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"|"ü"|"ö")
|
||||||
|
+s2 => s1+h+s2 ;
|
||||||
|
s => s
|
||||||
|
}
|
||||||
|
in base + suffix ;
|
||||||
|
}
|
||||||
16
next-lib/src/turkish/StructuralTur.gf
Normal file
16
next-lib/src/turkish/StructuralTur.gf
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
concrete StructuralTur of Structural = CatTur ** {
|
||||||
|
|
||||||
|
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 ;
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user