forked from GitHub/gf-core
More English morphology clean-up.
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
-- syntax. To build a lexicon, it is better to use $ParadigmsEng$, which
|
||||
-- gives a higher-level access to this module.
|
||||
|
||||
resource MorphoEng = ResEng ** open Prelude, (Predef=Predef) in {
|
||||
resource MorphoEng = open Prelude, (Predef=Predef), ResEng in {
|
||||
|
||||
flags optimize=all ;
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ resource ParadigmsEng = open
|
||||
(Predef=Predef),
|
||||
Prelude,
|
||||
MorphoEng,
|
||||
ResEng,
|
||||
CatEng
|
||||
in {
|
||||
--2 Parameters
|
||||
@@ -177,6 +178,10 @@ oper
|
||||
|
||||
mkAdA : Str -> AdA ;
|
||||
|
||||
-- Adverbs modifying numerals
|
||||
|
||||
mkAdN : Str -> AdN ;
|
||||
|
||||
--2 Prepositions
|
||||
--
|
||||
-- A preposition as used for rection in the lexicon, as well as to
|
||||
@@ -287,9 +292,9 @@ oper
|
||||
-- The definitions should not bother the user of the API. So they are
|
||||
-- hidden from the document.
|
||||
|
||||
Gender = MorphoEng.Gender ;
|
||||
Number = MorphoEng.Number ;
|
||||
Case = MorphoEng.Case ;
|
||||
Gender = ResEng.Gender ;
|
||||
Number = ResEng.Number ;
|
||||
Case = ResEng.Case ;
|
||||
human = Masc ;
|
||||
nonhuman = Neutr ;
|
||||
masculine = Masc ;
|
||||
@@ -405,6 +410,7 @@ oper
|
||||
mkAdv x = ss x ** {lock_Adv = <>} ;
|
||||
mkAdV x = ss x ** {lock_AdV = <>} ;
|
||||
mkAdA x = ss x ** {lock_AdA = <>} ;
|
||||
mkAdN x = ss x ** {lock_AdN = <>} ;
|
||||
|
||||
mkPrep p = ss p ** {lock_Prep = <>} ;
|
||||
noPrep = mkPrep [] ;
|
||||
|
||||
@@ -158,18 +158,6 @@ resource ResEng = ParamX ** open Prelude in {
|
||||
a = toAgr n p g ;
|
||||
};
|
||||
|
||||
-- These functions cover many cases; full coverage inflectional patterns are
|
||||
-- in $MorphoEng$.
|
||||
|
||||
regN : Str -> {s : Number => Case => Str} = \car ->
|
||||
mkNoun car (car + "'s") (car + "s") (car + "s'") ;
|
||||
|
||||
regA : Str -> {s : AForm => Str} = \warm ->
|
||||
mkAdjective warm (warm + "er") (warm + "est") (warm + "ly") ;
|
||||
|
||||
regV : Str -> Verb = \walk ->
|
||||
mkVerb walk (walk + "s") (walk + "ed") (walk + "ed") (walk + "ing") ;
|
||||
|
||||
regNP : Str -> Number -> {s : Case => Str ; a : Agr} = \that,n ->
|
||||
mkNP that that (that + "'s") n P3 Neutr ;
|
||||
|
||||
|
||||
@@ -1,25 +1,26 @@
|
||||
concrete StructuralEng of Structural = CatEng **
|
||||
open MorphoEng, (P = ParadigmsEng), Prelude in {
|
||||
open MorphoEng, ResEng, ParadigmsEng, Prelude in {
|
||||
|
||||
flags optimize=all ;
|
||||
|
||||
lin
|
||||
above_Prep = P.mkPrep "above" ;
|
||||
after_Prep = P.mkPrep "after" ;
|
||||
above_Prep = mkPrep "above" ;
|
||||
after_Prep = mkPrep "after" ;
|
||||
all_Predet = ss "all" ;
|
||||
almost_AdA, almost_AdN = ss "almost" ;
|
||||
almost_AdA = mkAdA "almost" ;
|
||||
almost_AdN = mkAdN "almost" ;
|
||||
although_Subj = ss "although" ;
|
||||
always_AdV = ss "always" ;
|
||||
and_Conj = sd2 [] "and" ** {n = Pl} ;
|
||||
---b and_Conj = ss "and" ** {n = Pl} ;
|
||||
always_AdV = mkAdV "always" ;
|
||||
and_Conj = sd2 [] "and" ** {n = plural} ;
|
||||
---b and_Conj = ss "and" ** {n = plural} ;
|
||||
because_Subj = ss "because" ;
|
||||
before_Prep = P.mkPrep "before" ;
|
||||
behind_Prep = P.mkPrep "behind" ;
|
||||
between_Prep = P.mkPrep "between" ;
|
||||
both7and_DConj = sd2 "both" "and" ** {n = Pl} ;
|
||||
before_Prep = mkPrep "before" ;
|
||||
behind_Prep = mkPrep "behind" ;
|
||||
between_Prep = mkPrep "between" ;
|
||||
both7and_DConj = sd2 "both" "and" ** {n = plural} ;
|
||||
but_PConj = ss "but" ;
|
||||
by8agent_Prep = P.mkPrep "by" ;
|
||||
by8means_Prep = P.mkPrep "by" ;
|
||||
by8agent_Prep = mkPrep "by" ;
|
||||
by8means_Prep = mkPrep "by" ;
|
||||
can8know_VV, can_VV = {
|
||||
s = table {
|
||||
VVF VInf => ["be able to"] ;
|
||||
@@ -32,32 +33,32 @@ concrete StructuralEng of Structural = CatEng **
|
||||
} ;
|
||||
isAux = True
|
||||
} ;
|
||||
during_Prep = P.mkPrep "during" ;
|
||||
either7or_DConj = sd2 "either" "or" ** {n = Sg} ;
|
||||
everybody_NP = regNP "everybody" Sg ;
|
||||
every_Det = mkDeterminer Sg "every" ;
|
||||
everything_NP = regNP "everything" Sg ;
|
||||
everywhere_Adv = ss "everywhere" ;
|
||||
few_Det = mkDeterminer Pl "few" ;
|
||||
during_Prep = mkPrep "during" ;
|
||||
either7or_DConj = sd2 "either" "or" ** {n = singular} ;
|
||||
everybody_NP = regNP "everybody" singular ;
|
||||
every_Det = mkDeterminer singular "every" ;
|
||||
everything_NP = regNP "everything" singular ;
|
||||
everywhere_Adv = mkAdv "everywhere" ;
|
||||
few_Det = mkDeterminer plural "few" ;
|
||||
--- first_Ord = ss "first" ; DEPRECATED
|
||||
for_Prep = P.mkPrep "for" ;
|
||||
from_Prep = P.mkPrep "from" ;
|
||||
he_Pron = mkPron "he" "him" "his" "his" Sg P3 Masc ;
|
||||
here_Adv = ss "here" ;
|
||||
here7to_Adv = ss ["to here"] ;
|
||||
here7from_Adv = ss ["from here"] ;
|
||||
for_Prep = mkPrep "for" ;
|
||||
from_Prep = mkPrep "from" ;
|
||||
he_Pron = mkPron "he" "him" "his" "his" singular P3 masculine ;
|
||||
here_Adv = mkAdv "here" ;
|
||||
here7to_Adv = mkAdv ["to here"] ;
|
||||
here7from_Adv = mkAdv ["from here"] ;
|
||||
how_IAdv = ss "how" ;
|
||||
how8many_IDet = mkDeterminer Pl ["how many"] ;
|
||||
how8many_IDet = mkDeterminer plural ["how many"] ;
|
||||
if_Subj = ss "if" ;
|
||||
in8front_Prep = P.mkPrep ["in front of"] ;
|
||||
i_Pron = mkPron "I" "me" "my" "mine" Sg P1 Masc ;
|
||||
in_Prep = P.mkPrep "in" ;
|
||||
it_Pron = mkPron "it" "it" "its" "its" Sg P3 Neutr ;
|
||||
in8front_Prep = mkPrep ["in front of"] ;
|
||||
i_Pron = mkPron "I" "me" "my" "mine" singular P1 human ;
|
||||
in_Prep = mkPrep "in" ;
|
||||
it_Pron = mkPron "it" "it" "its" "its" singular P3 nonhuman ;
|
||||
less_CAdv = ss "less" ;
|
||||
many_Det = mkDeterminer Pl "many" ;
|
||||
many_Det = mkDeterminer plural "many" ;
|
||||
more_CAdv = ss "more" ;
|
||||
most_Predet = ss "most" ;
|
||||
much_Det = mkDeterminer Sg "much" ;
|
||||
much_Det = mkDeterminer singular "much" ;
|
||||
must_VV = {
|
||||
s = table {
|
||||
VVF VInf => ["have to"] ;
|
||||
@@ -72,54 +73,54 @@ concrete StructuralEng of Structural = CatEng **
|
||||
} ;
|
||||
---b no_Phr = ss "no" ;
|
||||
no_Utt = ss "no" ;
|
||||
on_Prep = P.mkPrep "on" ;
|
||||
---- one_Quant = mkDeterminer Sg "one" ; -- DEPRECATED
|
||||
on_Prep = mkPrep "on" ;
|
||||
---- one_Quant = mkDeterminer singular "one" ; -- DEPRECATED
|
||||
only_Predet = ss "only" ;
|
||||
or_Conj = sd2 [] "or" ** {n = Sg} ;
|
||||
or_Conj = sd2 [] "or" ** {n = singular} ;
|
||||
otherwise_PConj = ss "otherwise" ;
|
||||
part_Prep = P.mkPrep "of" ;
|
||||
part_Prep = mkPrep "of" ;
|
||||
please_Voc = ss "please" ;
|
||||
possess_Prep = P.mkPrep "of" ;
|
||||
quite_Adv = ss "quite" ;
|
||||
she_Pron = mkPron "she" "her" "her" "hers" Sg P3 Fem ;
|
||||
so_AdA = ss "so" ;
|
||||
somebody_NP = regNP "somebody" Sg ;
|
||||
someSg_Det = mkDeterminer Sg "some" ;
|
||||
somePl_Det = mkDeterminer Pl "some" ;
|
||||
something_NP = regNP "something" Sg ;
|
||||
somewhere_Adv = ss "somewhere" ;
|
||||
possess_Prep = mkPrep "of" ;
|
||||
quite_Adv = mkAdv "quite" ;
|
||||
she_Pron = mkPron "she" "her" "her" "hers" singular P3 feminine ;
|
||||
so_AdA = mkAdA "so" ;
|
||||
somebody_NP = regNP "somebody" singular ;
|
||||
someSg_Det = mkDeterminer singular "some" ;
|
||||
somePl_Det = mkDeterminer plural "some" ;
|
||||
something_NP = regNP "something" singular ;
|
||||
somewhere_Adv = mkAdv "somewhere" ;
|
||||
that_Quant = mkQuant "that" "those" ;
|
||||
there_Adv = ss "there" ;
|
||||
there7to_Adv = ss "there" ;
|
||||
there7from_Adv = ss ["from there"] ;
|
||||
there_Adv = mkAdv "there" ;
|
||||
there7to_Adv = mkAdv "there" ;
|
||||
there7from_Adv = mkAdv ["from there"] ;
|
||||
therefore_PConj = ss "therefore" ;
|
||||
they_Pron = mkPron "they" "them" "their" "theirs" Pl P3 Masc ; ----
|
||||
they_Pron = mkPron "they" "them" "their" "theirs" plural P3 human ;
|
||||
this_Quant = mkQuant "this" "these" ;
|
||||
through_Prep = P.mkPrep "through" ;
|
||||
too_AdA = ss "too" ;
|
||||
to_Prep = P.mkPrep "to" ;
|
||||
under_Prep = P.mkPrep "under" ;
|
||||
very_AdA = ss "very" ;
|
||||
want_VV = P.mkVV (P.regV "want") ;
|
||||
we_Pron = mkPron "we" "us" "our" "ours" Pl P1 Masc ;
|
||||
whatPl_IP = mkIP "what" "what" "what's" Pl ;
|
||||
whatSg_IP = mkIP "what" "what" "what's" Sg ;
|
||||
through_Prep = mkPrep "through" ;
|
||||
too_AdA = mkAdA "too" ;
|
||||
to_Prep = mkPrep "to" ;
|
||||
under_Prep = mkPrep "under" ;
|
||||
very_AdA = mkAdA "very" ;
|
||||
want_VV = mkVV (regV "want") ;
|
||||
we_Pron = mkPron "we" "us" "our" "ours" plural P1 human ;
|
||||
whatPl_IP = mkIP "what" "what" "what's" plural ;
|
||||
whatSg_IP = mkIP "what" "what" "what's" singular ;
|
||||
when_IAdv = ss "when" ;
|
||||
when_Subj = ss "when" ;
|
||||
where_IAdv = ss "where" ;
|
||||
which_IQuant = {s = \\_ => "which"} ;
|
||||
---b whichPl_IDet = mkDeterminer Pl ["which"] ;
|
||||
---b whichSg_IDet = mkDeterminer Sg ["which"] ;
|
||||
whoPl_IP = mkIP "who" "whom" "whose" Pl ;
|
||||
whoSg_IP = mkIP "who" "whom" "whose" Sg ;
|
||||
---b whichPl_IDet = mkDeterminer plural ["which"] ;
|
||||
---b whichSg_IDet = mkDeterminer singular ["which"] ;
|
||||
whoPl_IP = mkIP "who" "whom" "whose" plural ;
|
||||
whoSg_IP = mkIP "who" "whom" "whose" singular ;
|
||||
why_IAdv = ss "why" ;
|
||||
without_Prep = P.mkPrep "without" ;
|
||||
with_Prep = P.mkPrep "with" ;
|
||||
without_Prep = mkPrep "without" ;
|
||||
with_Prep = mkPrep "with" ;
|
||||
---b yes_Phr = ss "yes" ;
|
||||
yes_Utt = ss "yes" ;
|
||||
youSg_Pron = mkPron "you" "you" "your" "yours" Sg P2 Masc ;
|
||||
youPl_Pron = mkPron "you" "you" "your" "yours" Pl P2 Masc ;
|
||||
youPol_Pron = mkPron "you" "you" "your" "yours" Sg P2 Masc ;
|
||||
youSg_Pron = mkPron "you" "you" "your" "yours" singular P2 human ;
|
||||
youPl_Pron = mkPron "you" "you" "your" "yours" plural P2 human ;
|
||||
youPol_Pron = mkPron "you" "you" "your" "yours" singular P2 human ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user