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