summaryrefslogtreecommitdiff
path: root/next-lib/src
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2009-03-27 08:41:55 +0000
committerkrasimir <krasimir@chalmers.se>2009-03-27 08:41:55 +0000
commit5ced40f789bc8ef4ec824e6dca4aeb856bf5eac9 (patch)
treea79fb2ce82e90dc06e764a79b6d6ba9a1106ea6c /next-lib/src
parent90528ec1f13727e280d5826ffef80c0734916c24 (diff)
Turkish moved to next-lib
Diffstat (limited to 'next-lib/src')
-rw-r--r--next-lib/src/turkish/CatTur.gf13
-rw-r--r--next-lib/src/turkish/GrammarTur.gf9
-rw-r--r--next-lib/src/turkish/LangTur.gf10
-rw-r--r--next-lib/src/turkish/LexiconTur.gf11
-rw-r--r--next-lib/src/turkish/NumeralTur.gf34
-rw-r--r--next-lib/src/turkish/ParadigmsTur.gf43
-rw-r--r--next-lib/src/turkish/ResTur.gf106
-rw-r--r--next-lib/src/turkish/StructuralTur.gf16
8 files changed, 242 insertions, 0 deletions
diff --git a/next-lib/src/turkish/CatTur.gf b/next-lib/src/turkish/CatTur.gf
new file mode 100644
index 000000000..9de9db5c9
--- /dev/null
+++ b/next-lib/src/turkish/CatTur.gf
@@ -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} ;
+}
diff --git a/next-lib/src/turkish/GrammarTur.gf b/next-lib/src/turkish/GrammarTur.gf
new file mode 100644
index 000000000..e61e55718
--- /dev/null
+++ b/next-lib/src/turkish/GrammarTur.gf
@@ -0,0 +1,9 @@
+--# -path=.:../abstract:../common:prelude
+
+concrete GrammarTur of Grammar =
+ NumeralTur
+ ** {
+
+flags startcat = Phr ; unlexer = text ; lexer = text ;
+
+} ;
diff --git a/next-lib/src/turkish/LangTur.gf b/next-lib/src/turkish/LangTur.gf
new file mode 100644
index 000000000..1f7c912e8
--- /dev/null
+++ b/next-lib/src/turkish/LangTur.gf
@@ -0,0 +1,10 @@
+--# -path=.:../abstract:../common:prelude
+
+concrete LangTur of Lang =
+ GrammarTur,
+ LexiconTur
+ ** {
+
+flags startcat = Phr ; unlexer = text ; lexer = text ; coding=utf8 ;
+
+} ;
diff --git a/next-lib/src/turkish/LexiconTur.gf b/next-lib/src/turkish/LexiconTur.gf
new file mode 100644
index 000000000..20b1d5f54
--- /dev/null
+++ b/next-lib/src/turkish/LexiconTur.gf
@@ -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" ;
+} ;
diff --git a/next-lib/src/turkish/NumeralTur.gf b/next-lib/src/turkish/NumeralTur.gf
new file mode 100644
index 000000000..dbee7d3da
--- /dev/null
+++ b/next-lib/src/turkish/NumeralTur.gf
@@ -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} ;
+}
diff --git a/next-lib/src/turkish/ParadigmsTur.gf b/next-lib/src/turkish/ParadigmsTur.gf
new file mode 100644
index 000000000..102098c8c
--- /dev/null
+++ b/next-lib/src/turkish/ParadigmsTur.gf
@@ -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
+ }
+ } ;
+} \ No newline at end of file
diff --git a/next-lib/src/turkish/ResTur.gf b/next-lib/src/turkish/ResTur.gf
new file mode 100644
index 000000000..1fc1a8157
--- /dev/null
+++ b/next-lib/src/turkish/ResTur.gf
@@ -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 ;
+}
diff --git a/next-lib/src/turkish/StructuralTur.gf b/next-lib/src/turkish/StructuralTur.gf
new file mode 100644
index 000000000..ee27b2a1a
--- /dev/null
+++ b/next-lib/src/turkish/StructuralTur.gf
@@ -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 ;
+}
+