mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -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
|
||||
nominative : Case = Nom ;
|
||||
@@ -37,45 +37,69 @@ oper
|
||||
|
||||
mascAll : (_,_ : Str) -> Animacy -> N = \oce,ocet,anim ->
|
||||
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
|
||||
worstN oce (ocet + "a") (ocet + "u") accsg (ocet + "u") (ocet + "om") -- Singular
|
||||
(ocet + "a") (ocet + "ov") (ocet + "oma") (ocet + "a") (ocet + "ih") (ocet + "oma") -- Dual
|
||||
(ocet + "i") (ocet + "ov") (ocet + "om") (ocet + "e") (ocet + "ih") (ocet + "i") -- Plural
|
||||
worstN oce (ocet + "a") (ocet + "u") accsg (ocet + "u") (oceto + "m") -- Singular
|
||||
(ocet + "a") (oceto + "v") (oceto + "ma") (ocet + "a") (ocet + "ih") (oceto + "ma") -- Dual
|
||||
(ocet + "i") (oceto + "v") (oceto + "m") (ocet + "e") (ocet + "ih") (ocet + "i") -- Plural
|
||||
(AMasc anim) ;
|
||||
|
||||
--All neuter forms are formed here, long or normal.
|
||||
--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.
|
||||
|
||||
neutAll : (_,_ : Str) -> N = \drevo,dreves ->
|
||||
worstN drevo (dreves + "a") (dreves + "u") drevo (dreves + "u") (dreves + "om") -- Singular
|
||||
(dreves + "i") dreves (dreves + "oma") (dreves + "i") (dreves + "ih") (dreves + "oma") -- Dual
|
||||
(dreves + "a") dreves (dreves + "om") (dreves + "a") (dreves + "ih") (dreves + "i") -- Plural
|
||||
neuter ;
|
||||
neutAll : (_,_,_ : Str) -> N = \drevo,dreves,dreves2 ->
|
||||
let dreveso = dreves + last drevo ;
|
||||
in worstN drevo (dreves + "a") (dreves + "u") drevo (dreves + "u") (dreveso + "m") -- Singular
|
||||
(dreves + "i") dreves2 (dreveso + "ma") (dreves + "i") (dreves + "ih") (dreveso + "ma") -- Dual
|
||||
(dreves + "a") dreves2 (dreveso + "m") (dreves + "a") (dreves + "ih") (dreves + "i") -- Plural
|
||||
neuter ;
|
||||
|
||||
--Regular feminine nouns are formed from the baseform. Always inanimate.
|
||||
|
||||
regFem : (_ : Str) -> N = \punca ->
|
||||
let punc = init punca
|
||||
regFem_a : (_ : Str) -> N = \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
|
||||
worstN punca (punc + "e") (punc + "i") (punc + "o") (punc + "i") (punc + "o") -- Singular
|
||||
(punc + "i") punc (punc + "ama") (punc + "i") (punc + "am") (punc + "ama") -- Dual
|
||||
(punc + "e") punc (punc + "am") (punc + "e") (punc + "am") (punc + "ami") -- Plural
|
||||
worstN vsaditev (vsaditv + "e") (vsaditv + "i") vsaditev (vsaditv + "i") (vsaditv + "ijo") -- Singular
|
||||
(vsaditv + "i") vsaditev (vsaditv + "ama") (vsaditv + "i") (vsaditv + "ah") (vsaditv + "ama") -- Dual
|
||||
(vsaditv + "e") vsaditev (vsaditv + "am") (vsaditv + "e") (vsaditv + "ah") (vsaditv + "ami") -- Plural
|
||||
feminine ;
|
||||
|
||||
iFem : (_ : Str) -> N = \stran ->
|
||||
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
|
||||
let stran' = looseVowel stran ;
|
||||
stran'' : Str
|
||||
= 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 ;
|
||||
|
||||
--This is a smart paradigm for regular nouns.
|
||||
|
||||
smartN : (noun: Str) -> N =
|
||||
\noun -> case noun of {
|
||||
_ + "a" => regFem noun ;
|
||||
_ + ("ev" | "ost") => regFem noun ;
|
||||
_ + ("o"| "e") => let nou = init noun in neutAll noun nou ;
|
||||
_ + "a" => regFem_a noun ;
|
||||
_ + ("o"| "e") + "st" => regFem_st noun ;
|
||||
_ + "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.
|
||||
_ => 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 ->
|
||||
case gen of {
|
||||
AMasc anim => let longfor = init longform in mascAll noun longfor anim ;
|
||||
ANeut => let longfor = init longform in neutAll noun longfor ;
|
||||
AFem => regFem noun --There are actually no feminine nouns with long stem.
|
||||
ANeut => let longfor = init longform in neutAll noun longfor longfor ;
|
||||
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.
|
||||
@@ -99,8 +123,13 @@ oper
|
||||
_ + #vowel => let nou = init noun in mascAll noun nou anim ;
|
||||
_ => mascAll noun noun anim -- KA: catch all
|
||||
};
|
||||
ANeut => let nou = init noun in neutAll noun nou ;
|
||||
AFem => regFem noun --There are actually no feminine nouns with long stem.
|
||||
ANeut => let nou = init noun in neutAll noun nou nou ;
|
||||
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.
|
||||
@@ -113,6 +142,17 @@ oper
|
||||
bogovi bogov (bogov + "om") (bogov + "e") (bogov + "ih") (bogov + "i") -- Plural
|
||||
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 =
|
||||
\nomsg,gensg,datsg,accsg,locsg,instrsg,nomdl,gendl,datdl,accdl,locdl,instrdl,nompl,genpl,datpl,accpl,locpl,instrpl,g -> lin N {
|
||||
s = table {
|
||||
@@ -137,6 +177,12 @@ oper
|
||||
g = noun.g ;
|
||||
n = nr
|
||||
};
|
||||
mkPN : Str -> AGender -> Number -> PN =
|
||||
\s,g,n -> lin PN {
|
||||
s = \\_ => s ;
|
||||
g = g ;
|
||||
n = n
|
||||
};
|
||||
mkPN : (_,_,_,_,_,_ : Str) -> AGender -> Number -> PN =
|
||||
\nom,gen,dat,acc,loc,instr,g,n -> lin PN {
|
||||
s = table {
|
||||
@@ -285,62 +331,101 @@ oper
|
||||
-- Adjectives
|
||||
|
||||
mkA = overload {
|
||||
mkA : (_:Str) -> A = \s -> regA s ("bolj"++s) ;
|
||||
mkA : (_,_:Str) -> A = regA ;
|
||||
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 = \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 ;
|
||||
} ;
|
||||
|
||||
regA : (_,_ :Str) -> A = \star,starejsi -> lin A {
|
||||
s = let starejs = init starejsi
|
||||
in table {
|
||||
APosit gen num c => mkAdjForm star ! c ! gen ! num ;
|
||||
ACompar gen num c => mkAdjForm starejs ! c ! gen ! num ;
|
||||
ASuperl gen num c => mkAdjForm ("naj" + starejs) ! c ! gen ! num ;
|
||||
APositDefNom => mkAdjForm star ! Nom ! Masc ! Pl ;
|
||||
APositIndefAcc => mkAdjForm star ! Nom ! Masc ! Sg ;
|
||||
APositDefAcc => mkAdjForm star ! Nom ! Masc ! Pl ;
|
||||
AComparDefNom => mkAdjForm starejs ! Nom ! Masc ! Pl ;
|
||||
ASuperlDefNom => mkAdjForm ("naj" + starejs) ! Nom ! Masc ! Pl
|
||||
}
|
||||
irregA : (_,_,_,_,_,_ :Str) -> A = \masc,fem,neut,mascC,femC,neutC -> lin A {
|
||||
s = table {
|
||||
APosit gen num c => mkAdjForm masc fem neut ! c ! gen ! num ;
|
||||
ACompar gen num c => mkAdjForm mascC femC neutC ! c ! gen ! num ;
|
||||
ASuperl gen num c => mkAdjForm ("naj" + mascC) ("naj" + femC) ("naj" + neutC) ! c ! gen ! num ;
|
||||
APositDefNom => mkAdjForm masc fem neut ! Nom ! Masc ! Pl ;
|
||||
APositIndefAcc => mkAdjForm masc fem neut ! Nom ! Masc ! Sg ;
|
||||
APositDefAcc => mkAdjForm masc fem neut ! Nom ! Masc ! Pl ;
|
||||
AComparDefAcc => mkAdjForm mascC femC neutC ! Nom ! Masc ! Pl ;
|
||||
ASuperlDefAcc => mkAdjForm ("naj" + mascC) ("naj" + femC) ("naj" + neutC) ! Nom ! Masc ! Pl
|
||||
}
|
||||
} ;
|
||||
|
||||
mkAdjForm : Str -> Case => Gender => Number => Str = \lep ->
|
||||
let
|
||||
lp = looseVowel lep --checks for loosewovel in the stem. if there is none, the string comes back the same.
|
||||
mkAdjForm : (_,_,_ : Str) -> Case => Gender => Number => Str = \lep,lpa,lpo ->
|
||||
let lp = init lpa
|
||||
in
|
||||
table {
|
||||
Nom => table {
|
||||
Fem => table {Sg=> (lp + "a"); Dl=>(lp + "i"); Pl=>(lp +"e")};
|
||||
Masc => table {Sg=> lep; Dl=>(lp + "a"); Pl=>(lp +"i")};
|
||||
Neut => table {Sg=>(lp + "o"); Dl=>(lp + "i"); Pl=>(lp + "a")}
|
||||
Masc => table {Sg=> lep; Dl=>(lp + "a"); Pl=>(lp +"i")};
|
||||
Fem => table {Sg=> lpa; Dl=>(lp + "i"); Pl=>(lp +"e")};
|
||||
Neut => table {Sg=> lpo; Dl=>(lp + "i"); Pl=>(lp + "a")}
|
||||
};
|
||||
Acc => table {
|
||||
Fem => table {Sg=>(lp + "o"); Dl=>(lp + "i"); Pl=>(lp + "e")};
|
||||
Masc => table {Sg=>lep; Dl=>(lp + "a"); Pl=>(lp + "e")};
|
||||
Neut => table {Sg=>(lp + "o"); Dl=>(lp + "i"); Pl=>(lp +"a")}
|
||||
Masc => table {Sg=>lp+"ega"; Dl=>(lp + "a"); Pl=>(lp + "e")};
|
||||
Fem => table {Sg=>(lp + "o"); Dl=>(lp + "i"); Pl=>(lp + "e")};
|
||||
Neut => table {Sg=>lpo; Dl=>(lp + "i"); Pl=>(lp +"a")}
|
||||
};
|
||||
Gen => table {
|
||||
Fem => table {Sg=>(lp + "e"); 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 {
|
||||
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")}
|
||||
};
|
||||
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")}
|
||||
};
|
||||
Instr => table {
|
||||
Fem => table {Sg=>(lp + "o"); Dl=>(lp +"ima"); Pl=>(lp +"imi")};
|
||||
Masc => table {Sg=>(lp + "im"); Dl=>(lp +"ima"); Pl=>(lp +"imi")};
|
||||
Neut => 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")}
|
||||
}
|
||||
} ;
|
||||
|
||||
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 =
|
||||
\positMSgNom,positMSgNomDef,positMSgGen,positMSgDat,positMSgAcc,positMSgAccIndef,positMSgAccDef,positMSgLoc,positMSgInstr,
|
||||
positMDlNom,positMDlGen,positMDlDat,positMDlAcc,positMDlLoc,positMDlInstr,
|
||||
@@ -557,7 +642,7 @@ oper
|
||||
Loc => loc;
|
||||
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}
|
||||
};
|
||||
|
||||
@@ -643,7 +728,7 @@ oper
|
||||
|
||||
adjDet : Str -> Number -> Species -> 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 ;
|
||||
n = (UseNum nr)
|
||||
} ;
|
||||
@@ -673,7 +758,7 @@ oper
|
||||
|
||||
mkComp : Str -> 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.
|
||||
@@ -687,7 +772,7 @@ oper
|
||||
--_ + "len" => Predef.tk 2 vowel + "n" ;
|
||||
--_ + "čen" => 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" ;
|
||||
--_ + "šen" => Predef.tk 2 vowel + "n" ;
|
||||
_ + "en" => Predef.tk 2 vowel + "n" ; --not yet tested for overgeneration
|
||||
|
||||
Reference in New Issue
Block a user