forked from GitHub/gf-rgl
142 lines
3.6 KiB
Plaintext
142 lines
3.6 KiB
Plaintext
resource ParadigmsSlo = open CatSlo, ResSlo, Prelude in {
|
|
|
|
----------------
|
|
-- Parameters
|
|
|
|
oper
|
|
singular : Number
|
|
= Sg ;
|
|
plural : Number
|
|
= Pl ;
|
|
|
|
mascAnimate : Gender
|
|
= Masc Anim ;
|
|
mascInanimate : Gender
|
|
= Masc Inanim ;
|
|
feminine : Gender
|
|
= Fem ;
|
|
neuter : Gender
|
|
= Neutr ;
|
|
|
|
nominative : Case
|
|
= Nom ;
|
|
genitive : Case
|
|
= Gen ;
|
|
dative : Case
|
|
= Dat ;
|
|
accusative : Case
|
|
= Acc ;
|
|
vocative : Case
|
|
= ResSlo.Voc ;
|
|
locative : Case
|
|
= Loc ;
|
|
instrumental : Case
|
|
= Ins ;
|
|
|
|
------------------------------
|
|
-- Nouns
|
|
|
|
oper
|
|
mkN = overload {
|
|
mkN : (nom : Str) -> N
|
|
= \nom -> lin N (guessNounForms nom) ;
|
|
mkN : (nom,gen : Str) -> Gender -> N
|
|
= \nom,gen,g -> lin N (declensionNounForms nom gen g) ;
|
|
} ;
|
|
|
|
-- The following standard declensions can be used with good accuracy.
|
|
-- However, they have some defaults that may have to be overwritten.
|
|
-- This can be done easily by overriding those formes with record extension (**).
|
|
-- The default extensions are shown in comments; if the default is correct, no extension is needed.
|
|
|
|
panN : Str -> N -- default ** {pnom = +i}
|
|
= \s -> lin N (declPAN s) ;
|
|
predsedaN : Str -> N -- default ** {sgen = +i}
|
|
= \s -> lin N (declPREDSEDA s) ;
|
|
hradN : Str -> N -- default ** {sgen,sloc = +u}
|
|
= \s -> lin N (declHRAD s) ;
|
|
zenaN : Str -> N -- default ** {pgen = zen}
|
|
= \s -> lin N (declZENA s) ;
|
|
mestoN : Str -> N -- default ** {sloc = +u ; pgen = mest ; ploc = +ech}
|
|
= \s -> lin N (declMESTO s) ;
|
|
muzN : Str -> N
|
|
= \s -> lin N (declMUZ s) ;
|
|
soudceN : Str -> N -- default ** {sdat,sloc = +i ; pnom = +i}
|
|
= \s -> lin N (declSOUDCE s) ;
|
|
strojN : Str -> N
|
|
= \s -> lin N (declSTROJ s) ;
|
|
ruzeN : Str -> N
|
|
= \s -> lin N (declRUZE s) ;
|
|
pisenN : Str -> N
|
|
= \s -> lin N (declPISEN s) ;
|
|
kostN : Str -> N
|
|
= \s -> lin N (declKOST s) ;
|
|
kureN : Str -> N
|
|
= \s -> lin N (declKURE s) ;
|
|
moreN : Str -> N -- default ** {pgen = +í}
|
|
= \s -> lin N (declMORE s) ;
|
|
staveniN : Str -> N
|
|
= \s -> lin N (declSTAVENI s) ;
|
|
|
|
-- The full definition of the noun record is
|
|
-- {
|
|
-- snom,sgen,sdat,sacc,svoc,sloc,sins, pnom,pgen,pdat,pacc,ploc,pins : Str ;
|
|
-- g : Gender
|
|
-- }
|
|
|
|
|
|
---------------------
|
|
-- Adjectives
|
|
|
|
-- Only positive forms so far ----
|
|
|
|
mkA = overload {
|
|
mkA : Str -> A
|
|
= \s -> lin A (case s of {
|
|
_ + "ý" => mladyAdjForms s ;
|
|
_ + "í" => jarniAdjForms s ;
|
|
_ + "ův" => otcuvAdjForms s ;
|
|
_ + "in" => matcinAdjForms s ;
|
|
_ => Predef.error ("no mkA for" ++ s)
|
|
}) ;
|
|
} ;
|
|
|
|
mladyA : Str -> A
|
|
= \s -> lin A (mladyAdjForms s) ;
|
|
jarniA : Str -> A
|
|
= \s -> lin A (jarniAdjForms s) ;
|
|
otcuvA : Str -> A
|
|
= \s -> lin A (otcuvAdjForms s) ;
|
|
matcinA : Str -> A
|
|
= \s -> lin A (matcinAdjForms s) ;
|
|
|
|
mkA2 : A -> Prep -> A2
|
|
= \a,p -> lin A2 (a ** {c = p}) ;
|
|
|
|
-------------------------
|
|
-- Verbs
|
|
|
|
mkV2 = overload {
|
|
mkV2 : VerbForms -> VerbForms ** {c : ComplementCase}
|
|
= \vf -> vf ** {c = {s = [] ; c = Acc ; hasPrep = False}} ;
|
|
mkV2 : VerbForms -> Case -> VerbForms ** {c : ComplementCase}
|
|
= \vf,c -> vf ** {c = {s = [] ; c = c ; hasPrep = False}} ;
|
|
mkV2 : VerbForms -> ComplementCase -> VerbForms ** {c : ComplementCase}
|
|
= \vf,c -> vf ** {c = c} ;
|
|
} ;
|
|
|
|
------------------------
|
|
-- Adverbs, prepositions, conjunctions, ...
|
|
|
|
mkAdv : Str -> Adv
|
|
= \s -> lin Adv {s = s} ;
|
|
|
|
mkPrep : Str -> Case -> Prep
|
|
= \s,c -> lin Prep {s = s ; c = c ; hasPrep = True} ; ---- True if s /= ""
|
|
|
|
mkConj : Str -> Conj
|
|
= \s -> lin Conj {s1 = [] ; s2 = s} ;
|
|
|
|
|
|
}
|