forked from GitHub/gf-rgl
verbal morphology is not syntactic. added negation
This commit is contained in:
@@ -12,11 +12,11 @@ concrete AdverbTur of Adverb = CatTur ** open ResTur, Prelude in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- TODO: inflect the subject to genitive.
|
-- TODO: inflect the subject to genitive.
|
||||||
ComparAdvAdjS cadv a s = {
|
ComparAdvAdjS cadv a s = variants {} ; {- {
|
||||||
s = s.subord ++ cadv.s ++ a.s ! Sg ! Nom
|
s = s.subord ++ cadv.s ++ a.s ! Sg ! Nom
|
||||||
} ;
|
} ; -}
|
||||||
|
|
||||||
SubjS s1 s2 = {s = s1.s ++ s2.subord} ;
|
SubjS s1 s2 = variants {} ; -- {s = s1.s ++ s2.subord} ;
|
||||||
|
|
||||||
PositAdvAdj a = {s = a.adv} ;
|
PositAdvAdj a = {s = a.adv} ;
|
||||||
|
|
||||||
|
|||||||
@@ -4,18 +4,18 @@ concrete CatTur of Cat = CommonX - [CAdv,AdN] ** open ResTur, HarmonyTur, Prelud
|
|||||||
|
|
||||||
lincat
|
lincat
|
||||||
|
|
||||||
S = {s, subord : Str} ;
|
S = {s : Str} ;
|
||||||
|
|
||||||
Cl = {s : Tense => Str; subord : Str} ;
|
Cl = {s : Tense => Polarity => Str} ;
|
||||||
Imp = {s : Number => Str} ;
|
Imp = {s : Polarity => Number => Str} ;
|
||||||
|
|
||||||
-- Noun
|
-- Noun
|
||||||
CN = {s : Number => Case => Str; gen : Number => Agr => Str; h : Harmony} ;
|
CN = {s : Number => Case => Str; gen : Number => Agr => Str; h : Harmony} ;
|
||||||
NP = {s : Case => Str ; h : Harmony; a : Agr} ;
|
NP = {s : Case => Str ; h : Harmony; a : Agr} ;
|
||||||
|
|
||||||
VP = Verb ** {compl : Str} ;
|
VP = {s : VForm => Str; compl : Str} ;
|
||||||
VPSlash = Verb ** {compl : Str; c : Prep} ;
|
VPSlash = {s : VForm => Str; compl : Str; c : Prep} ;
|
||||||
Comp = Verb ;
|
Comp = {s : VForm => Str; compl : Str} ;
|
||||||
|
|
||||||
Pron = ResTur.Pron ;
|
Pron = ResTur.Pron ;
|
||||||
Det = {s : Str; n : Number; useGen : UseGen} ;
|
Det = {s : Str; n : Number; useGen : UseGen} ;
|
||||||
@@ -58,8 +58,7 @@ concrete CatTur of Cat = CommonX - [CAdv,AdN] ** open ResTur, HarmonyTur, Prelud
|
|||||||
|
|
||||||
|
|
||||||
linref
|
linref
|
||||||
V = \v -> v.s ! VInfinitive ;
|
V2 = \v -> v.s ++ v.c.s ;
|
||||||
V2 = \v -> v.s ! VInfinitive ++ v.c.s ;
|
VP = \vp -> vp.compl ++ vp.s ! VInf Pos ;
|
||||||
VP = \vp -> vp.compl ++ vp.s ! VInfinitive ;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ concrete ConjunctionTur of Conjunction =
|
|||||||
lin
|
lin
|
||||||
ConjS conj ss = {
|
ConjS conj ss = {
|
||||||
s = linCoord []!conj.sep ++ ss.s!conj.sep ++ conj.s ++ ss.s!4;
|
s = linCoord []!conj.sep ++ ss.s!conj.sep ++ conj.s ++ ss.s!4;
|
||||||
subord = linCoord []!conj.sep ++ ss.subord!conj.sep ++ conj.s ++ ss.subord!4;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
ConjNP conj ss = {
|
ConjNP conj ss = {
|
||||||
@@ -14,10 +13,8 @@ concrete ConjunctionTur of Conjunction =
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
BaseS x y = {s = table {4 => y.s; _ => x.s};
|
BaseS x y = {s = table {4 => y.s; _ => x.s};
|
||||||
subord = table {4 => y.subord; _ => x.subord};
|
|
||||||
} ;
|
} ;
|
||||||
ConsS x xs = {s = table {4 => xs.s!4; t => x.s++linCoord bindComma!t++xs.s!t};
|
ConsS x xs = {s = table {4 => xs.s!4; t => x.s++linCoord bindComma!t++xs.s!t};
|
||||||
subord = table {4 => xs.subord!4; t => x.subord++linCoord bindComma!t++xs.subord!t} ;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
BaseNP x y =
|
BaseNP x y =
|
||||||
@@ -89,7 +86,7 @@ concrete ConjunctionTur of Conjunction =
|
|||||||
BaseRS _ _ = variants {} ;
|
BaseRS _ _ = variants {} ;
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
[S] = {s,subord : Ints 4 => Str} ;
|
[S] = {s : Ints 4 => Str} ;
|
||||||
[Adv] = {s : Ints 4 => Str} ;
|
[Adv] = {s : Ints 4 => Str} ;
|
||||||
[AdV] = {s : Ints 4 => Str} ;
|
[AdV] = {s : Ints 4 => Str} ;
|
||||||
[NP] = {s : Case => Ints 4 => Str; h : Harmony; a : Agr} ;
|
[NP] = {s : Case => Ints 4 => Str; h : Harmony; a : Agr} ;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--# -path=.:../abstract:../common
|
--# -path=.:../abstract:../common
|
||||||
concrete DocumentationTur of Documentation = CatTur ** open
|
concrete DocumentationTur of Documentation = CatTur ** open
|
||||||
ResTur,
|
ResTur, Prelude,
|
||||||
HTML in {
|
HTML in {
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
@@ -97,52 +97,37 @@ lin
|
|||||||
oper
|
oper
|
||||||
inflVerb : Verb -> Str = \v ->
|
inflVerb : Verb -> Str = \v ->
|
||||||
(heading2 ("Şimdiki zaman") ++
|
(heading2 ("Şimdiki zaman") ++
|
||||||
finite VPres ++
|
finite Pres ++
|
||||||
tag "br" ++
|
|
||||||
finite VProg ++
|
|
||||||
heading2 ("Geçmiş zaman") ++
|
heading2 ("Geçmiş zaman") ++
|
||||||
finite VPast ++
|
finite Past ++
|
||||||
heading2 ("Gelecek zaman") ++
|
heading2 ("Gelecek zaman") ++
|
||||||
finite VFuture ++
|
finite Fut ++
|
||||||
heading2 ("Emir kipi") ++
|
heading2 ("Emir kipi") ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (th "tekil" ++
|
tr (th "tekil" ++
|
||||||
th "çoğul") ++
|
th "çoğul") ++
|
||||||
tr (td (v.s ! VImperative Sg) ++
|
tr (td (tbl ! VImp Pos Sg) ++
|
||||||
td (v.s ! VImperative Pl))
|
td (tbl ! VImp Pos Pl))
|
||||||
) ++
|
) ++
|
||||||
heading2 ("Eylemlik") ++
|
heading2 ("Eylemlik") ++
|
||||||
paragraph (v.s ! VInfinitive) ++
|
paragraph (tbl ! VInf Pos))
|
||||||
heading2 ("Ulaç") ++
|
|
||||||
nounForm Gerund ++
|
|
||||||
heading2 ("Ad") ++
|
|
||||||
nounForm VNoun)
|
|
||||||
where {
|
where {
|
||||||
finite : (Agr -> VForm) -> Str = \f ->
|
tbl : VForm => Str = mkVerbForms v ;
|
||||||
|
|
||||||
|
finite : Tense -> Str = \t ->
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (th "" ++
|
tr (th "" ++
|
||||||
th "tekil" ++
|
th "tekil" ++
|
||||||
th "çoğul") ++
|
th "çoğul") ++
|
||||||
tr (th "1." ++
|
tr (th "1." ++
|
||||||
td (v.s ! f {n=Sg; p=P1}) ++
|
td (tbl ! VFin t Pos {n=Sg; p=P1}) ++
|
||||||
td (v.s ! f {n=Pl; p=P1})) ++
|
td (tbl ! VFin t Pos {n=Pl; p=P1})) ++
|
||||||
tr (th "2." ++
|
tr (th "2." ++
|
||||||
td (v.s ! f {n=Sg; p=P2}) ++
|
td (tbl ! VFin t Pos {n=Sg; p=P2}) ++
|
||||||
td (v.s ! f {n=Pl; p=P2})) ++
|
td (tbl ! VFin t Pos {n=Pl; p=P2})) ++
|
||||||
tr (th "3." ++
|
tr (th "3." ++
|
||||||
td (v.s ! f {n=Sg; p=P3}) ++
|
td (tbl ! VFin t Pos {n=Sg; p=P3}) ++
|
||||||
td (v.s ! f {n=Pl; p=P3}))
|
td (tbl ! VFin t Pos {n=Pl; p=P3}))
|
||||||
) ;
|
|
||||||
|
|
||||||
nounForm : (Number -> Case -> VForm) -> Str = \f ->
|
|
||||||
frameTable (
|
|
||||||
tr (th "" ++ th "tekil" ++ th "çoğul") ++
|
|
||||||
tr (th "yalın" ++ td (v.s ! f Sg Nom) ++ td (v.s ! f Pl Nom)) ++
|
|
||||||
tr (th "belirtme" ++ td (v.s ! f Sg Acc) ++ td (v.s ! f Pl Acc)) ++
|
|
||||||
tr (th "yönelme" ++ td (v.s ! f Sg Dat) ++ td (v.s ! f Pl Dat)) ++
|
|
||||||
tr (th "bulunma" ++ td (v.s ! f Sg Loc) ++ td (v.s ! f Pl Loc)) ++
|
|
||||||
tr (th "ayrılma" ++ td (v.s ! f Sg Ablat) ++ td (v.s ! f Pl Ablat)) ++
|
|
||||||
tr (th "tamlayan" ++ td (v.s ! f Sg Gen) ++ td (v.s ! f Pl Gen))
|
|
||||||
) ;
|
) ;
|
||||||
} ;
|
} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--# -path=.:../abstract:../common:../../prelude
|
--# -path=.:../abstract:../common:../../prelude
|
||||||
|
|
||||||
concrete NounTur of Noun = CatTur ** open ResTur, SuffixTur, HarmonyTur, Prelude in {
|
concrete NounTur of Noun = CatTur ** open ResTur, SuffixTur, HarmonyTur, ParamX, Prelude in {
|
||||||
|
|
||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
@@ -194,7 +194,9 @@ concrete NounTur of Noun = CatTur ** open ResTur, SuffixTur, HarmonyTur, Prelude
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
PPartNP np v2 = {
|
PPartNP np v2 = {
|
||||||
s = \\c => np.s ! c ++ v2.s ! (VPast np.a);
|
s = \\c => np.s ! c
|
||||||
|
++ mkVerbForms v2 ! VFin Past Pos np.a --# notpresent
|
||||||
|
;
|
||||||
h = np.h ;
|
h = np.h ;
|
||||||
a = np.a
|
a = np.a
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -60,13 +60,6 @@ resource ParadigmsTur = open
|
|||||||
mkVS : V -> VS = \verb -> verb ;
|
mkVS : V -> VS = \verb -> verb ;
|
||||||
mkVQ : V -> VQ = \verb -> verb ;
|
mkVQ : V -> VQ = \verb -> verb ;
|
||||||
|
|
||||||
-- worst-case function
|
|
||||||
-- bases of all forms are required.
|
|
||||||
makeVerb : (mek,inf,base,presBase,pastBase,aoristBase : Str)
|
|
||||||
-> (futureBase : Softness => Str )
|
|
||||||
-> Harmony
|
|
||||||
-> V ;
|
|
||||||
|
|
||||||
-- make a regular verb
|
-- make a regular verb
|
||||||
-- supply infinitive, softened infinitive, future infinitive forms and
|
-- supply infinitive, softened infinitive, future infinitive forms and
|
||||||
-- aorist type
|
-- aorist type
|
||||||
@@ -234,8 +227,8 @@ resource ParadigmsTur = open
|
|||||||
|
|
||||||
auxillaryVerb prefix verb con =
|
auxillaryVerb prefix verb con =
|
||||||
case con of {
|
case con of {
|
||||||
Sep => lin V {s = \\t => prefix ++ verb.s ! t} ;
|
Sep => lin V {s = prefix ++ verb.s; stems : VStem => Str = \\t => prefix ++ verb.stems ! t; h = verb.h; aoristType = verb.aoristType} ;
|
||||||
Con => lin V {s = \\t => prefix + verb.s ! t}
|
Con => lin V {s = prefix + verb.s; stems : VStem => Str = \\t => prefix + verb.stems ! t; h = verb.h; aoristType = verb.aoristType}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
regV inf = regVerb inf inf inf (getAoristType (tk 3 inf)) ;
|
regV inf = regVerb inf inf inf (getAoristType (tk 3 inf)) ;
|
||||||
@@ -243,86 +236,25 @@ resource ParadigmsTur = open
|
|||||||
irregV_aor inf aorT = regVerb inf inf inf aorT ;
|
irregV_aor inf aorT = regVerb inf inf inf aorT ;
|
||||||
|
|
||||||
regVerb inf softInf futInf aoristType =
|
regVerb inf softInf futInf aoristType =
|
||||||
let base = (tk 3 inf) ;
|
let base = tk 3 inf ;
|
||||||
softBase = (tk 3 softInf) ;
|
softBase = tk 3 softInf ;
|
||||||
futBase = (tk 3 futInf) ;
|
futBase = tk 3 futInf ;
|
||||||
har = getHarmony base ;
|
|
||||||
softness = getSoftness base ;
|
|
||||||
futureBase = addSuffix futBase har futureSuffix ;
|
|
||||||
softFutureBase = addSuffix futBase har softFutureSuffix ;
|
|
||||||
pastBase = addSuffix base har pastSuffix ;
|
|
||||||
futureTable =
|
|
||||||
table {
|
|
||||||
Soft => softFutureBase ;
|
|
||||||
Hard => futureBase
|
|
||||||
} ;
|
|
||||||
aoristBase =
|
|
||||||
case aoristType of {
|
|
||||||
SgSylConReg => addSuffix softBase har aoristErSuffix ;
|
|
||||||
_ => addSuffix softBase har aoristIrSuffix
|
|
||||||
} ;
|
|
||||||
progBase =
|
progBase =
|
||||||
case (getHarConP base) of {
|
case getHarConP base of {
|
||||||
SVow => addSuffix (tk 1 base) (getHarmony (tk 1 base)) presentSuffix ;
|
SVow => tk 1 base ;
|
||||||
_ => addSuffix softBase har presentSuffix
|
_ => softBase
|
||||||
} ;
|
}
|
||||||
in makeVerb (init inf) inf base progBase pastBase aoristBase futureTable har;
|
in lin V {
|
||||||
|
s = inf ;
|
||||||
makeVerb mek inf base progBase pastBase aoristBase futureTable har =
|
stems = table {
|
||||||
let
|
VBase Hard => base ;
|
||||||
futht = getHarVowP (futureTable ! Hard) ;
|
VBase Soft => softBase ;
|
||||||
pastHar = {vow = har.vow ; con = SVow} ;
|
VProg => progBase ;
|
||||||
futHar = {vow = futht ; con = (SCon Soft)} ;
|
VFut => futBase
|
||||||
aorHar = {vow = getHarVowP aoristBase ; con = (SCon Soft)} ;
|
} ;
|
||||||
in
|
aoristType = aoristType ;
|
||||||
lin V {
|
h = getHarmony base
|
||||||
s =
|
} ;
|
||||||
table {
|
|
||||||
VPres agr =>
|
|
||||||
addSuffix aoristBase aorHar (verbSuffixes ! agr) ;
|
|
||||||
VProg agr =>
|
|
||||||
addSuffix progBase progHar (verbSuffixes ! agr) ;
|
|
||||||
VPast agr =>
|
|
||||||
addSuffix pastBase pastHar (verbSuffixes ! agr) ;
|
|
||||||
VFuture agr =>
|
|
||||||
addSuffix futureTable futHar (verbSuffixes ! agr) ;
|
|
||||||
VImperative Sg =>
|
|
||||||
base ;
|
|
||||||
VImperative Pl =>
|
|
||||||
addSuffix base har p2PlImperSuffix ;
|
|
||||||
VInfinitive =>
|
|
||||||
inf ;
|
|
||||||
Gerund _ Acc =>
|
|
||||||
case aorHar.vow of {
|
|
||||||
Ih_Har => mek + "si" ;
|
|
||||||
I_Har => mek + "sı" ;
|
|
||||||
U_Har => "TODO" ;
|
|
||||||
Uh_Har => "TODO"
|
|
||||||
} ;
|
|
||||||
Gerund _ _ => mek ;
|
|
||||||
VNoun n Gen =>
|
|
||||||
case aorHar.vow of {
|
|
||||||
Ih_Har => base + "tiği" ;
|
|
||||||
I_Har => base + "tığı" ;
|
|
||||||
U_Har => base + "duğu" ;
|
|
||||||
Uh_Har => base + "düğü"
|
|
||||||
} ;
|
|
||||||
VNoun n Ablat =>
|
|
||||||
case aorHar.vow of {
|
|
||||||
Ih_Har => base + "tıktan" ;
|
|
||||||
I_Har => base + "tıktan" ;
|
|
||||||
U_Har => base + "duktan" ;
|
|
||||||
Uh_Har => base + "dükten"
|
|
||||||
} ;
|
|
||||||
VNoun n _ =>
|
|
||||||
case aorHar.vow of {
|
|
||||||
Ih_Har => base + "(TODO: makeVerb)" ;
|
|
||||||
I_Har => base + "(TODO: makeVerb)" ;
|
|
||||||
U_Har => base + "(TODO: makeVerb)" ;
|
|
||||||
Uh_Har => base + "(TODO: makeVerb)"
|
|
||||||
}
|
|
||||||
} ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- Implementation of noun paradigms
|
-- Implementation of noun paradigms
|
||||||
mkNoun sn sa sd sg sl sabl sgabPos sgabNeg si sgs pln har =
|
mkNoun sn sa sd sg sl sabl sgabPos sgabNeg si sgs pln har =
|
||||||
@@ -636,14 +568,6 @@ resource ParadigmsTur = open
|
|||||||
|
|
||||||
mkQuant : Str -> Quant = \s -> lin Quant {s=s; useGen = NoGen} ;
|
mkQuant : Str -> Quant = \s -> lin Quant {s=s; useGen = NoGen} ;
|
||||||
|
|
||||||
param
|
|
||||||
AoristType =
|
|
||||||
PlSyl -- more than one syllable, takes -ir
|
|
||||||
| SgSylConIrreg -- one syllable ending with consonant, but takes -ir
|
|
||||||
-- (here is the list: al-, bil-, bul-, dur-, gel-, gör-,
|
|
||||||
-- kal-, ol-, öl-, var-, ver-, vur-, san- )
|
|
||||||
| SgSylConReg ; -- one syllable ending with consonant, takes -er
|
|
||||||
|
|
||||||
oper
|
oper
|
||||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||||
|
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ concrete PhraseTur of Phrase = CatTur ** open Prelude, ResTur in {
|
|||||||
-- The following are utterly untested.
|
-- The following are utterly untested.
|
||||||
-- Currently, they should be treated as just implementation stubs.
|
-- Currently, they should be treated as just implementation stubs.
|
||||||
UttQS qs = {s = qs.s} ;
|
UttQS qs = {s = qs.s} ;
|
||||||
UttImpSg pol imp = {s = imp.s ! Sg} ;
|
UttImpSg pol imp = {s = imp.s ! pol.p ! Sg} ;
|
||||||
UttImpPl pol imp = {s = imp.s ! Pl} ;
|
UttImpPl pol imp = {s = imp.s ! pol.p ! Pl} ;
|
||||||
UttImpPol pol imp = {s = imp.s ! Pl} ;
|
UttImpPol pol imp = {s = imp.s ! pol.p ! Pl} ;
|
||||||
UttIP ip = {s = ip.s} ;
|
UttIP ip = {s = ip.s} ;
|
||||||
UttIAdv iadv = iadv ;
|
UttIAdv iadv = iadv ;
|
||||||
UttCard n = {s = n.s ! Sg ! Nom} ;
|
UttCard n = {s = n.s ! Sg ! Nom} ;
|
||||||
@@ -16,7 +16,7 @@ concrete PhraseTur of Phrase = CatTur ** open Prelude, ResTur in {
|
|||||||
-- The following have been somewhat tested and seem to be working fine
|
-- The following have been somewhat tested and seem to be working fine
|
||||||
-- to some extent.
|
-- to some extent.
|
||||||
UttNP np = {s = np.s ! Nom} ;
|
UttNP np = {s = np.s ! Nom} ;
|
||||||
UttVP vp = {s = vp.s ! VInfinitive} ;
|
UttVP vp = {s = vp.s ! VInf Pos} ;
|
||||||
UttAP ap = {s = ap.s ! Sg ! Nom} ;
|
UttAP ap = {s = ap.s ! Sg ! Nom} ;
|
||||||
UttCN n = {s = n.s ! Sg ! Nom} ;
|
UttCN n = {s = n.s ! Sg ! Nom} ;
|
||||||
UttS s = {s = s.s} ;
|
UttS s = {s = s.s} ;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--# -path=.:../abstract:../common:../../prelude
|
--# -path=.:../abstract:../common:../../prelude
|
||||||
|
|
||||||
resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur in {
|
resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur, SuffixTur in {
|
||||||
|
|
||||||
--2 For $Noun$
|
--2 For $Noun$
|
||||||
|
|
||||||
@@ -37,16 +37,26 @@ resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur in {
|
|||||||
|
|
||||||
param
|
param
|
||||||
VForm =
|
VForm =
|
||||||
VPres Agr
|
VInf Polarity
|
||||||
| VProg Agr
|
| VImp Polarity Number
|
||||||
| VPast Agr
|
| VFin Tense Polarity Agr
|
||||||
| VFuture Agr
|
|
||||||
| VImperative Number
|
|
||||||
| VInfinitive
|
|
||||||
| Gerund Number Case
|
|
||||||
| VNoun Number Case
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
param
|
||||||
|
VStem =
|
||||||
|
VBase Softness
|
||||||
|
| VProg
|
||||||
|
| VFuture
|
||||||
|
;
|
||||||
|
|
||||||
|
param
|
||||||
|
AoristType =
|
||||||
|
PlSyl -- more than one syllable, takes -ir
|
||||||
|
| SgSylConIrreg -- one syllable ending with consonant, but takes -ir
|
||||||
|
-- (here is the list: al-, bil-, bul-, dur-, gel-, gör-,
|
||||||
|
-- kal-, ol-, öl-, var-, ver-, vur-, san- )
|
||||||
|
| SgSylConReg ; -- one syllable ending with consonant, takes -er
|
||||||
|
|
||||||
param
|
param
|
||||||
ConjType = Infix | Mixfix ;
|
ConjType = Infix | Mixfix ;
|
||||||
|
|
||||||
@@ -54,7 +64,10 @@ resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur in {
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
Verb : Type = {
|
Verb : Type = {
|
||||||
s : VForm => Str
|
s : Str ;
|
||||||
|
stems : VStem => Str ;
|
||||||
|
aoristType : AoristType ;
|
||||||
|
h : Harmony
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--2 For $Numeral$
|
--2 For $Numeral$
|
||||||
@@ -93,31 +106,150 @@ resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur in {
|
|||||||
a = {n = n; p = p}
|
a = {n = n; p = p}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkClause : Str -> Agr -> Str -> Verb -> {s : Tense => Str; subord : Str} =
|
mkVerbForms : Verb -> VForm => Str =
|
||||||
\np, a, compl, v -> {
|
\v -> table {
|
||||||
s = table {
|
VInf Pos => v.s ;
|
||||||
Pres => np ++ compl ++ v.s ! VPres a ;
|
VInf Neg => v.stems ! VBase Soft ++ BIND ++
|
||||||
Past => np ++ compl ++ v.s ! VPast a ;
|
suffixStr v.h negativeSuffix +
|
||||||
Fut => np ++ compl ++ v.s ! VFuture a ;
|
suffixStr v.h infinitiveSuffix ;
|
||||||
Cond => "TODO"
|
VImp p n => v.stems ! VBase Soft ++
|
||||||
} ;
|
case <p,n> of {
|
||||||
subord = np ++ compl ++ v.s ! VNoun a.n Nom
|
<Pos,Sg> => [] ;
|
||||||
} ;
|
<Neg,Sg> => BIND ++
|
||||||
|
suffixStr v.h negativeSuffix ;
|
||||||
|
<Pos,Pl> => BIND ++
|
||||||
|
suffixStr v.h p2PlImperSuffix ;
|
||||||
|
<Neg,Pl> => BIND ++
|
||||||
|
suffixStr v.h negativeSuffix +
|
||||||
|
(let negHar = mkHar (case v.h.vow of {
|
||||||
|
I_Har | U_Har => I_Har ;
|
||||||
|
Ih_Har | Uh_Har => Ih_Har
|
||||||
|
}) SVow
|
||||||
|
in suffixStr negHar p2PlImperSuffix)
|
||||||
|
} ;
|
||||||
|
VFin t p agr =>
|
||||||
|
let presHar = mkHar (case v.h.con of {
|
||||||
|
SCon _ => case v.aoristType of {
|
||||||
|
SgSylConReg => Ih_Har ;
|
||||||
|
_ => v.h.vow
|
||||||
|
} ;
|
||||||
|
SVow => v.h.vow
|
||||||
|
}) (SCon Soft) ;
|
||||||
|
pastHar = mkHar v.h.vow SVow ;
|
||||||
|
futSoft = (verbSuffixes ! agr).stemT ;
|
||||||
|
futHar = mkHar (case v.h.vow of {
|
||||||
|
I_Har | U_Har => I_Har ;
|
||||||
|
Ih_Har | Uh_Har => Ih_Har
|
||||||
|
}) (SCon futSoft) ;
|
||||||
|
negHar = mkHar (case v.h.vow of {
|
||||||
|
I_Har | U_Har => I_Har ;
|
||||||
|
Ih_Har | Uh_Har => Ih_Har
|
||||||
|
}) SVow ;
|
||||||
|
presNegHar =
|
||||||
|
mkHar negHar.vow (SCon Soft)
|
||||||
|
in case p of {
|
||||||
|
Pos => case t of {
|
||||||
|
Pres => v.stems ! VBase Soft ++ BIND ++
|
||||||
|
suffixStr v.h (case v.aoristType of {
|
||||||
|
SgSylConReg => aoristErSuffix ;
|
||||||
|
_ => aoristIrSuffix
|
||||||
|
}) +
|
||||||
|
suffixStr presHar (verbSuffixes ! agr) ;
|
||||||
|
Past => v.stems ! VBase Hard ++ BIND ++
|
||||||
|
suffixStr v.h pastSuffix +
|
||||||
|
suffixStr pastHar (verbSuffixes ! agr) ;
|
||||||
|
Fut => v.stems ! VFuture ++ BIND ++
|
||||||
|
suffixStr v.h (case futSoft of {
|
||||||
|
Soft => softFutureSuffix ;
|
||||||
|
Hard => futureSuffix
|
||||||
|
}) +
|
||||||
|
suffixStr futHar (verbSuffixes ! agr) ;
|
||||||
|
Cond => v.stems ! VBase Hard ++ BIND ++
|
||||||
|
suffixStr v.h (condCopulaSuffixes ! agr)
|
||||||
|
} ;
|
||||||
|
Neg => case t of {
|
||||||
|
Pres => v.stems ! VBase Hard ++ BIND ++
|
||||||
|
suffixStr v.h negativeSuffix +
|
||||||
|
case agr of {
|
||||||
|
{n=Sg; p=P1} => suffixStr negHar (verbSuffixes ! agr) ;
|
||||||
|
{n=Pl; p=P1} => suffixStr negHar p1PlAoristSuffix ;
|
||||||
|
_ => suffixStr negHar aoristIzSuffix + suffixStr presNegHar (verbSuffixes ! agr)
|
||||||
|
} ;
|
||||||
|
Past => v.stems ! VBase Hard ++ BIND ++
|
||||||
|
suffixStr v.h negativeSuffix +
|
||||||
|
suffixStr negHar pastSuffix +
|
||||||
|
suffixStr negHar (verbSuffixes ! agr) ;
|
||||||
|
Fut => v.stems ! VBase Hard ++ BIND ++
|
||||||
|
suffixStr v.h negativeSuffix +
|
||||||
|
suffixStr negHar (case (verbSuffixes ! agr).stemT of {
|
||||||
|
Soft => softFutureSuffix ;
|
||||||
|
Hard => futureSuffix
|
||||||
|
}) +
|
||||||
|
suffixStr futHar (verbSuffixes ! agr) ;
|
||||||
|
Cond => v.stems ! VBase Hard ++ BIND ++
|
||||||
|
suffixStr v.h negativeSuffix +
|
||||||
|
suffixStr negHar (condCopulaSuffixes ! agr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
mkDet : Str -> Number -> UseGen -> {s : Str; n : Number; useGen : UseGen} =
|
mkDet : Str -> Number -> UseGen -> {s : Str; n : Number; useGen : UseGen} =
|
||||||
\s, n, ug -> {s = s; n = n; useGen = ug} ;
|
\s, n, ug -> {s = s; n = n; useGen = ug} ;
|
||||||
|
|
||||||
attachMe : Verb -> {s : Str} =
|
|
||||||
\v ->
|
|
||||||
let
|
|
||||||
s : Str = v.s ! VImperative Sg
|
|
||||||
in
|
|
||||||
case s of {
|
|
||||||
(_ + #vowel + _ )* + (_ + #frontVowel + _) => ss (s ++ "me") ;
|
|
||||||
(_ + #vowel + _)* + (_ + #backVowel + _) => ss (s ++ "ma")
|
|
||||||
} ;
|
|
||||||
|
|
||||||
linCoord : Str -> Ints 4 => Str ;
|
linCoord : Str -> Ints 4 => Str ;
|
||||||
linCoord comma = table {0 => "hem"; 1=>"ya"; 2=>"ne"; 3=>comma; 4=>[]} ;
|
linCoord comma = table {0 => "hem"; 1=>"ya"; 2=>"ne"; 3=>comma; 4=>[]} ;
|
||||||
|
|
||||||
|
caseSuffixes : Case => Suffix =
|
||||||
|
table {
|
||||||
|
Nom => empSuffix ;
|
||||||
|
Acc => accSuffix ;
|
||||||
|
Dat => datSuffix ;
|
||||||
|
Gen => genSuffix ;
|
||||||
|
Loc => locSuffix ;
|
||||||
|
Ablat => ablatSuffix ;
|
||||||
|
Abess Pos => abessPosSuffix ;
|
||||||
|
Abess Neg => abessNegSuffix ;
|
||||||
|
Instr => instrSuffix
|
||||||
|
} ;
|
||||||
|
|
||||||
|
genSuffixes : Agr => Suffix =
|
||||||
|
table {
|
||||||
|
{n=Sg; p=P1} => genSgP1Suffix ;
|
||||||
|
{n=Sg; p=P2} => genSgP2Suffix ;
|
||||||
|
{n=Sg; p=P3} => genSgP3Suffix ;
|
||||||
|
{n=Pl; p=P1} => genPlP1Suffix ;
|
||||||
|
{n=Pl; p=P2} => genPlP2Suffix ;
|
||||||
|
{n=Pl; p=P3} => genPlP3Suffix
|
||||||
|
} ;
|
||||||
|
|
||||||
|
verbSuffixes : Agr => Suffix =
|
||||||
|
table {
|
||||||
|
{n=Sg; p=P1} => p1SgVerbalSuffix ;
|
||||||
|
{n=Sg; p=P2} => p2SgVerbalSuffix ;
|
||||||
|
{n=Sg; p=P3} => empSuffix ;
|
||||||
|
{n=Pl; p=P1} => p1PlVerbalSuffix ;
|
||||||
|
{n=Pl; p=P2} => p2PlVerbalSuffix ;
|
||||||
|
{n=Pl; p=P3} => p3PlVerbalSuffix
|
||||||
|
} ;
|
||||||
|
|
||||||
|
alethicCopulaSuffixes : Agr => Suffix =
|
||||||
|
table {
|
||||||
|
{n=Sg; p=P1} => p1SgAlethicCopulaSuffix ;
|
||||||
|
{n=Sg; p=P2} => p2SgAlethicCopulaSuffix ;
|
||||||
|
{n=Sg; p=P3} => p3SgAlethicCopulaSuffix ;
|
||||||
|
{n=Pl; p=P1} => p1PlAlethicCopulaSuffix ;
|
||||||
|
{n=Pl; p=P2} => p2PlAlethicCopulaSuffix ;
|
||||||
|
{n=Pl; p=P3} => p3PlAlethicCopulaSuffix
|
||||||
|
} ;
|
||||||
|
|
||||||
|
condCopulaSuffixes : Agr => Suffix =
|
||||||
|
table {
|
||||||
|
{n=Sg; p=P1} => p1SgCondCopulaSuffix ;
|
||||||
|
{n=Sg; p=P2} => p2SgCondCopulaSuffix ;
|
||||||
|
{n=Sg; p=P3} => p3SgCondCopulaSuffix ;
|
||||||
|
{n=Pl; p=P1} => p1PlCondCopulaSuffix ;
|
||||||
|
{n=Pl; p=P2} => p2PlCondCopulaSuffix ;
|
||||||
|
{n=Pl; p=P3} => p3PlCondCopulaSuffix
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
concrete SentenceTur of Sentence = CatTur ** open Prelude, ResTur in {
|
concrete SentenceTur of Sentence = CatTur ** open Prelude, ResTur in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
PredVP np vp = {s = \\t,p => np.s ! Nom ++ vp.compl ++ vp.s ! VFin t p np.a} ;
|
||||||
PredVP np vp = mkClause (np.s ! Nom) np.a vp.compl vp ;
|
|
||||||
|
|
||||||
PredSCVP sc vp = variants {} ;
|
PredSCVP sc vp = variants {} ;
|
||||||
|
|
||||||
-- TODO: Check how correct this is.
|
-- TODO: Check how correct this is.
|
||||||
EmbedVP vp = {s = (vp.s ! Gerund Sg Acc)} ;
|
EmbedVP vp = variants {} ; -- {s = (vp.s ! Gerund Sg Acc)} ;
|
||||||
|
|
||||||
-- TODO: rudimentary implementation; revise this.
|
UseCl temp pol cl = {s = temp.s ++ pol.s ++ cl.s ! temp.t ! pol.p} ;
|
||||||
UseCl temp pol cl = {s = temp.s ++ cl.s ! temp.t; subord=cl.subord} ;
|
|
||||||
|
|
||||||
UseQCl _ _ = variants {} ;
|
UseQCl _ _ = variants {} ;
|
||||||
|
|
||||||
@@ -24,7 +22,8 @@ concrete SentenceTur of Sentence = CatTur ** open Prelude, ResTur in {
|
|||||||
EmbedQS _ = variants {} ;
|
EmbedQS _ = variants {} ;
|
||||||
EmbedS _ = variants {} ;
|
EmbedS _ = variants {} ;
|
||||||
|
|
||||||
ImpVP vp = {s = \\n => vp.compl ++ vp.s ! VImperative n} ;
|
ImpVP vp = {s = \\p,n => vp.compl ++ vp.s ! VImp p n
|
||||||
|
} ;
|
||||||
|
|
||||||
AdvS _ _ = variants {} ;
|
AdvS _ _ = variants {} ;
|
||||||
|
|
||||||
|
|||||||
@@ -203,17 +203,11 @@ concrete StructuralTur of Structural = CatTur **
|
|||||||
why_IAdv = {s = "neden"} ;
|
why_IAdv = {s = "neden"} ;
|
||||||
where_IAdv = {s = "nerede"} ;
|
where_IAdv = {s = "nerede"} ;
|
||||||
|
|
||||||
can8know_VV = {
|
can8know_VV = variants {} ;
|
||||||
s = \\_ => "(TODO: can8know_VV)"
|
|
||||||
} ;
|
|
||||||
|
|
||||||
can_VV = {
|
can_VV = variants {} ;
|
||||||
s = \\_ => "(TODO: can_VV)"
|
|
||||||
} ;
|
|
||||||
|
|
||||||
must_VV = {
|
must_VV = variants {} ;
|
||||||
s = \\_ => "(TODO: must_VV)"
|
|
||||||
} ;
|
|
||||||
|
|
||||||
not_Predet = {
|
not_Predet = {
|
||||||
s = "(TODO: not_Predet)"
|
s = "(TODO: not_Predet)"
|
||||||
@@ -241,7 +235,7 @@ concrete StructuralTur of Structural = CatTur **
|
|||||||
|
|
||||||
-- TODO: this depends on the linearization for `ComplVV` and is really a
|
-- TODO: this depends on the linearization for `ComplVV` and is really a
|
||||||
-- morphological construct so it might be a bit tricky to implement.
|
-- morphological construct so it might be a bit tricky to implement.
|
||||||
want_VV = { s = \\_ => "(TODO: want_VV)" } ;
|
want_VV = variants {} ;
|
||||||
|
|
||||||
whatPl_IP = { s = "neler" } ;
|
whatPl_IP = { s = "neler" } ;
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
--# -path=.:../abstract:../common:../../prelude
|
--# -path=.:../abstract:../common:../../prelude
|
||||||
|
|
||||||
resource SuffixTur = open Prelude, Predef, ResTur, HarmonyTur in {
|
resource SuffixTur = open Prelude, Predef, HarmonyTur in {
|
||||||
flags
|
flags
|
||||||
coding=utf8 ;
|
coding=utf8 ;
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ resource SuffixTur = open Prelude, Predef, ResTur, HarmonyTur in {
|
|||||||
ablatSuffix : Suffix = regSuffix "den" "den" ;
|
ablatSuffix : Suffix = regSuffix "den" "den" ;
|
||||||
abessPosSuffix : Suffix = regSuffix "li" "li" ;
|
abessPosSuffix : Suffix = regSuffix "li" "li" ;
|
||||||
abessNegSuffix : Suffix = regSuffix "siz" "siz" ;
|
abessNegSuffix : Suffix = regSuffix "siz" "siz" ;
|
||||||
instrSuffix : Suffix = regSuffix "la" "la" ;
|
instrSuffix : Suffix = regSuffix "le" "le" ;
|
||||||
-- following 4 suffixes has other forms used after genSgP3Suffix
|
-- following 4 suffixes has other forms used after genSgP3Suffix
|
||||||
accSuffixN : Suffix = regSuffix "i" "ni" ;
|
accSuffixN : Suffix = regSuffix "i" "ni" ;
|
||||||
datSuffixN : Suffix = regSuffix "e" "ne" ;
|
datSuffixN : Suffix = regSuffix "e" "ne" ;
|
||||||
@@ -79,6 +79,8 @@ resource SuffixTur = open Prelude, Predef, ResTur, HarmonyTur in {
|
|||||||
-- see the comment at makeNoun operation in ParadigmsTur.gf
|
-- see the comment at makeNoun operation in ParadigmsTur.gf
|
||||||
genPlP3Suffix : Suffix = regSuffix "i" "i" ;
|
genPlP3Suffix : Suffix = regSuffix "i" "i" ;
|
||||||
|
|
||||||
|
negativeSuffix : Suffix = regSuffix "me" "me" ;
|
||||||
|
|
||||||
-- Tense Suffixes
|
-- Tense Suffixes
|
||||||
pastSuffix : Suffix = regSuffix "di" "di" ;
|
pastSuffix : Suffix = regSuffix "di" "di" ;
|
||||||
inferentSuffix : Suffix = regSuffix "miş" "miş" ;
|
inferentSuffix : Suffix = regSuffix "miş" "miş" ;
|
||||||
@@ -86,8 +88,10 @@ resource SuffixTur = open Prelude, Predef, ResTur, HarmonyTur in {
|
|||||||
presentSuffix : Suffix = regSuffix "iyor" "iyor" ;
|
presentSuffix : Suffix = regSuffix "iyor" "iyor" ;
|
||||||
aoristIrSuffix : Suffix = regSuffix "ir" "r" ;
|
aoristIrSuffix : Suffix = regSuffix "ir" "r" ;
|
||||||
aoristErSuffix : Suffix = regSuffix "er" "r" ;
|
aoristErSuffix : Suffix = regSuffix "er" "r" ;
|
||||||
|
aoristIzSuffix : Suffix = regSuffix "iz" "z" ;
|
||||||
futureSuffix : Suffix = regSuffix2 "ecek" "yecek" ;
|
futureSuffix : Suffix = regSuffix2 "ecek" "yecek" ;
|
||||||
softFutureSuffix : Suffix = regSuffix2 "eceğ" "yeceğ" ;
|
softFutureSuffix: Suffix = regSuffix2 "eceğ" "yeceğ" ;
|
||||||
|
|
||||||
-- Person Suffixes for Verbs
|
-- Person Suffixes for Verbs
|
||||||
|
|
||||||
p1SgVerbalSuffix : Suffix = regSuffix "im" "m" ;
|
p1SgVerbalSuffix : Suffix = regSuffix "im" "m" ;
|
||||||
@@ -97,7 +101,8 @@ resource SuffixTur = open Prelude, Predef, ResTur, HarmonyTur in {
|
|||||||
p2PlVerbalSuffix : Suffix = regSuffix21 "siniz" "niz" ;
|
p2PlVerbalSuffix : Suffix = regSuffix21 "siniz" "niz" ;
|
||||||
p3PlVerbalSuffix : Suffix = regSuffix "ler" "ler" ;
|
p3PlVerbalSuffix : Suffix = regSuffix "ler" "ler" ;
|
||||||
|
|
||||||
p2PlImperSuffix : Suffix = regSuffix "in" "yin" ;
|
p1PlAoristSuffix : Suffix = regSuffix "iz" "yiz" ;
|
||||||
|
p2PlImperSuffix : Suffix = regSuffix "in" "yin" ;
|
||||||
|
|
||||||
p1SgAlethicCopulaSuffix : Suffix = regSuffix "dim" "ydim" ;
|
p1SgAlethicCopulaSuffix : Suffix = regSuffix "dim" "ydim" ;
|
||||||
p2SgAlethicCopulaSuffix : Suffix = regSuffix "din" "ydin" ;
|
p2SgAlethicCopulaSuffix : Suffix = regSuffix "din" "ydin" ;
|
||||||
@@ -110,69 +115,16 @@ resource SuffixTur = open Prelude, Predef, ResTur, HarmonyTur in {
|
|||||||
p2SgCondCopulaSuffix : Suffix = regSuffix "sen" "sen" ;
|
p2SgCondCopulaSuffix : Suffix = regSuffix "sen" "sen" ;
|
||||||
p3SgCondCopulaSuffix : Suffix = regSuffix "se" "se" ;
|
p3SgCondCopulaSuffix : Suffix = regSuffix "se" "se" ;
|
||||||
p1PlCondCopulaSuffix : Suffix = regSuffix "sek" "sek" ;
|
p1PlCondCopulaSuffix : Suffix = regSuffix "sek" "sek" ;
|
||||||
p2PlCondCopulaSuffix : Suffix = regSuffix21 "seniz" "seniz" ;
|
p2PlCondCopulaSuffix : Suffix = regSuffix2 "seniz" "seniz" ;
|
||||||
p3PlCondCopulaSuffix : Suffix = regSuffix "lerse" "lerse" ;
|
p3PlCondCopulaSuffix : Suffix = regSuffix "seler" "seler" ;
|
||||||
|
|
||||||
subordSuffixDik : Suffix = regSuffix2 "dik" "dikler" ;
|
infinitiveSuffix : Suffix = regSuffix "mek" "mek" ;
|
||||||
softSubordSuffixDik : Suffix = regSuffix2 "diğ" "dikler" ;
|
|
||||||
|
|
||||||
-- Ordinal suffix for numbers
|
-- Ordinal suffix for numbers
|
||||||
ordNumSuffix : Suffix = regSuffix21 "inci" "nci" ;
|
ordNumSuffix : Suffix = regSuffix21 "inci" "nci" ;
|
||||||
-- Suffix for deriving adverb from a adjective
|
-- Suffix for deriving adverb from a adjective
|
||||||
adjAdvSuffix : Suffix = regSuffix "ce" "ce" ;
|
adjAdvSuffix : Suffix = regSuffix "ce" "ce" ;
|
||||||
|
|
||||||
caseSuffixes : Case => Suffix =
|
|
||||||
table {
|
|
||||||
Nom => empSuffix ;
|
|
||||||
Acc => accSuffix ;
|
|
||||||
Dat => datSuffix ;
|
|
||||||
Gen => genSuffix ;
|
|
||||||
Loc => locSuffix ;
|
|
||||||
Ablat => ablatSuffix ;
|
|
||||||
Abess Pos => abessPosSuffix ;
|
|
||||||
Abess Neg => abessNegSuffix ;
|
|
||||||
Instr => instrSuffix
|
|
||||||
} ;
|
|
||||||
|
|
||||||
genSuffixes : Agr => Suffix =
|
|
||||||
table {
|
|
||||||
{n=Sg; p=P1} => genSgP1Suffix ;
|
|
||||||
{n=Sg; p=P2} => genSgP2Suffix ;
|
|
||||||
{n=Sg; p=P3} => genSgP3Suffix ;
|
|
||||||
{n=Pl; p=P1} => genPlP1Suffix ;
|
|
||||||
{n=Pl; p=P2} => genPlP2Suffix ;
|
|
||||||
{n=Pl; p=P3} => genPlP3Suffix
|
|
||||||
} ;
|
|
||||||
|
|
||||||
verbSuffixes : Agr => Suffix =
|
|
||||||
table {
|
|
||||||
{n=Sg; p=P1} => p1SgVerbalSuffix ;
|
|
||||||
{n=Sg; p=P2} => p2SgVerbalSuffix ;
|
|
||||||
{n=Sg; p=P3} => empSuffix ;
|
|
||||||
{n=Pl; p=P1} => p1PlVerbalSuffix ;
|
|
||||||
{n=Pl; p=P2} => p2PlVerbalSuffix ;
|
|
||||||
{n=Pl; p=P3} => p3PlVerbalSuffix
|
|
||||||
} ;
|
|
||||||
|
|
||||||
alethicCopulaSuffixes : Agr => Suffix =
|
|
||||||
table {
|
|
||||||
{n=Sg; p=P1} => p1SgAlethicCopulaSuffix ;
|
|
||||||
{n=Sg; p=P2} => p2SgAlethicCopulaSuffix ;
|
|
||||||
{n=Sg; p=P3} => p3SgAlethicCopulaSuffix ;
|
|
||||||
{n=Pl; p=P1} => p1PlAlethicCopulaSuffix ;
|
|
||||||
{n=Pl; p=P2} => p2PlAlethicCopulaSuffix ;
|
|
||||||
{n=Pl; p=P3} => p3PlAlethicCopulaSuffix
|
|
||||||
} ;
|
|
||||||
|
|
||||||
condCopulaSuffixes : Agr => Suffix =
|
|
||||||
table {
|
|
||||||
{n=Sg; p=P1} => p1SgCondCopulaSuffix ;
|
|
||||||
{n=Sg; p=P2} => p2SgCondCopulaSuffix ;
|
|
||||||
{n=Sg; p=P3} => p3SgCondCopulaSuffix ;
|
|
||||||
{n=Pl; p=P1} => p1PlCondCopulaSuffix ;
|
|
||||||
{n=Pl; p=P2} => p2PlCondCopulaSuffix ;
|
|
||||||
{n=Pl; p=P3} => p3PlCondCopulaSuffix
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- Adds a suffix to the base given as Str using Harmony.
|
-- Adds a suffix to the base given as Str using Harmony.
|
||||||
-- If only one form of base is given then it is assumed that base does not soften
|
-- If only one form of base is given then it is assumed that base does not soften
|
||||||
@@ -188,7 +140,7 @@ resource SuffixTur = open Prelude, Predef, ResTur, HarmonyTur in {
|
|||||||
\baseTable,har,suf -> (baseTable ! suf.stemT) + suf.st ! har.con ! har.vow ;
|
\baseTable,har,suf -> (baseTable ! suf.stemT) + suf.st ! har.con ! har.vow ;
|
||||||
|
|
||||||
suffixStr : Harmony -> Suffix -> Str =
|
suffixStr : Harmony -> Suffix -> Str =
|
||||||
\har,suf -> BIND ++ suf.st ! har.con ! har.vow ;
|
\har,suf -> suf.st ! har.con ! har.vow ;
|
||||||
|
|
||||||
regSuffix larC larV =
|
regSuffix larC larV =
|
||||||
{
|
{
|
||||||
@@ -257,7 +209,7 @@ resource SuffixTur = open Prelude, Predef, ResTur, HarmonyTur in {
|
|||||||
lirCH = hardenWord wordC ;
|
lirCH = hardenWord wordC ;
|
||||||
lirC = case wordC.p4 of {
|
lirC = case wordC.p4 of {
|
||||||
"WXQ" => <wordC.p1, wordC.p1, wordC.p1, wordC.p1, lirCH, lirCH, lirCH, lirCH> ;
|
"WXQ" => <wordC.p1, wordC.p1, wordC.p1, wordC.p1, lirCH, lirCH, lirCH, lirCH> ;
|
||||||
"i" => <wordC.p1 + "ı" + wordC.p2 + "ı" + wordC.p3,
|
"ii" => <wordC.p1 + "ı" + wordC.p2 + "ı" + wordC.p3,
|
||||||
wordC.p1 + "i" + wordC.p2 + "i" + wordC.p3,
|
wordC.p1 + "i" + wordC.p2 + "i" + wordC.p3,
|
||||||
wordC.p1 + "u" + wordC.p2 + "u" + wordC.p3,
|
wordC.p1 + "u" + wordC.p2 + "u" + wordC.p3,
|
||||||
wordC.p1 + "ü" + wordC.p2 + "ü" + wordC.p3,
|
wordC.p1 + "ü" + wordC.p2 + "ü" + wordC.p3,
|
||||||
@@ -265,7 +217,23 @@ resource SuffixTur = open Prelude, Predef, ResTur, HarmonyTur in {
|
|||||||
lirCH + "i" + wordC.p2 + "i" + wordC.p3,
|
lirCH + "i" + wordC.p2 + "i" + wordC.p3,
|
||||||
lirCH + "u" + wordC.p2 + "u" + wordC.p3,
|
lirCH + "u" + wordC.p2 + "u" + wordC.p3,
|
||||||
lirCH + "ü" + wordC.p2 + "ü" + wordC.p3> ;
|
lirCH + "ü" + wordC.p2 + "ü" + wordC.p3> ;
|
||||||
_ => <wordC.p1 + "a" + wordC.p2 + "a" + wordC.p3,
|
"ie" => <wordC.p1 + "ı" + wordC.p2 + "a" + wordC.p3,
|
||||||
|
wordC.p1 + "i" + wordC.p2 + "e" + wordC.p3,
|
||||||
|
wordC.p1 + "u" + wordC.p2 + "a" + wordC.p3,
|
||||||
|
wordC.p1 + "ü" + wordC.p2 + "e" + wordC.p3,
|
||||||
|
lirCH + "ı" + wordC.p2 + "a" + wordC.p3,
|
||||||
|
lirCH + "i" + wordC.p2 + "e" + wordC.p3,
|
||||||
|
lirCH + "u" + wordC.p2 + "a" + wordC.p3,
|
||||||
|
lirCH + "ü" + wordC.p2 + "e" + wordC.p3> ;
|
||||||
|
"ei" => <wordC.p1 + "a" + wordC.p2 + "ı" + wordC.p3,
|
||||||
|
wordC.p1 + "e" + wordC.p2 + "i" + wordC.p3,
|
||||||
|
wordC.p1 + "a" + wordC.p2 + "ı" + wordC.p3,
|
||||||
|
wordC.p1 + "e" + wordC.p2 + "i" + wordC.p3,
|
||||||
|
lirCH + "a" + wordC.p2 + "ı" + wordC.p3,
|
||||||
|
lirCH + "e" + wordC.p2 + "i" + wordC.p3,
|
||||||
|
lirCH + "a" + wordC.p2 + "ı" + wordC.p3,
|
||||||
|
lirCH + "e" + wordC.p2 + "i" + wordC.p3> ;
|
||||||
|
"ee" => <wordC.p1 + "a" + wordC.p2 + "a" + wordC.p3,
|
||||||
wordC.p1 + "e" + wordC.p2 + "e" + wordC.p3,
|
wordC.p1 + "e" + wordC.p2 + "e" + wordC.p3,
|
||||||
wordC.p1 + "a" + wordC.p2 + "a" + wordC.p3,
|
wordC.p1 + "a" + wordC.p2 + "a" + wordC.p3,
|
||||||
wordC.p1 + "e" + wordC.p2 + "e" + wordC.p3,
|
wordC.p1 + "e" + wordC.p2 + "e" + wordC.p3,
|
||||||
@@ -277,11 +245,19 @@ resource SuffixTur = open Prelude, Predef, ResTur, HarmonyTur in {
|
|||||||
wordV = twoSylParser baseV ;
|
wordV = twoSylParser baseV ;
|
||||||
lirV = case wordV.p4 of {
|
lirV = case wordV.p4 of {
|
||||||
"WXQ" => <wordV.p1, wordV.p1, wordV.p1, wordV.p1> ;
|
"WXQ" => <wordV.p1, wordV.p1, wordV.p1, wordV.p1> ;
|
||||||
"i" => <wordV.p1 + "ı" + wordV.p2 + "ı" + wordV.p3,
|
"ii" => <wordV.p1 + "ı" + wordV.p2 + "ı" + wordV.p3,
|
||||||
wordV.p1 + "i" + wordV.p2 + "i" + wordV.p3,
|
wordV.p1 + "i" + wordV.p2 + "i" + wordV.p3,
|
||||||
wordV.p1 + "u" + wordV.p2 + "u" + wordV.p3,
|
wordV.p1 + "u" + wordV.p2 + "u" + wordV.p3,
|
||||||
wordV.p1 + "ü" + wordV.p2 + "ü" + wordV.p3> ;
|
wordV.p1 + "ü" + wordV.p2 + "ü" + wordV.p3> ;
|
||||||
_ => <wordV.p1 + "a" + wordV.p2 + "a" + wordV.p3,
|
"ie" => <wordV.p1 + "ı" + wordV.p2 + "a" + wordV.p3,
|
||||||
|
wordV.p1 + "i" + wordV.p2 + "e" + wordV.p3,
|
||||||
|
wordV.p1 + "u" + wordV.p2 + "a" + wordV.p3,
|
||||||
|
wordV.p1 + "ü" + wordV.p2 + "e" + wordV.p3> ;
|
||||||
|
"ei" => <wordV.p1 + "a" + wordV.p2 + "ı" + wordV.p3,
|
||||||
|
wordV.p1 + "e" + wordV.p2 + "i" + wordV.p3,
|
||||||
|
wordV.p1 + "a" + wordV.p2 + "u" + wordV.p3,
|
||||||
|
wordV.p1 + "e" + wordV.p2 + "ü" + wordV.p3> ;
|
||||||
|
"ee" => <wordV.p1 + "a" + wordV.p2 + "a" + wordV.p3,
|
||||||
wordV.p1 + "e" + wordV.p2 + "e" + wordV.p3,
|
wordV.p1 + "e" + wordV.p2 + "e" + wordV.p3,
|
||||||
wordV.p1 + "a" + wordV.p2 + "a" + wordV.p3,
|
wordV.p1 + "a" + wordV.p2 + "a" + wordV.p3,
|
||||||
wordV.p1 + "e" + wordV.p2 + "e" + wordV.p3>
|
wordV.p1 + "e" + wordV.p2 + "e" + wordV.p3>
|
||||||
@@ -306,7 +282,7 @@ resource SuffixTur = open Prelude, Predef, ResTur, HarmonyTur in {
|
|||||||
c@("i"|"e") +
|
c@("i"|"e") +
|
||||||
y@(#consonant*) +
|
y@(#consonant*) +
|
||||||
d@("i"|"e") +
|
d@("i"|"e") +
|
||||||
z@(#consonant*)=> <x, y, z, c> ;
|
z@(#consonant*)=> <x, y, z, c+d> ;
|
||||||
_ => <base, "WXQ", "WXQ", "WXQ">
|
_ => <base, "WXQ", "WXQ", "WXQ">
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
concrete VerbTur of Verb = CatTur ** open Prelude, ResTur, SuffixTur, HarmonyTur in {
|
concrete VerbTur of Verb = CatTur ** open Prelude, ResTur, SuffixTur, HarmonyTur in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
UseV v = lin VP (v ** {compl = []}) ;
|
UseV v = {s = mkVerbForms v; compl = []} ;
|
||||||
SlashV2a v = v ** {compl = []} ;
|
SlashV2a v = {s = mkVerbForms v; compl = []; c = v.c} ;
|
||||||
|
|
||||||
Slash2V3 v = variants {} ;
|
Slash2V3 v = variants {} ;
|
||||||
Slash3V3 v = variants {} ;
|
Slash3V3 v = variants {} ;
|
||||||
@@ -18,9 +18,9 @@ concrete VerbTur of Verb = CatTur ** open Prelude, ResTur, SuffixTur, HarmonyTur
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- TODO: test this and fix.
|
-- TODO: test this and fix.
|
||||||
ComplVS vs s = vs ** {
|
ComplVS vs s = variants {} ; {- vs ** {
|
||||||
compl = s.subord
|
compl = s.subord
|
||||||
} ;
|
} ; -}
|
||||||
|
|
||||||
ComplVA _ _ = variants {} ;
|
ComplVA _ _ = variants {} ;
|
||||||
ComplVV _ _ = variants {} ;
|
ComplVV _ _ = variants {} ;
|
||||||
@@ -29,37 +29,62 @@ concrete VerbTur of Verb = CatTur ** open Prelude, ResTur, SuffixTur, HarmonyTur
|
|||||||
UseComp comp = comp ** {compl = []} ;
|
UseComp comp = comp ** {compl = []} ;
|
||||||
CompCN _ = variants {} ;
|
CompCN _ = variants {} ;
|
||||||
|
|
||||||
CompNP ap = lin VP {
|
CompNP np = {
|
||||||
s = table {
|
s = table {
|
||||||
VPres agr => ap.s ! Nom ++
|
VFin Pres p agr => np.s ! Nom ++
|
||||||
case agr of {
|
case <agr,p> of {
|
||||||
{n=Sg; p=P3} => [] ;
|
<{n=Sg; p=P3},Pos> => [] ;
|
||||||
_ => suffixStr ap.h (verbSuffixes ! agr)
|
<{n=Sg; p=P3},Neg> => BIND ++ suffixStr np.h negativeSuffix ;
|
||||||
} ;
|
<_, Pos> => BIND ++ suffixStr np.h (verbSuffixes ! agr) ;
|
||||||
VProg agr => ap.s ! Nom ;
|
<_, Neg> => BIND ++ suffixStr np.h negativeSuffix +
|
||||||
VPast agr => ap.s ! Nom ++
|
(let negHar = mkHar (case np.h.vow of {
|
||||||
suffixStr ap.h (alethicCopulaSuffixes ! agr);
|
I_Har | U_Har => I_Har ;
|
||||||
VFuture agr => ap.s ! Nom ++
|
Ih_Har | Uh_Har => Ih_Har
|
||||||
addSuffix "olacağ" (mkHar I_Har (SCon Hard)) (verbSuffixes ! agr) ;
|
}) SVow
|
||||||
VInfinitive => ap.s ! Nom ++ "olmak" ;
|
in suffixStr negHar (verbSuffixes ! agr))
|
||||||
_ => "TODO"
|
} ;
|
||||||
}
|
VFin Past p agr => np.s ! Nom ++ BIND ++
|
||||||
|
case p of {
|
||||||
|
Pos => [] ;
|
||||||
|
Neg => suffixStr np.h negativeSuffix
|
||||||
|
} +
|
||||||
|
suffixStr np.h (alethicCopulaSuffixes ! agr) ;
|
||||||
|
vform => np.s ! Nom ++
|
||||||
|
mkVerbForms olmak_V ! vform
|
||||||
|
} ;
|
||||||
|
compl = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
CompAP ap = lin VP {
|
CompAP ap = {
|
||||||
s = table {
|
s = table {
|
||||||
VPres agr => case agr.p of {
|
VInf p => ap.s ! Sg ! Nom ++
|
||||||
P3 => ap.s ! Sg ! Nom ;
|
mkVerbForms olmak_V ! (VInf p) ;
|
||||||
_ => ap.s ! agr.n ! Nom ++ suffixStr ap.h (verbSuffixes ! agr)
|
VImp p n => ap.s ! n ! Nom ++
|
||||||
} ;
|
mkVerbForms olmak_V ! (VImp p n) ;
|
||||||
VProg agr => ap.s ! agr.n ! Nom ;
|
VFin Pres p agr => ap.s ! agr.n ! Nom ++
|
||||||
VPast agr => ap.s ! agr.n ! Nom ++
|
case <agr,p> of {
|
||||||
suffixStr ap.h (alethicCopulaSuffixes ! agr);
|
<{n=Sg; p=P3},Pos> => [] ;
|
||||||
VFuture agr => ap.s ! agr.n ! Nom ++
|
<{n=Sg; p=P3},Neg> => BIND ++ suffixStr ap.h negativeSuffix ;
|
||||||
addSuffix "olacağ" (mkHar I_Har (SCon Hard)) (verbSuffixes ! agr) ;
|
<_, Pos> => BIND ++ suffixStr ap.h (verbSuffixes ! agr) ;
|
||||||
VInfinitive => ap.s ! Sg ! Nom ++ "olmak" ;
|
<_, Neg> => BIND ++ suffixStr ap.h negativeSuffix +
|
||||||
_ => "TODO"
|
(let negHar = {vow = case ap.h.vow of {
|
||||||
}
|
I_Har | U_Har => I_Har ;
|
||||||
|
Ih_Har | Uh_Har => Ih_Har
|
||||||
|
} ;
|
||||||
|
con = SVow
|
||||||
|
}
|
||||||
|
in suffixStr negHar (verbSuffixes ! agr))
|
||||||
|
} ;
|
||||||
|
VFin Past p agr => ap.s ! agr.n ! Nom ++ BIND ++
|
||||||
|
case p of {
|
||||||
|
Pos => [] ;
|
||||||
|
Neg => suffixStr ap.h negativeSuffix
|
||||||
|
} +
|
||||||
|
suffixStr ap.h (alethicCopulaSuffixes ! agr) ;
|
||||||
|
VFin t p agr => ap.s ! agr.n ! Nom ++
|
||||||
|
mkVerbForms olmak_V ! (VFin t p agr)
|
||||||
|
} ;
|
||||||
|
compl = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
CompAdv _ = variants {} ;
|
CompAdv _ = variants {} ;
|
||||||
@@ -75,4 +100,13 @@ concrete VerbTur of Verb = CatTur ** open Prelude, ResTur, SuffixTur, HarmonyTur
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
PassV2 = variants {} ;
|
PassV2 = variants {} ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
olmak_V : V = lin V {
|
||||||
|
s = "olmak" ;
|
||||||
|
stems = \\_ => "ol" ;
|
||||||
|
aoristType = SgSylConIrreg ;
|
||||||
|
h = mkHar U_Har (SCon Soft)
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user