mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 19:42:50 -06:00
smarter smart paradigms for Slovenian
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
resource ParadigmsSlv = open CatSlv, ResSlv, Prelude in {
|
resource ParadigmsSlv = open CatSlv, ResSlv, Prelude, Predef in {
|
||||||
|
|
||||||
oper
|
oper
|
||||||
nominative : Case = Nom ;
|
nominative : Case = Nom ;
|
||||||
@@ -37,45 +37,69 @@ oper
|
|||||||
|
|
||||||
mascAll : (_,_ : Str) -> Animacy -> N = \oce,ocet,anim ->
|
mascAll : (_,_ : Str) -> Animacy -> N = \oce,ocet,anim ->
|
||||||
let accsg = case anim of {Animate => ocet + "a"; _ => oce}; --Special case: Masc Sg Acc Animate
|
let accsg = case anim of {Animate => ocet + "a"; _ => oce}; --Special case: Masc Sg Acc Animate
|
||||||
|
oceto : Str
|
||||||
|
= case ocet of {
|
||||||
|
_ + ("c"|"j"|"ž"|"š"|"č") => ocet+"e" ;
|
||||||
|
_ => ocet+"o"
|
||||||
|
} ;
|
||||||
in
|
in
|
||||||
worstN oce (ocet + "a") (ocet + "u") accsg (ocet + "u") (ocet + "om") -- Singular
|
worstN oce (ocet + "a") (ocet + "u") accsg (ocet + "u") (oceto + "m") -- Singular
|
||||||
(ocet + "a") (ocet + "ov") (ocet + "oma") (ocet + "a") (ocet + "ih") (ocet + "oma") -- Dual
|
(ocet + "a") (oceto + "v") (oceto + "ma") (ocet + "a") (ocet + "ih") (oceto + "ma") -- Dual
|
||||||
(ocet + "i") (ocet + "ov") (ocet + "om") (ocet + "e") (ocet + "ih") (ocet + "i") -- Plural
|
(ocet + "i") (oceto + "v") (oceto + "m") (ocet + "e") (ocet + "ih") (ocet + "i") -- Plural
|
||||||
(AMasc anim) ;
|
(AMasc anim) ;
|
||||||
|
|
||||||
--All neuter forms are formed here, long or normal.
|
--All neuter forms are formed here, long or normal.
|
||||||
--It takes the baseform + the genitive singular form.
|
--It takes the baseform + the genitive singular form.
|
||||||
--In case the genitive singular has an extra vowel in the end, it is dropped before coming here.
|
--In case the genitive singular has an extra vowel in the end, it is dropped before coming here.
|
||||||
|
|
||||||
neutAll : (_,_ : Str) -> N = \drevo,dreves ->
|
neutAll : (_,_,_ : Str) -> N = \drevo,dreves,dreves2 ->
|
||||||
worstN drevo (dreves + "a") (dreves + "u") drevo (dreves + "u") (dreves + "om") -- Singular
|
let dreveso = dreves + last drevo ;
|
||||||
(dreves + "i") dreves (dreves + "oma") (dreves + "i") (dreves + "ih") (dreves + "oma") -- Dual
|
in worstN drevo (dreves + "a") (dreves + "u") drevo (dreves + "u") (dreveso + "m") -- Singular
|
||||||
(dreves + "a") dreves (dreves + "om") (dreves + "a") (dreves + "ih") (dreves + "i") -- Plural
|
(dreves + "i") dreves2 (dreveso + "ma") (dreves + "i") (dreves + "ih") (dreveso + "ma") -- Dual
|
||||||
neuter ;
|
(dreves + "a") dreves2 (dreveso + "m") (dreves + "a") (dreves + "ih") (dreves + "i") -- Plural
|
||||||
|
neuter ;
|
||||||
|
|
||||||
--Regular feminine nouns are formed from the baseform. Always inanimate.
|
--Regular feminine nouns are formed from the baseform. Always inanimate.
|
||||||
|
|
||||||
regFem : (_ : Str) -> N = \punca ->
|
regFem_a : (_ : Str) -> N = \punca ->
|
||||||
let punc = init punca
|
let punc = init punca
|
||||||
|
in irregFem punca (punc+"e") punc ;
|
||||||
|
|
||||||
|
regFem_st : (_ : Str) -> N = \posevnost ->
|
||||||
|
worstN posevnost (posevnost + "i") (posevnost + "i") posevnost (posevnost + "i") (posevnost + "jo") -- Singular
|
||||||
|
(posevnost + "i") (posevnost + "i") (posevnost + "ma") (posevnost + "i") (posevnost + "ih") (posevnost + "ma") -- Dual
|
||||||
|
(posevnost + "i") (posevnost + "i") (posevnost + "im") (posevnost + "i") (posevnost + "ih") (posevnost + "mi") -- Plural
|
||||||
|
feminine ;
|
||||||
|
|
||||||
|
regFem_ev : (_ : Str) -> N = \vsaditev ->
|
||||||
|
let vsaditv = tk 2 vsaditev + "v"
|
||||||
in
|
in
|
||||||
worstN punca (punc + "e") (punc + "i") (punc + "o") (punc + "i") (punc + "o") -- Singular
|
worstN vsaditev (vsaditv + "e") (vsaditv + "i") vsaditev (vsaditv + "i") (vsaditv + "ijo") -- Singular
|
||||||
(punc + "i") punc (punc + "ama") (punc + "i") (punc + "am") (punc + "ama") -- Dual
|
(vsaditv + "i") vsaditev (vsaditv + "ama") (vsaditv + "i") (vsaditv + "ah") (vsaditv + "ama") -- Dual
|
||||||
(punc + "e") punc (punc + "am") (punc + "e") (punc + "am") (punc + "ami") -- Plural
|
(vsaditv + "e") vsaditev (vsaditv + "am") (vsaditv + "e") (vsaditv + "ah") (vsaditv + "ami") -- Plural
|
||||||
feminine ;
|
feminine ;
|
||||||
|
|
||||||
iFem : (_ : Str) -> N = \stran ->
|
iFem : (_ : Str) -> N = \stran ->
|
||||||
worstN stran (stran + "i") (stran + "i") stran (stran + "i") (stran + "jo") -- Singular
|
let stran' = looseVowel stran ;
|
||||||
(stran + "i") (stran + "i") (stran + "ema") (stran + "i") (stran + "eh") (stran + "ema") -- Dual
|
stran'' : Str
|
||||||
(stran + "i") (stran + "i") (stran + "em") (stran + "i") (stran + "eh") (stran + "mi") -- Plural
|
= case stran' of {
|
||||||
|
_ + "n" => stran'+"i" ;
|
||||||
|
_ => stran'
|
||||||
|
}
|
||||||
|
in
|
||||||
|
worstN stran (stran' + "i") (stran' + "i") stran (stran' + "i") (stran'' + "jo") -- Singular
|
||||||
|
(stran' + "i") (stran' + "i") (stran' + "ema") (stran' + "i") (stran' + "eh") (stran' + "ema") -- Dual
|
||||||
|
(stran' + "i") (stran' + "i") (stran' + "em") (stran' + "i") (stran' + "eh") (stran' + "mi") -- Plural
|
||||||
feminine ;
|
feminine ;
|
||||||
|
|
||||||
--This is a smart paradigm for regular nouns.
|
--This is a smart paradigm for regular nouns.
|
||||||
|
|
||||||
smartN : (noun: Str) -> N =
|
smartN : (noun: Str) -> N =
|
||||||
\noun -> case noun of {
|
\noun -> case noun of {
|
||||||
_ + "a" => regFem noun ;
|
_ + "a" => regFem_a noun ;
|
||||||
_ + ("ev" | "ost") => regFem noun ;
|
_ + ("o"| "e") + "st" => regFem_st noun ;
|
||||||
_ + ("o"| "e") => let nou = init noun in neutAll noun nou ;
|
_ + "ev" => regFem_ev noun ;
|
||||||
|
_ + ("o"| "e") => let nou = init noun in neutAll noun nou nou ;
|
||||||
_ + #consonant => mascAll noun noun Inanimate; --Base form used in the rest of the paradigm.
|
_ + #consonant => mascAll noun noun Inanimate; --Base form used in the rest of the paradigm.
|
||||||
_ => let nou = init noun in mascAll noun nou Inanimate -- Drops the last vowel for the rest of the paradigm.
|
_ => let nou = init noun in mascAll noun nou Inanimate -- Drops the last vowel for the rest of the paradigm.
|
||||||
} ;
|
} ;
|
||||||
@@ -85,8 +109,8 @@ oper
|
|||||||
irregNouns : (noun,longform : Str) -> AGender -> N = \noun,longform,gen ->
|
irregNouns : (noun,longform : Str) -> AGender -> N = \noun,longform,gen ->
|
||||||
case gen of {
|
case gen of {
|
||||||
AMasc anim => let longfor = init longform in mascAll noun longfor anim ;
|
AMasc anim => let longfor = init longform in mascAll noun longfor anim ;
|
||||||
ANeut => let longfor = init longform in neutAll noun longfor ;
|
ANeut => let longfor = init longform in neutAll noun longfor longfor ;
|
||||||
AFem => regFem noun --There are actually no feminine nouns with long stem.
|
AFem => regFem_a noun --There are actually no feminine nouns with long stem.
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--Regular masculine nouns that do not end with a consonant, drops the vowel in all conjugated forms.
|
--Regular masculine nouns that do not end with a consonant, drops the vowel in all conjugated forms.
|
||||||
@@ -99,8 +123,13 @@ oper
|
|||||||
_ + #vowel => let nou = init noun in mascAll noun nou anim ;
|
_ + #vowel => let nou = init noun in mascAll noun nou anim ;
|
||||||
_ => mascAll noun noun anim -- KA: catch all
|
_ => mascAll noun noun anim -- KA: catch all
|
||||||
};
|
};
|
||||||
ANeut => let nou = init noun in neutAll noun nou ;
|
ANeut => let nou = init noun in neutAll noun nou nou ;
|
||||||
AFem => regFem noun --There are actually no feminine nouns with long stem.
|
AFem => case noun of {
|
||||||
|
_ + "a" => regFem_a noun ;
|
||||||
|
_ + ("o"| "e") + "st" => regFem_st noun ;
|
||||||
|
_ + "ev" => regFem_ev noun ;
|
||||||
|
_ => regFem_a noun
|
||||||
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--Irregular masculine nouns with long stem has no special ending in genitive dual and plural, so need a special paradigm.
|
--Irregular masculine nouns with long stem has no special ending in genitive dual and plural, so need a special paradigm.
|
||||||
@@ -113,6 +142,17 @@ oper
|
|||||||
bogovi bogov (bogov + "om") (bogov + "e") (bogov + "ih") (bogov + "i") -- Plural
|
bogovi bogov (bogov + "om") (bogov + "e") (bogov + "ih") (bogov + "i") -- Plural
|
||||||
masculine ;
|
masculine ;
|
||||||
|
|
||||||
|
irregFem : (noun,gensg,genpl : Str) -> N = \noun,gensg,genpl ->
|
||||||
|
let nou = init gensg
|
||||||
|
in
|
||||||
|
worstN noun gensg (nou + "i") (nou + "o") (nou + "i") (nou + "o") -- Singular
|
||||||
|
(nou + "i") genpl (nou + "ama") (nou + "i") (nou + "ah") (nou + "ama") -- Dual
|
||||||
|
(nou + "e") genpl (nou + "am") (nou + "e") (nou + "ah") (nou + "ami") -- Plural
|
||||||
|
feminine ;
|
||||||
|
|
||||||
|
irregNeut : (noun,gensg,plstem : Str) -> N = \cislo,cisla,cisel ->
|
||||||
|
neutAll cislo (init cisla) cisel ;
|
||||||
|
|
||||||
worstN : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> AGender -> N =
|
worstN : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> AGender -> N =
|
||||||
\nomsg,gensg,datsg,accsg,locsg,instrsg,nomdl,gendl,datdl,accdl,locdl,instrdl,nompl,genpl,datpl,accpl,locpl,instrpl,g -> lin N {
|
\nomsg,gensg,datsg,accsg,locsg,instrsg,nomdl,gendl,datdl,accdl,locdl,instrdl,nompl,genpl,datpl,accpl,locpl,instrpl,g -> lin N {
|
||||||
s = table {
|
s = table {
|
||||||
@@ -137,6 +177,12 @@ oper
|
|||||||
g = noun.g ;
|
g = noun.g ;
|
||||||
n = nr
|
n = nr
|
||||||
};
|
};
|
||||||
|
mkPN : Str -> AGender -> Number -> PN =
|
||||||
|
\s,g,n -> lin PN {
|
||||||
|
s = \\_ => s ;
|
||||||
|
g = g ;
|
||||||
|
n = n
|
||||||
|
};
|
||||||
mkPN : (_,_,_,_,_,_ : Str) -> AGender -> Number -> PN =
|
mkPN : (_,_,_,_,_,_ : Str) -> AGender -> Number -> PN =
|
||||||
\nom,gen,dat,acc,loc,instr,g,n -> lin PN {
|
\nom,gen,dat,acc,loc,instr,g,n -> lin PN {
|
||||||
s = table {
|
s = table {
|
||||||
@@ -285,62 +331,101 @@ oper
|
|||||||
-- Adjectives
|
-- Adjectives
|
||||||
|
|
||||||
mkA = overload {
|
mkA = overload {
|
||||||
mkA : (_:Str) -> A = \s -> regA s ("bolj"++s) ;
|
mkA : (_:Str) -> A = \s -> irregA s (looseVowel s+"a") (looseVowel s+"o") ("bolj"++s) ("bolj"++looseVowel s+"a") ("bolj"++looseVowel s+"o") ;
|
||||||
mkA : (_,_:Str) -> A = regA ;
|
mkA : (_,_:Str) -> A = \star,starejsi -> irregA star (looseVowel star+"a") (looseVowel star+"o") starejsi (looseVowel starejsi+"a") (looseVowel starejsi+"e") ;
|
||||||
|
mkA : (_,_,_:Str) -> A = \m,f,n -> irregA m f n ("bolj"++m) ("bolj"++f) ("bolj"++n);
|
||||||
|
mkA : (_,_,_,_,_,_:Str) -> A = irregA ;
|
||||||
|
mkA : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,x57 : Str) -> A = positA ;
|
||||||
mkA : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,x166 : Str) -> A = worstA ;
|
mkA : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,x166 : Str) -> A = worstA ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
regA : (_,_ :Str) -> A = \star,starejsi -> lin A {
|
irregA : (_,_,_,_,_,_ :Str) -> A = \masc,fem,neut,mascC,femC,neutC -> lin A {
|
||||||
s = let starejs = init starejsi
|
s = table {
|
||||||
in table {
|
APosit gen num c => mkAdjForm masc fem neut ! c ! gen ! num ;
|
||||||
APosit gen num c => mkAdjForm star ! c ! gen ! num ;
|
ACompar gen num c => mkAdjForm mascC femC neutC ! c ! gen ! num ;
|
||||||
ACompar gen num c => mkAdjForm starejs ! c ! gen ! num ;
|
ASuperl gen num c => mkAdjForm ("naj" + mascC) ("naj" + femC) ("naj" + neutC) ! c ! gen ! num ;
|
||||||
ASuperl gen num c => mkAdjForm ("naj" + starejs) ! c ! gen ! num ;
|
APositDefNom => mkAdjForm masc fem neut ! Nom ! Masc ! Pl ;
|
||||||
APositDefNom => mkAdjForm star ! Nom ! Masc ! Pl ;
|
APositIndefAcc => mkAdjForm masc fem neut ! Nom ! Masc ! Sg ;
|
||||||
APositIndefAcc => mkAdjForm star ! Nom ! Masc ! Sg ;
|
APositDefAcc => mkAdjForm masc fem neut ! Nom ! Masc ! Pl ;
|
||||||
APositDefAcc => mkAdjForm star ! Nom ! Masc ! Pl ;
|
AComparDefAcc => mkAdjForm mascC femC neutC ! Nom ! Masc ! Pl ;
|
||||||
AComparDefNom => mkAdjForm starejs ! Nom ! Masc ! Pl ;
|
ASuperlDefAcc => mkAdjForm ("naj" + mascC) ("naj" + femC) ("naj" + neutC) ! Nom ! Masc ! Pl
|
||||||
ASuperlDefNom => mkAdjForm ("naj" + starejs) ! Nom ! Masc ! Pl
|
}
|
||||||
}
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkAdjForm : Str -> Case => Gender => Number => Str = \lep ->
|
mkAdjForm : (_,_,_ : Str) -> Case => Gender => Number => Str = \lep,lpa,lpo ->
|
||||||
let
|
let lp = init lpa
|
||||||
lp = looseVowel lep --checks for loosewovel in the stem. if there is none, the string comes back the same.
|
|
||||||
in
|
in
|
||||||
table {
|
table {
|
||||||
Nom => table {
|
Nom => table {
|
||||||
Fem => table {Sg=> (lp + "a"); Dl=>(lp + "i"); Pl=>(lp +"e")};
|
Masc => table {Sg=> lep; Dl=>(lp + "a"); Pl=>(lp +"i")};
|
||||||
Masc => table {Sg=> lep; Dl=>(lp + "a"); Pl=>(lp +"i")};
|
Fem => table {Sg=> lpa; Dl=>(lp + "i"); Pl=>(lp +"e")};
|
||||||
Neut => table {Sg=>(lp + "o"); Dl=>(lp + "i"); Pl=>(lp + "a")}
|
Neut => table {Sg=> lpo; Dl=>(lp + "i"); Pl=>(lp + "a")}
|
||||||
};
|
};
|
||||||
Acc => table {
|
Acc => table {
|
||||||
Fem => table {Sg=>(lp + "o"); Dl=>(lp + "i"); Pl=>(lp + "e")};
|
Masc => table {Sg=>lp+"ega"; Dl=>(lp + "a"); Pl=>(lp + "e")};
|
||||||
Masc => table {Sg=>lep; Dl=>(lp + "a"); Pl=>(lp + "e")};
|
Fem => table {Sg=>(lp + "o"); Dl=>(lp + "i"); Pl=>(lp + "e")};
|
||||||
Neut => table {Sg=>(lp + "o"); Dl=>(lp + "i"); Pl=>(lp +"a")}
|
Neut => table {Sg=>lpo; Dl=>(lp + "i"); Pl=>(lp +"a")}
|
||||||
};
|
};
|
||||||
Gen => table {
|
Gen => table {
|
||||||
Fem => table {Sg=>(lp + "e"); Dl=>(lp +"ih"); Pl=>(lp +"ih")};
|
|
||||||
Masc => table {Sg=>(lp + "ega"); Dl=>(lp +"ih"); Pl=>(lp +"ih")};
|
Masc => table {Sg=>(lp + "ega"); Dl=>(lp +"ih"); Pl=>(lp +"ih")};
|
||||||
Neut => table {Sg=>(lp + "ega"); Dl=>(lp +"ih"); Pl=>(lp +"ih")}
|
Fem => table {Sg=>(lp + "e"); Dl=>(lp +"ih"); Pl=>(lp +"ih")};
|
||||||
|
Neut => table {Sg=>(lp + "ega"); Dl=>(lp +"ih"); Pl=>(lp +"ih")}
|
||||||
};
|
};
|
||||||
Loc => table {
|
Loc => table {
|
||||||
Fem => table {Sg=>(lp + "i"); Dl=>(lp +"ih"); Pl=>(lp +"ih")};
|
Masc => table {Sg=>(lp + "em"); Dl=>(lp +"ih"); Pl=>(lp +"ih")};
|
||||||
Masc => table {Sg=>(lp + "em"); Dl=>(lp +"ih"); Pl=>(lp +"ih")};
|
Fem => table {Sg=>(lp + "i"); Dl=>(lp +"ih"); Pl=>(lp +"ih")};
|
||||||
Neut => table {Sg=>(lp + "em"); Dl=>(lp +"ih"); Pl=>(lp +"ih")}
|
Neut => table {Sg=>(lp + "em"); Dl=>(lp +"ih"); Pl=>(lp +"ih")}
|
||||||
};
|
};
|
||||||
Dat => table {
|
Dat => table {
|
||||||
Fem => table {Sg=>(lp + "i"); Dl=>(lp +"ima"); Pl=>(lp +"im")};
|
Masc => table {Sg=>(lp + "emu"); Dl=>(lp +"ima"); Pl=>(lp +"im")};
|
||||||
Masc => table {Sg=>(lp + "emu"); Dl=>(lp +"ima"); Pl=>(lp +"im")};
|
Fem => table {Sg=>(lp + "i"); Dl=>(lp +"ima"); Pl=>(lp +"im")};
|
||||||
Neut => table {Sg=>(lp + "emu"); Dl=>(lp +"ima"); Pl=>(lp +"im")}
|
Neut => table {Sg=>(lp + "emu"); Dl=>(lp +"ima"); Pl=>(lp +"im")}
|
||||||
};
|
};
|
||||||
Instr => table {
|
Instr => table {
|
||||||
Fem => table {Sg=>(lp + "o"); Dl=>(lp +"ima"); Pl=>(lp +"imi")};
|
Masc => table {Sg=>(lp + "im"); Dl=>(lp +"ima"); Pl=>(lp +"imi")};
|
||||||
Masc => table {Sg=>(lp + "im"); Dl=>(lp +"ima"); Pl=>(lp +"imi")};
|
Fem => table {Sg=>(lp + "o"); Dl=>(lp +"ima"); Pl=>(lp +"imi")};
|
||||||
Neut => table {Sg=>(lp + "im"); Dl=>(lp +"ima"); Pl=>(lp +"imi")}
|
Neut => table {Sg=>(lp + "im"); Dl=>(lp +"ima"); Pl=>(lp +"imi")}
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
positA : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> A =
|
||||||
|
\positMSgNom,positMSgNomDef,positMSgGen,positMSgDat,positMSgAcc,positMSgAccIndef,positMSgAccDef,positMSgLoc,positMSgInstr,
|
||||||
|
positMDlNom,positMDlGen,positMDlDat,positMDlAcc,positMDlLoc,positMDlInstr,
|
||||||
|
positMPlNom,positMPlGen,positMPlDat,positMPlAcc,positMPlLoc,positMPlInstr,
|
||||||
|
positFSgNom,positFSgGen,positFSgDat,positFSgAcc,positFSgLoc,positFSgInstr,
|
||||||
|
positFDlNom,positFDlGen,positFDlDat,positFDlAcc,positFDlLoc,positFDlInstr,
|
||||||
|
positFPlNom,positFPlGen,positFPlDat,positFPlAcc,positFPlLoc,positFPlInstr,
|
||||||
|
positNSgNom,positNSgGen,positNSgDat,positNSgAcc,positNSgLoc,positNSgInstr,
|
||||||
|
positNDlNom,positNDlGen,positNDlDat,positNDlAcc,positNDlLoc,positNDlInstr,
|
||||||
|
positNPlNom,positNPlGen,positNPlDat,positNPlAcc,positNPlLoc,positNPlInstr ->
|
||||||
|
worstA positMSgNom positMSgNomDef positMSgGen positMSgDat positMSgAcc positMSgAccIndef positMSgAccDef positMSgLoc positMSgInstr
|
||||||
|
positMDlNom positMDlGen positMDlDat positMDlAcc positMDlLoc positMDlInstr
|
||||||
|
positMPlNom positMPlGen positMPlDat positMPlAcc positMPlLoc positMPlInstr
|
||||||
|
positFSgNom positFSgGen positFSgDat positFSgAcc positFSgLoc positFSgInstr
|
||||||
|
positFDlNom positFDlGen positFDlDat positFDlAcc positFDlLoc positFDlInstr
|
||||||
|
positFPlNom positFPlGen positFPlDat positFPlAcc positFPlLoc positFPlInstr
|
||||||
|
positNSgNom positNSgGen positNSgDat positNSgAcc positNSgLoc positNSgInstr
|
||||||
|
positNDlNom positNDlGen positNDlDat positNDlAcc positNDlLoc positNDlInstr
|
||||||
|
positNPlNom positNPlGen positNPlDat positNPlAcc positNPlLoc positNPlInstr
|
||||||
|
("boli"++positMSgNom) ("boli"++positMSgGen) ("boli"++positMSgDat) ("boli"++positMSgAcc) ("boli"++positMSgAccDef) ("boli"++positMSgLoc) ("boli"++positMSgInstr)
|
||||||
|
("boli"++positMDlNom) ("boli"++positMDlGen) ("boli"++positMDlDat) ("boli"++positMDlAcc) ("boli"++positMDlLoc) ("boli"++positMDlInstr)
|
||||||
|
("boli"++positMPlNom) ("boli"++positMPlGen) ("boli"++positMPlDat) ("boli"++positMPlAcc) ("boli"++positMPlLoc) ("boli"++positMPlInstr)
|
||||||
|
("boli"++positFSgNom) ("boli"++positFSgGen) ("boli"++positFSgDat) ("boli"++positFSgAcc) ("boli"++positFSgLoc) ("boli"++positFSgInstr)
|
||||||
|
("boli"++positFDlNom) ("boli"++positFDlGen) ("boli"++positFDlDat) ("boli"++positFDlAcc) ("boli"++positFDlLoc) ("boli"++positFDlInstr)
|
||||||
|
("boli"++positFPlNom) ("boli"++positFPlGen) ("boli"++positFPlDat) ("boli"++positFPlAcc) ("boli"++positFPlLoc) ("boli"++positFPlInstr)
|
||||||
|
("boli"++positNSgNom) ("boli"++positNSgGen) ("boli"++positNSgDat) ("boli"++positNSgAcc) ("boli"++positNSgLoc) ("boli"++positNSgInstr)
|
||||||
|
("boli"++positNDlNom) ("boli"++positNDlGen) ("boli"++positNDlDat) ("boli"++positNDlAcc) ("boli"++positNDlLoc) ("boli"++positNDlInstr)
|
||||||
|
("boli"++positNPlNom) ("boli"++positNPlGen) ("boli"++positNPlDat) ("boli"++positNPlAcc) ("boli"++positNPlLoc) ("boli"++positNPlInstr)
|
||||||
|
("najboli"++positMSgNom) ("najboli"++positMSgGen) ("najboli"++positMSgDat) ("najboli"++positMSgAcc) ("najboli"++positMSgAccDef) ("najboli"++positMSgLoc) ("najboli"++positMSgInstr)
|
||||||
|
("najboli"++positMDlNom) ("najboli"++positMDlGen) ("najboli"++positMDlDat) ("najboli"++positMDlAcc) ("najboli"++positMDlLoc) ("najboli"++positMDlInstr)
|
||||||
|
("najboli"++positMPlNom) ("najboli"++positMPlGen) ("najboli"++positMPlDat) ("najboli"++positMPlAcc) ("najboli"++positMPlLoc) ("najboli"++positMPlInstr)
|
||||||
|
("najboli"++positFSgNom) ("najboli"++positFSgGen) ("najboli"++positFSgDat) ("najboli"++positFSgAcc) ("najboli"++positFSgLoc) ("najboli"++positFSgInstr)
|
||||||
|
("najboli"++positFDlNom) ("najboli"++positFDlGen) ("najboli"++positFDlDat) ("najboli"++positFDlAcc) ("najboli"++positFDlLoc) ("najboli"++positFDlInstr)
|
||||||
|
("najboli"++positFPlNom) ("najboli"++positFPlGen) ("najboli"++positFPlDat) ("najboli"++positFPlAcc) ("najboli"++positFPlLoc) ("najboli"++positFPlInstr)
|
||||||
|
("najboli"++positNSgNom) ("najboli"++positNSgGen) ("najboli"++positNSgDat) ("najboli"++positNSgAcc) ("najboli"++positNSgLoc) ("najboli"++positNSgInstr)
|
||||||
|
("najboli"++positNDlNom) ("najboli"++positNDlGen) ("najboli"++positNDlDat) ("najboli"++positNDlAcc) ("najboli"++positNDlLoc) ("najboli"++positNDlInstr)
|
||||||
|
("najboli"++positNPlNom) ("najboli"++positNPlGen) ("najboli"++positNPlDat) ("najboli"++positNPlAcc) ("najboli"++positNPlLoc) ("najboli"++positNPlInstr) ;
|
||||||
|
|
||||||
worstA : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> A =
|
worstA : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> A =
|
||||||
\positMSgNom,positMSgNomDef,positMSgGen,positMSgDat,positMSgAcc,positMSgAccIndef,positMSgAccDef,positMSgLoc,positMSgInstr,
|
\positMSgNom,positMSgNomDef,positMSgGen,positMSgDat,positMSgAcc,positMSgAccIndef,positMSgAccDef,positMSgLoc,positMSgInstr,
|
||||||
positMDlNom,positMDlGen,positMDlDat,positMDlAcc,positMDlLoc,positMDlInstr,
|
positMDlNom,positMDlGen,positMDlDat,positMDlAcc,positMDlLoc,positMDlInstr,
|
||||||
@@ -557,7 +642,7 @@ oper
|
|||||||
Loc => loc;
|
Loc => loc;
|
||||||
Instr=>inst
|
Instr=>inst
|
||||||
} ;
|
} ;
|
||||||
poss = \\g,c,nr => mkAdjForm poss ! c ! g ! nr ;
|
poss = \\g,c,nr => mkAdjForm poss (looseVowel poss+"a") (looseVowel poss+"o") ! c ! g ! nr ;
|
||||||
a = {g=g; n=n; p=p}
|
a = {g=g; n=n; p=p}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -643,7 +728,7 @@ oper
|
|||||||
|
|
||||||
adjDet : Str -> Number -> Species -> Det =
|
adjDet : Str -> Number -> Species -> Det =
|
||||||
\en,nr,sp -> lin Det {
|
\en,nr,sp -> lin Det {
|
||||||
s = \\g,c => mkAdjForm en ! c ! g ! nr ;
|
s = \\g,c => mkAdjForm en (looseVowel en+"a") (looseVowel en+"o") ! c ! g ! nr ;
|
||||||
spec = sp ;
|
spec = sp ;
|
||||||
n = (UseNum nr)
|
n = (UseNum nr)
|
||||||
} ;
|
} ;
|
||||||
@@ -673,7 +758,7 @@ oper
|
|||||||
|
|
||||||
mkComp : Str -> Comp =
|
mkComp : Str -> Comp =
|
||||||
\str -> lin Comp {
|
\str -> lin Comp {
|
||||||
s = \\agr => mkAdjForm str ! Nom ! agr.g ! agr.n
|
s = \\agr => mkAdjForm str (looseVowel str+"a") (looseVowel str+"o") ! Nom ! agr.g ! agr.n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--Helper function that drops the loose vowel that has to go in many conjugations.
|
--Helper function that drops the loose vowel that has to go in many conjugations.
|
||||||
@@ -687,7 +772,7 @@ oper
|
|||||||
--_ + "len" => Predef.tk 2 vowel + "n" ;
|
--_ + "len" => Predef.tk 2 vowel + "n" ;
|
||||||
--_ + "čen" => Predef.tk 2 vowel + "n" ;
|
--_ + "čen" => Predef.tk 2 vowel + "n" ;
|
||||||
--_ + "zen" => Predef.tk 2 vowel + "n" ;
|
--_ + "zen" => Predef.tk 2 vowel + "n" ;
|
||||||
--_ + "ven" => Predef.tk 2 vowel + "n" ;
|
_ + "stven" => vowel ;
|
||||||
--_ + "den" => Predef.tk 2 vowel + "n" ;
|
--_ + "den" => Predef.tk 2 vowel + "n" ;
|
||||||
--_ + "šen" => Predef.tk 2 vowel + "n" ;
|
--_ + "šen" => Predef.tk 2 vowel + "n" ;
|
||||||
_ + "en" => Predef.tk 2 vowel + "n" ; --not yet tested for overgeneration
|
_ + "en" => Predef.tk 2 vowel + "n" ; --not yet tested for overgeneration
|
||||||
|
|||||||
Reference in New Issue
Block a user