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;
@@ -364,15 +369,16 @@ resource ParadigmsTur = open
in
mkNoun sn
(addSuffix sg irHar accSuffix)
(addSuffix sg irHar datSuffix)
(addSuffix sg irHar datSuffix)
(addSuffix sg har genSuffix)
(addSuffix sn har locSuffix)
(addSuffix sn har ablatSuffix)
(addSuffix sn har abessPosSuffix)
(addSuffix sn har abessNegSuffix)
sg
pln
har ;
(addSuffix sn har ablatSuffix)
(addSuffix sn har abessPosSuffix)
(addSuffix sn har abessNegSuffix)
(addSuffix sn har instrSuffix)
sg
pln
har ;
regN sn =
let har = getHarmony sn ;
@@ -382,14 +388,15 @@ resource ParadigmsTur = open
mkNoun sn
(addSuffix bt har accSuffix)
(addSuffix bt har datSuffix)
(addSuffix bt har genSuffix)
(addSuffix bt har locSuffix)
(addSuffix bt har ablatSuffix)
(addSuffix bt har abessPosSuffix)
(addSuffix bt har abessNegSuffix)
(bt ! Soft)
pln
har ;
(addSuffix bt har genSuffix)
(addSuffix bt har locSuffix)
(addSuffix bt har ablatSuffix)
(addSuffix bt har abessPosSuffix)
(addSuffix bt har abessNegSuffix)
(addSuffix bt har instrSuffix)
(bt ! Soft)
pln
har ;
regPN sn = makePN sn sn ;
@@ -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 {} ;
@@ -23,9 +23,9 @@ 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 {} ;
UseSlash _ = 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 {
@@ -65,9 +65,14 @@ concrete VerbTur of Verb = CatTur ** open Prelude, ResTur, SuffixTur, HarmonyTur
CompAdv _ = variants {} ;
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 {} ;
}