FM-SBLEX-3.0: src/dalin/OtherBuildSw.hs
module OtherBuildSw where
import General
import Dictionary
import TypesSw
import RulesSw
import GenRulesSw
-- Proper names
{-
pm_m :: String -> String -> Entry
pm_m tax s = entryI (mk_pm s) [prValue MascGen,tax]
pm_f :: String -> String -> Entry
pm_f tax s = entryI (mk_pm s) [prValue FemGen,tax]
pm_f_alice :: String -> String -> Entry
pm_f_alice tax s = entryI (mk_pm_alice s) [prValue FemGen,tax]
pm_h :: String -> String -> Entry
pm_h tax s = entryI (mk_pm s) [prValue Human,tax]
pm_w :: String -> String -> Entry
pm_w tax s = entryI (mk_pm s) [prValue PNeutr,tax]
pm_p :: String -> String -> Entry
pm_p tax s = entryI (mk_pm s) [prValue GPl,tax]
pm_v :: String -> String -> Entry
pm_v tax s = entryI (mk_pm s) [prValue Pend,tax]
pm_u :: String -> String -> Entry
pm_u tax s = entryI (mk_pm s) [prValue Utr,tax]
pm_n :: String -> String -> Entry
pm_n tax s = entryI (mk_pm s) [prValue Neutr,tax]
pma_n :: String -> String -> Entry
pma_n tax s = entryI (mk_pma s) [prValue Neutr,tax]
pma_u :: String -> String -> Entry
pma_u tax s = entryI (mk_pma s) [prValue Utr,tax]
pma_h :: String -> String -> Entry
pma_h tax s = entryI (mk_pma s) [prValue Human,tax]
pma_w :: String -> String -> Entry
pma_w tax s = entryI (mk_pma s) [prValue PNeutr,tax]
pma_m :: String -> String -> Entry
pma_m tax s = entryI (mk_pma s) [prValue PNeutr,tax]
-- multi-word proper names
pmm_n :: String -> String -> Entry
pmm_n tax s = entryI (mk_pmm0 (words s)) [prValue Neutr,tax]
pmm_u :: String -> String -> Entry
pmm_u tax s = entryI (mk_pmm0 (words s)) [prValue Utr,tax]
pmm_h :: String -> String -> Entry
pmm_h tax s = entryI (mk_pmm0 (words s)) [prValue Human,tax]
pmm_m :: String -> String -> Entry
pmm_m tax s = entryI (mk_pmm0 (words s)) [prValue MascGen,tax]
pmm_f :: String -> String -> Entry
pmm_f tax s = entryI (mk_pmm0 (words s)) [prValue FemGen,tax]
pmm_v :: String -> String -> Entry
pmm_v tax s = entryI (mk_pmm0 (words s)) [prValue Pend,tax]
pmm_p :: String -> String -> Entry
pmm_p tax s = entryI (mk_pmm0 (words s)) [prValue GPl,tax]
pmam_m :: String -> String -> Entry
pmam_m tax s = entryI (mk_pmam0 (words s)) [prValue MascGen,tax]
pmam_n :: String -> String -> Entry
pmam_n tax s = entryI (mk_pmam0 (words s)) [prValue Neutr,tax]
-}
-- adverbs
ab_bort :: String -> Entry
ab_bort = entry . f
where f s AdCompI = strings [s,s+?"-"]
f s AdSMSI = strings [s+?"-"]
f s _ = strings [s]
ab_i_aldrig :: String -> Entry
ab_i_aldrig = entry . ab_i_no_comp
ab_främst :: String -> Entry
ab_främst = entry . abfrämst
ab_bra :: [String] -> [String] -> [String] -> Entry
ab_bra x y z = entry $ mk_adverb x y z
ab_fint :: String -> Entry
ab_fint = entry . abfint
ab_1_fort = entry . abfort
abm_i_till_exempel :: String -> Entry
abm_i_till_exempel till_exempel = entry $ abm till_exempel
-- compounds
compound :: String -> Entry
compound = entry . f
where f s CMP = strings [s, s+?"-"]
f s CSMS = strings [s+?"-"]
-- pronouns
pn_jag :: (Person,Numerus) -> (Suffixes, Suffixes,Suffixes,Suffixes,Suffixes) -> String -> Entry
pn_jag (p,n) (a,b,c,d,e) s = entryI (mk_pron_jag (a,b,c,d,e) s) [prValue p, prValue n]
pn_nagon :: (Suffixes, Suffixes, Suffixes) -> String -> Entry
pn_nagon (a,b,c) s = entry $ mk_pron_nagon (a,b,c) s
pn_han :: (Person,Numerus) -> (Suffixes, Suffixes, Suffixes) -> String -> Entry
pn_han (p,n) (a,b,c) s = entryI (mk_pron_han (a,b,c) s) [prValue p, prValue n]
pn_vem :: (Suffixes, Suffixes, Suffixes) -> String -> Entry
pn_vem (a,b,c) s = entry (mk_pron_han (a,b,c) s)
pn_o_den :: String -> Entry
pn_o_den = entry . mk_pn_o_den
pn_dylik :: String -> Entry
pn_dylik = entry . mk_pron_dylik
pn_interrog_inv :: String -> Entry
pn_interrog_inv = entry . (const :: Str -> InterrogInvForm -> Str) . mkStr
pn_inv :: String -> Entry
pn_inv = entry . (const :: Str -> PronInvForm -> Str) . mkStr
pnm_inv :: String -> Entry
pnm_inv = entry . (const :: Str -> PronMInvForm -> Str) . mkStr
pnm_gen :: String -> Entry
pnm_gen = entry . f
where f s (PronMCForm Nom) = mkStr $ s
f s (PronMCForm Gen) = mkStr $ case words s of
(x:xs) -> unwords (x +? "s":xs)
pnm_gen2 :: String -> Entry
pnm_gen2 = entry . f
where f s (PronMCForm Nom) = mkStr $ s
f s (PronMCForm Gen) = mkStr $ case reverse (words s) of
(x:xs) -> unwords (reverse (x +? "s":xs))
-- numbers
number ss = entry . mk_number ss
number_ng ss = entry . mk_number_ng ss
nl_n_1 = entry . nln1
-- invariant closed classes
interj :: String -> Entry
interj = entry . (const :: Str -> InterjForm -> Str) . mkStr
interjm :: String -> Entry
interjm aja_baja = set_pos "inm" $ interj (aja_baja)
conj :: String -> Entry
conj = entry . (const :: Str -> ConjForm -> Str) . mkStr
subj :: String -> Entry
subj = entry . (const :: Str -> SubForm -> Str) . mkStr
prep :: String -> Entry
prep = entry . (const :: Str -> PartForm -> Str) . mkStr
part :: String -> Entry
part = entry . (const :: Str -> PartForm -> Str) . mkStr
inf_mark :: String -> Entry
inf_mark = entry . (const :: Str -> InfMarkForm -> Str) . mkStr
invar :: String -> String -> Entry
invar pos = set_pos pos . entry . f
where f s AdCompI = strings [s+?"-"]
f s AdSMSI = strings [s+?"-"]
f s _ = strings [s]
-- abbreviations
aba_i_dvs :: String -> Entry
aba_i_dvs = entry . (const :: Str -> ABAForm -> Str) . mkStr
al_o_en :: String -> Entry
al_o_en den =
entry $ \(ArticleForm g s) -> strings $
case (g,s) of
(ASgUtr,Indef) -> ["en"]
(ASgNeutr,Indef) -> ["ett"]
(APl,Indef) -> ["ena"]
(ASgUtr,Def) -> ["den"]
(ASgNeutr,Def) -> ["det"]
(APl,Def) -> ["de","dom"]