diff --git a/next-lib/src/api/Constructors.gf b/next-lib/src/api/Constructors.gf index ed7b01560..3f29d4967 100644 --- a/next-lib/src/api/Constructors.gf +++ b/next-lib/src/api/Constructors.gf @@ -1631,7 +1631,7 @@ incomplete resource Constructors = open Grammar in { ComplV2 : V2 -> NP -> VP = \v,np -> ComplSlash (SlashV2a v) np ; ComplV2A : V2A -> NP -> AP -> VP = \v,np,ap -> ComplSlash (SlashV2A v ap) np ; - ComplV3 : V3 -> NP -> NP -> VP = \v,o,d -> ComplSlash (Slash2V3 v o) d ; + ComplV3 : V3 -> NP -> NP -> VP = \v,o,d -> ComplSlash (Slash3V3 v o) d ; that_NP : NP = DetNP (DetQuant that_Quant sgNum) ; this_NP : NP = DetNP (DetQuant this_Quant sgNum) ; diff --git a/next-lib/src/english/ParadigmsEng.gf b/next-lib/src/english/ParadigmsEng.gf index 9ce081457..14c2e6061 100644 --- a/next-lib/src/english/ParadigmsEng.gf +++ b/next-lib/src/english/ParadigmsEng.gf @@ -149,11 +149,12 @@ oper mkA : (good,better,best,well : Str) -> A } ; --- To force comparison to be formed by "more - most", --- the following function is used: - - compoundA : A -> A ; -- -/more/most ridiculous +-- Regular comparison is formed by "more - most" for words with two vowels separated +-- and terminated by some other letters. To force this or the opposite, +-- the following can be used: + compoundA : A -> A ; -- -/more/most ditto + simpleA : A -> A ; -- young,younger,youngest --3 Two-place adjectives @@ -240,8 +241,9 @@ oper -- (transitive verbs). Notice that a particle comes from the $V$. mkV2 : overload { - mkV2 : V -> Prep -> V2 ; -- believe in - mkV2 : V -> V2 -- kill + mkV2 : Str -> V2 ; -- kill + mkV2 : V -> V2 ; -- hit + mkV2 : V -> Prep -> V2 -- believe in }; --3 Three-place verbs @@ -355,7 +357,11 @@ oper nounPN n = {s = n.s ! singular ; g = n.g ; lock_PN = <>} ; mk2A a b = mkAdjective a a a b ** {lock_A = <>} ; - regA a = regADeg a ** {lock_A = <>} ; + regA a = case a of { + _ + ("a" | "e" | "i" | "o" | "u" | "y") + ? + _ + + ("a" | "e" | "i" | "o" | "u" | "y") + ? + _ => compoundADeg (regADeg a) ; + _ => regADeg a + } ** {lock_A = <>} ; mkA2 a p = a ** {c2 = p.s ; lock_A2 = <>} ; @@ -506,7 +512,9 @@ oper } ; compoundA = compoundADeg ; - + simpleA a = + let ad = (a.s ! AAdj Posit) + in regADeg ad ; mk5V : (go, goes, went, gone, going : Str) -> V ; regV : (cry : Str) -> V ; @@ -531,6 +539,7 @@ oper dirV2 : V -> V2 ; mkV2 = overload { + mkV2 : Str -> V2 = \s -> dirV2 (regV s) ; mkV2 : V -> Prep -> V2 = prepV2; mkV2 : V -> V2 = dirV2 };