various extensions in Turkish

This commit is contained in:
Krasimir Angelov
2024-07-08 21:58:00 +02:00
parent f36bbade45
commit 65a05d223b
13 changed files with 112 additions and 71 deletions

View File

@@ -18,6 +18,6 @@ concrete AdverbTur of Adverb = CatTur ** open ResTur, Prelude in {
SubjS s1 s2 = {s = s1.s ++ s2.subord} ;
PositAdvAdj _ = variants {} ;
PositAdvAdj a = {s = a.adv} ;
}

View File

@@ -1,5 +1,6 @@
--# -path=.:../abstract:../common:prelude
abstract AllTurAbs =
Lang
Lang,
Extend
** {} ;

View File

@@ -7,15 +7,15 @@ concrete CatTur of Cat = CommonX - [CAdv,AdN] ** open ResTur, HarmonyTur, Prelud
S = {s, subord : Str} ;
Cl = {s : Tense => Str; subord : Str} ;
Imp = {s : Number => Str} ;
-- Noun
CN = {s : Number => Case => Str; gen : Number => Agr => Str; h : Harmony} ;
NP = {s : Case => Str ; h : Harmony; a : Agr} ;
VP = Verb ;
VPSlash = VP ** {c : Prep} ;
Comp = VP ;
VP = Verb ** {compl : Str} ;
VPSlash = Verb ** {compl : Str; c : Prep} ;
Comp = Verb ;
Pron = ResTur.Pron ;
Det = {s : Str; n : Number; useGen : UseGen} ;
@@ -60,5 +60,6 @@ concrete CatTur of Cat = CommonX - [CAdv,AdN] ** open ResTur, HarmonyTur, Prelud
linref
V = \v -> v.s ! VInfinitive ;
V2 = \v -> v.s ! VInfinitive ++ v.c.s ;
VP = \vp -> vp.compl ++ vp.s ! VInfinitive ;
}

View File

@@ -71,7 +71,8 @@ lin
Gen => "tamlayan" ;
Loc => "bulunma" ;
Ablat => "ayrılma" ;
Abess _ => ""
Abess _ => "" ;
Instr => ""
}) ;
s3= ""
} ;
@@ -104,7 +105,12 @@ oper
heading2 ("Gelecek zaman") ++
finite VFuture ++
heading2 ("Emir kipi") ++
paragraph (v.s ! VImperative) ++
frameTable (
tr (th "tekil" ++
th "çoğul") ++
tr (td (v.s ! VImperative Sg) ++
td (v.s ! VImperative Pl))
) ++
heading2 ("Eylemlik") ++
paragraph (v.s ! VInfinitive) ++
heading2 ("Ulaç") ++

View File

@@ -9,4 +9,6 @@ concrete ExtendTur of Extend = CatTur ** open ResTur in {
TPastSimple = {s = []} ** {t = Past} ; --# notpresent
PositAdVAdj a = {s = a.s ! Sg ! Nom} ;
}

View File

@@ -10,7 +10,11 @@ concrete NounTur of Noun = CatTur ** open ResTur, SuffixTur, HarmonyTur, Prelude
case det.useGen of {
NoGen => \\c => det.s ++ cn.s ! det.n ! c ;
YesGen a => \\c => det.s ++ cn.gen ! det.n ! a ;
UseIndef => \\c => det.s ++ cn.s ! det.n ! c
UseIndef => \\c => let c' = case c of {
Acc => Nom ;
c => c
}
in det.s ++ cn.s ! det.n ! c'
} ;
h = cn.h ;
a = agrP3 det.n
@@ -104,6 +108,11 @@ concrete NounTur of Noun = CatTur ** open ResTur, SuffixTur, HarmonyTur, Prelude
s = \\_,_ => "TODO";
gen = \\_, _ => "TODO";
h = f.h
};
Instr => {
s = \\_,_ => "TODO";
gen = \\_, _ => "TODO";
h = f.h
}
};

View File

@@ -85,14 +85,14 @@ resource ParadigmsTur = open
mkV2 = overload {
-- sormak
mkV2 : V -> V2 = \verb -> verb ** lin V2 {c = noPrep} ;
mkV2 : V -> V2 = \verb -> verb ** lin V2 {c = mkPrep [] Acc} ;
-- (bir şeyden) korkmak
mkV2 : V -> Prep -> V2 = \verb,c -> verb ** lin V2 {c = c} ;
} ;
mkV3 = overload {
-- (birine bir şeyi) satmak
mkV3 : V -> V3 = \verb -> verb ** lin V3 {c1 = noPrep; c2 = noPrep} ;
mkV3 : V -> V3 = \verb -> verb ** lin V3 {c1 = mkPrep [] Acc; c2 = mkPrep [] Dat} ;
-- (biri ile bir şeyi) konuşmak
mkV3 : V -> Prep -> Prep -> V3 =
\verb,c1,c2 -> verb ** lin V3 {c1 = c1; c2 = c2} ;
@@ -128,7 +128,7 @@ resource ParadigmsTur = open
-- worst case function
-- parameters: all singular cases of base, base of genitive table, plural
-- form of base and harmony of base
mkNoun : (nom,acc,dat,gen,loc,abl,abessPos,abessNeg,gens,plural : Str)
mkNoun : (nom,acc,dat,gen,loc,abl,abessPos,abessNeg,instr,gens,plural : Str)
-> Harmony
-> N ;
@@ -172,6 +172,8 @@ resource ParadigmsTur = open
mkA : Str -> Str -> HarVowP -> A ;
} ;
irregAdv : A -> Str -> A ;
mkAS : A -> AS ;
mkAV : A -> AV ;
@@ -284,8 +286,10 @@ resource ParadigmsTur = open
addSuffix pastBase pastHar (verbSuffixes ! agr) ;
VFuture agr =>
addSuffix futureTable futHar (verbSuffixes ! agr) ;
VImperative =>
VImperative Sg =>
base ;
VImperative Pl =>
addSuffix base har p2PlImperSuffix ;
VInfinitive =>
inf ;
Gerund _ Acc =>
@@ -321,7 +325,7 @@ resource ParadigmsTur = open
} ;
-- Implementation of noun paradigms
mkNoun sn sa sd sg sl sabl sgabPos sgabNeg sgs pln har =
mkNoun sn sa sd sg sl sabl sgabPos sgabNeg si sgs pln har =
let plHar = getHarmony pln ;
in
lin N {
@@ -334,7 +338,8 @@ resource ParadigmsTur = open
Loc => sl ;
Ablat => sabl ;
Abess Pos => sgabPos ;
Abess Neg => sgabNeg
Abess Neg => sgabNeg ;
Instr => si
} ;
Pl => table {
Abess Pos => addSuffix sgabPos plHar plSuffix;
@@ -370,6 +375,7 @@ resource ParadigmsTur = open
(addSuffix sn har ablatSuffix)
(addSuffix sn har abessPosSuffix)
(addSuffix sn har abessNegSuffix)
(addSuffix sn har instrSuffix)
sg
pln
har ;
@@ -387,6 +393,7 @@ resource ParadigmsTur = open
(addSuffix bt har ablatSuffix)
(addSuffix bt har abessPosSuffix)
(addSuffix bt har abessNegSuffix)
(addSuffix bt har instrSuffix)
(bt ! Soft)
pln
har ;
@@ -405,6 +412,7 @@ resource ParadigmsTur = open
(addSuffix bn har ablatSuffix)
(addSuffix bn har abessPosSuffix)
(addSuffix bn har abessNegSuffix)
(addSuffix bn har instrSuffix)
by
pln
har ;
@@ -446,7 +454,8 @@ resource ParadigmsTur = open
Loc => addSuffix sn sgHar locSuffixN ; --tereyağında
Ablat => addSuffix sn sgHar ablatSuffixN ; --tereyağından
Abess Pos => sgAbessPos ; --tereyağlı
Abess Neg => sgAbessNeg --tereyağsız
Abess Neg => sgAbessNeg ; --tereyağsız
Instr => addSuffix sn sgHar instrSuffix
} ;
Pl => table {
Nom => pn ;--tereyağları
@@ -456,7 +465,8 @@ resource ParadigmsTur = open
Loc => addSuffix pn plHar locSuffixN ; --tereyağlarında
Ablat => addSuffix pn plHar ablatSuffixN ; --tereyağlarından
Abess Pos => addSuffix sgAbessPos plHar abessPosSuffix ; --tereyağlılar
Abess Neg => addSuffix sgAbessNeg plHar abessNegSuffix --tereyağsızlar
Abess Neg => addSuffix sgAbessNeg plHar abessNegSuffix ; --tereyağsızlar
Instr => addSuffix pn plHar instrSuffix
}
} ;
gen = case ct of {
@@ -510,6 +520,8 @@ resource ParadigmsTur = open
mkA : (base, base1 : Str) -> (ih_har : HarVowP) -> A = \base,base1,ih_har -> (irregN_h base base ih_har) ** lin A {adv = addSuffix base (mkHar ih_har (getHarConP base)) adjAdvSuffix};
} ;
irregAdv : A -> Str -> A = \a,adv -> a ** {adv = adv};
mkAS v = v ;
mkAV v = v ;

View File

@@ -5,9 +5,9 @@ concrete PhraseTur of Phrase = CatTur ** open Prelude, ResTur in {
-- The following are utterly untested.
-- Currently, they should be treated as just implementation stubs.
UttQS qs = {s = qs.s} ;
UttImpSg pol imp = {s = imp.s} ;
UttImpPl pol imp = {s = imp.s} ;
UttImpPol pol imp = {s = imp.s} ;
UttImpSg pol imp = {s = imp.s ! Sg} ;
UttImpPl pol imp = {s = imp.s ! Pl} ;
UttImpPol pol imp = {s = imp.s ! Pl} ;
UttIP ip = {s = ip.s} ;
UttIAdv iadv = iadv ;
UttCard n = {s = n.s ! Sg ! Nom} ;

View File

@@ -8,7 +8,7 @@ resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur in {
coding=utf8 ;
param
Case = Nom | Acc | Dat | Gen | Loc | Ablat | Abess Polarity ;
Case = Nom | Acc | Dat | Gen | Loc | Ablat | Abess Polarity | Instr ;
Species = Indef | Def ;
Contiguity = Con | Sep ; --Concatenate or Separate
@@ -41,7 +41,7 @@ resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur in {
| VProg Agr
| VPast Agr
| VFuture Agr
| VImperative
| VImperative Number
| VInfinitive
| Gerund Number Case
| VNoun Number Case
@@ -63,8 +63,8 @@ resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur in {
CardOrd = NCard | NOrd ;
oper
mkPron : (ben,beni,bana,banin,bende,benden,benli,bensiz:Str) -> Number -> Person -> Pron =
\ben,beni,bana,benim,bende,benden,benli,bensiz,n,p -> {
mkPron : (ben,beni,bana,banin,bende,benden,benli,bensiz,benimle:Str) -> Number -> Person -> Pron =
\ben,beni,bana,benim,bende,benden,benli,bensiz,benimle,n,p -> {
s = table {
Nom => ben ;
Acc => beni ;
@@ -73,7 +73,8 @@ resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur in {
Loc => bende ;
Ablat => benden ;
Abess Pos => benli ;
Abess Neg => bensiz
Abess Neg => bensiz ;
Instr => benimle
} ;
h = getHarmony ben ;
a = {n=n; p=p} ;
@@ -92,15 +93,15 @@ resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur in {
a = {n = n; p = p}
} ;
mkClause : Str -> Agr -> Verb -> {s : Tense => Str; subord : Str} =
\np, a, v -> {
mkClause : Str -> Agr -> Str -> Verb -> {s : Tense => Str; subord : Str} =
\np, a, compl, v -> {
s = table {
Pres => np ++ v.s ! VPres a ;
Past => np ++ v.s ! VPast a ;
Fut => np ++ v.s ! VFuture a ;
Pres => np ++ compl ++ v.s ! VPres a ;
Past => np ++ compl ++ v.s ! VPast a ;
Fut => np ++ compl ++ v.s ! VFuture a ;
Cond => "TODO"
} ;
subord = np ++ v.s ! VNoun a.n Nom
subord = np ++ compl ++ v.s ! VNoun a.n Nom
} ;
mkDet : Str -> Number -> UseGen -> {s : Str; n : Number; useGen : UseGen} =
@@ -109,7 +110,7 @@ resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur in {
attachMe : Verb -> {s : Str} =
\v ->
let
s : Str = v.s ! VImperative
s : Str = v.s ! VImperative Sg
in
case s of {
(_ + #vowel + _ )* + (_ + #frontVowel + _) => ss (s ++ "me") ;

View File

@@ -2,7 +2,7 @@ concrete SentenceTur of Sentence = CatTur ** open Prelude, ResTur in {
lin
PredVP np vp = mkClause (np.s ! Nom) np.a vp ;
PredVP np vp = mkClause (np.s ! Nom) np.a vp.compl vp ;
PredSCVP sc vp = variants {} ;
@@ -24,7 +24,7 @@ concrete SentenceTur of Sentence = CatTur ** open Prelude, ResTur in {
EmbedQS _ = variants {} ;
EmbedS _ = variants {} ;
ImpVP _ = variants {} ;
ImpVP vp = {s = \\n => vp.compl ++ vp.s ! VImperative n} ;
AdvS _ _ = variants {} ;

View File

@@ -8,25 +8,25 @@ concrete StructuralTur of Structural = CatTur **
lin
he_Pron =
mkPron "o" "onu" "ona" "onun" "onda" "ondan" "onlu" "onsuz" Sg P3 ;
mkPron "o" "onu" "ona" "onun" "onda" "ondan" "onlu" "onsuz" "onunlu" Sg P3 ;
i_Pron =
mkPron "ben" "beni" "bana" "benim"
"bende" "benden" "benli" "bensiz"
"bende" "benden" "benli" "bensiz" "benimle"
Sg P1 ;
it_Pron =
mkPron "o" "onu" "ona" "onun" "onda" "ondan" "onlu" "onsuz" Sg P3 ;
mkPron "o" "onu" "ona" "onun" "onda" "ondan" "onlu" "onsuz" "onunlu" Sg P3 ;
she_Pron =
mkPron "o" "onu" "ona" "onun" "onda" "ondan" "onlu" "onsuz" Sg P3 ;
mkPron "o" "onu" "ona" "onun" "onda" "ondan" "onlu" "onsuz" "onunlu" Sg P3 ;
that_Quant =
mkQuant "o" ;
they_Pron =
mkPron "onlar" "onları" "onlara" "onların" "onlarda" "onlardan" "onlarlı"
"onlarsız" Pl P3 ;
"onlarsız" "onlarınli" Pl P3 ;
this_Quant =
mkQuant "bu" ;
@@ -35,16 +35,16 @@ concrete StructuralTur of Structural = CatTur **
mkQuant "hiç" ;
we_Pron =
mkPron "biz" "bizi" "bize" "bizim" "bizde" "bizden" "bizli" "bizsiz" Pl P1 ;
mkPron "biz" "bizi" "bize" "bizim" "bizde" "bizden" "bizli" "bizsiz" "bizimle" Pl P1 ;
youSg_Pron =
mkPron "sen" "seni" "sana" "senin" "sende" "senden" "senli" "sensiz" Sg P2 ;
mkPron "sen" "seni" "sana" "senin" "sende" "senden" "senli" "sensiz" "seninle" Sg P2 ;
youPl_Pron =
mkPron "siz" "sizi" "size" "sizin" "sizde" "sizden" "sizli" "sizsiz" Pl P2 ;
mkPron "siz" "sizi" "size" "sizin" "sizde" "sizden" "sizli" "sizsiz" "sizinle" Pl P2 ;
youPol_Pron =
mkPron "siz" "sizi" "size" "sizin" "sizde" "sizden" "sizli" "sizsiz" Pl P2 ;
mkPron "siz" "sizi" "size" "sizin" "sizde" "sizden" "sizli" "sizsiz" "sizinle" Pl P2 ;
with_Prep =
mkPrep [] (Abess Pos) ;

View File

@@ -62,6 +62,7 @@ resource SuffixTur = open Prelude, Predef, ResTur, HarmonyTur in {
ablatSuffix : Suffix = regSuffix "den" "den" ;
abessPosSuffix : Suffix = regSuffix "li" "li" ;
abessNegSuffix : Suffix = regSuffix "siz" "siz" ;
instrSuffix : Suffix = regSuffix "la" "la" ;
-- following 4 suffixes has other forms used after genSgP3Suffix
accSuffixN : Suffix = regSuffix "i" "ni" ;
datSuffixN : Suffix = regSuffix "e" "ne" ;
@@ -96,6 +97,8 @@ resource SuffixTur = open Prelude, Predef, ResTur, HarmonyTur in {
p2PlVerbalSuffix : Suffix = regSuffix21 "siniz" "niz" ;
p3PlVerbalSuffix : Suffix = regSuffix "ler" "ler" ;
p2PlImperSuffix : Suffix = regSuffix "in" "yin" ;
p1SgAlethicCopulaSuffix : Suffix = regSuffix "dim" "ydim" ;
p2SgAlethicCopulaSuffix : Suffix = regSuffix "din" "ydin" ;
p3SgAlethicCopulaSuffix : Suffix = regSuffix "di" "ydi" ;
@@ -127,7 +130,8 @@ resource SuffixTur = open Prelude, Predef, ResTur, HarmonyTur in {
Loc => locSuffix ;
Ablat => ablatSuffix ;
Abess Pos => abessPosSuffix ;
Abess Neg => abessNegSuffix
Abess Neg => abessNegSuffix ;
Instr => instrSuffix
} ;
genSuffixes : Agr => Suffix =

View File

@@ -1,8 +1,8 @@
concrete VerbTur of Verb = CatTur ** open Prelude, ResTur, SuffixTur, HarmonyTur in {
lin
UseV v = v ;
SlashV2a v = lin VP v ;
UseV v = lin VP (v ** {compl = []}) ;
SlashV2a v = v ** {compl = []} ;
Slash2V3 v = variants {} ;
Slash3V3 v = variants {} ;
@@ -13,20 +13,20 @@ concrete VerbTur of Verb = CatTur ** open Prelude, ResTur, SuffixTur, HarmonyTur
SlashVV v = variants {} ;
SlashV2VNP = variants {} ;
ComplSlash vps np = {
s = \\ vf => vps.c.s ++ np.s ! vps.c.c ++ vps.s ! vf ;
ComplSlash vps np = vps ** {
compl = vps.compl ++ vps.c.s ++ np.s ! vps.c.c ;
} ;
-- TODO: test this and fix.
ComplVS vs s = {
s = \\vf => s.subord ++ vs.s ! vf
ComplVS vs s = vs ** {
compl = s.subord
} ;
ComplVA _ _ = variants {} ;
ComplVV _ _ = variants {} ;
ComplVQ _ _ = variants {} ;
UseComp comp = comp ;
UseComp comp = comp ** {compl = []} ;
CompCN _ = variants {} ;
CompNP ap = lin VP {
@@ -66,8 +66,13 @@ concrete VerbTur of Verb = CatTur ** open Prelude, ResTur, SuffixTur, HarmonyTur
ReflVP = variants {} ;
AdvVP = variants {} ;
AdVVP = variants {} ;
AdvVP vp adv = vp ** {
compl = vp.compl ++ adv.s ;
} ;
AdVVP adv vp = vp ** {
s = \\vf => adv.s ++ vp.s ! vf ;
} ;
PassV2 = variants {} ;
}