FM-SBLEX-3.0: src/dalin/NounBuildSw.hs
module NounBuildSw where
import General
import Dictionary
import GenRulesSw
import TypesSw
import RulesSw
import Char
import Attr
substantive :: Substantive -> Genus -> Entry
substantive n g = entryI (hyphenate_compounds n) [prValue g]
noun_f :: Int -> Genus -> (Suffixes,Suffixes,Suffixes,Suffixes) -> (String -> Entry)
noun_f n g (apa,apan,apor,aporna) s = noun_compound n g (apa,apan,apor,aporna,apa,apa) s
noun_compound_ng :: Int -> Genus -> (Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes) -> (String -> Entry)
noun_compound_ng n g (apa,apan,apor,aporna,ap,ap2) s = substantive (missing n_f [(SF n d Gen) | n <- values, d <- values]) g
where n_f p = (mk_substantive_v (suff apa) (suff apan) (suff apor) (suff aporna) (suff ap) (suff ap2) (suff ap)) p
suff = apply_suffixes (tk n s)
noun_compound :: Int -> Genus -> (Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes) -> (String -> Entry)
noun_compound n g (apa,apan,apor,aporna,ap,ap2) s = substantive n_f g
where n_f p = (mk_substantive_v (suff apa) (suff apan) (suff apor) (suff aporna) (suff ap) (suff ap2) (suff ap)) p
suff = apply_suffixes (tk n s)
noun_no_genitive :: Genus -> (Suffixes,Suffixes,Suffixes,Suffixes) -> (String -> Entry)
noun_no_genitive g (apa,apan,apor,aporna) s = substantive (missing n_f [(SF n d Gen) | n <- values, d <- values]) g
where n_f p = (mk_subst_v (suff apa) (suff apan) (suff apor) (suff aporna) (suff apa)) p
suff = apply_suffixes s
nna :: Genus -> (Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes) -> (String -> Entry)
nna g (apa,apas,apan,apans,apor,apors,aporna,apornas) s =
replace_attr wp_attr w_attr $ replace_attr h_attr w_attr $ set_pos "nna" $ substantive n_f g
where n_f p = (mk_nna (suff apa) (suff apas) (suff apan) (suff apans) (suff apor) (suff apors)
(suff aporna) (suff apornas)) p
suff = apply_suffixes s . connect s
connect s end = concat [[(f,(':':e)),(f,('-':e)),(f,e)] | (f,e@(_:_)) <- end] ++ (filter (null . snd) end)
nnac :: Genus -> (Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes) -> (String -> Entry)
nnac g (apa,apas,apan,apans,apor,apors,aporna,apornas) s =
replace_attr wp_attr w_attr $ replace_attr h_attr w_attr $ set_pos "nna" $ substantive n_f g
where n_f p = (mk_nna (suff apa) (suff apas) (suff apan) (suff apans) (suff apor) (suff apors)
(suff aporna) (suff apornas)) p
suff = apply_suffixes s . connect s
connect s end = concat [[(f,(':':e)),(f,e)] | (f,e@(_:_)) <- end] ++ (filter (null . snd) end)
noun :: Genus -> [String] -> [String] -> [String] -> [String] -> (String -> Entry)
noun g apa apan apor aporna s = nounC g apa apan apor aporna apa s
nounC :: Genus -> [String] -> [String] -> [String] -> [String] -> [String] -> (String -> Entry)
nounC g apa apan apor aporna ap s = substantive n_f g
where n_f p = (mk_subst_v apa' apan' apor' aporna' ap') p
suff = (s ++)
apa' = map suff apa
apan' = map suff apan
apor' = map suff apor
aporna' = map suff aporna
ap' = map suff ap