1
0
forked from GitHub/gf-core

ParadigmsEng: more overloaded version of mkA2, mkV2, mkV3, mkN2. Added mkSubj.

This commit is contained in:
bjorn
2008-10-31 10:19:44 +00:00
parent a18c8d67df
commit 70ddf9cd91

View File

@@ -97,15 +97,14 @@ oper
--3 Relational nouns
--
-- Relational nouns ("daughter of x") need a preposition.
mkN2 : N -> Prep -> N2 ;
-- The most common preposition is "of", and the following is a
-- shortcut for regular relational nouns with "of".
regN2 : Str -> N2 ;
mkN2 : overload {
mkN2 : N -> Prep -> N2 ; -- access to
mkN2 : N -> Str -> N2 ; -- access to
mkN2 : Str -> Str -> N2 ; -- access to
mkN2 : N -> N2 ; -- wife of
mkN2 : Str -> N2 -- daughter of
} ;
-- Use the function $mkPrep$ or see the section on prepositions below to
-- form other prepositions.
@@ -159,11 +158,14 @@ oper
--3 Two-place adjectives
--
-- Two-place adjectives need a preposition for their second argument.
mkA2 : A -> Prep -> A2 ;
mkA2 : overload {
mkA2 : A -> Prep -> A2 ; -- absent from
mkA2 : A -> Str -> A2 ; -- absent from
mkA2 : Str -> Prep -> A2 ; -- absent from
mkA2 : Str -> Str -> A2 -- absent from
} ;
--2 Adverbs
@@ -248,7 +250,8 @@ oper
mkV2 : overload {
mkV2 : Str -> V2 ; -- kill
mkV2 : V -> V2 ; -- hit
mkV2 : V -> Prep -> V2 -- believe in
mkV2 : V -> Prep -> V2 ; -- believe in
mkV2 : V -> Str -> V2 -- believe in
};
--3 Three-place verbs
@@ -256,9 +259,12 @@ oper
-- Three-place (ditransitive) verbs need two prepositions, of which
-- the first one or both can be absent.
mkV3 : V -> Prep -> Prep -> V3 ; -- speak, with, about
dirV3 : V -> Prep -> V3 ; -- give,_,to
dirdirV3 : V -> V3 ; -- give,_,_
mkV3 : overload {
mkV3 : V -> Prep -> Prep -> V3 ; -- speak, with, about
mkV3 : V -> Prep -> V3 ; -- give,_,to
mkV3 : V -> Str -> V3 ; -- give,_,to
mkV3 : V -> V3 ; -- give,_,_
};
--3 Other complement patterns
--
@@ -286,6 +292,10 @@ oper
V0 : Type ;
AS, A2S, AV, A2V : Type ;
--2 Other categories
mkSubj : Str -> Subj = \s -> {s = s ; lock_Subj = <>} ;
--.
--2 Definitions of paradigms
--
@@ -347,8 +357,17 @@ oper
mkPN : N -> PN = nounPN
} ;
mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ;
regN2 n = mkN2 (regN n) (mkPrep "of") ;
mkN2 = overload {
mkN2 : N -> Prep -> N2 = prepN2 ;
mkN2 : N -> Str -> N2 = \n,s -> prepN2 n (mkPrep s);
mkN2 : Str -> Str -> N2 = \n,s -> prepN2 (regN n) (mkPrep s);
mkN2 : N -> N2 = \n -> prepN2 n (mkPrep "of") ;
mkN2 : Str -> N2 = \s -> prepN2 (regN s) (mkPrep "of")
} ;
prepN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ;
regN2 n = prepN2 (regN n) (mkPrep "of") ;
mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ;
--3 Relational common noun phrases
@@ -375,7 +394,7 @@ oper
_ => regADeg a
} ** {lock_A = <>} ;
mkA2 a p = a ** {c2 = p.s ; lock_A2 = <>} ;
prepA2 a p = a ** {c2 = p.s ; lock_A2 = <>} ;
ADeg = A ; ----
@@ -463,8 +482,8 @@ oper
prepV2 v p = v ** {s = v.s ; s1 = v.s1 ; c2 = p.s ; lock_V2 = <>} ;
dirV2 v = prepV2 v noPrep ;
mkV3 v p q = v ** {s = v.s ; s1 = v.s1 ; c2 = p.s ; c3 = q.s ; lock_V3 = <>} ;
dirV3 v p = mkV3 v noPrep p ;
prepPrepV3 v p q = v ** {s = v.s ; s1 = v.s1 ; c2 = p.s ; c3 = q.s ; lock_V3 = <>} ;
dirV3 v p = prepPrepV3 v noPrep p ;
dirdirV3 v = dirV3 v noPrep ;
mkVS v = v ** {lock_VS = <>} ;
@@ -487,9 +506,9 @@ oper
mkV2Q v p = prepV2 v p ** {lock_V2Q = <>} ;
mkAS v = v ** {lock_A = <>} ;
mkA2S v p = mkA2 v p ** {lock_A = <>} ;
mkA2S v p = prepA2 v p ** {lock_A = <>} ;
mkAV v = v ** {lock_A = <>} ;
mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
mkA2V v p = prepA2 v p ** {lock_A2 = <>} ;
-- pre-overload API and overload definitions
@@ -508,6 +527,14 @@ oper
mkN : Str -> N -> N = compoundN
} ;
-- Relational nouns ("daughter of x") need a preposition.
prepN2 : N -> Prep -> N2 ;
-- The most common preposition is "of", and the following is a
-- shortcut for regular relational nouns with "of".
regN2 : Str -> N2 ;
mk2A : (free,freely : Str) -> A ;
regA : Str -> A ;
@@ -525,6 +552,15 @@ oper
let ad = (a.s ! AAdj Posit)
in regADeg ad ;
prepA2 : A -> Prep -> A2 ;
mkA2 = overload {
mkA2 : A -> Prep -> A2 = prepA2 ;
mkA2 : A -> Str -> A2 = \a,p -> prepA2 a (mkPrep p) ;
mkA2 : Str -> Prep -> A2 = \a,p -> prepA2 (regA a) p;
mkA2 : Str -> Str -> A2 = \a,p -> prepA2 (regA a) (mkPrep p);
} ;
mk5V : (go, goes, went, gone, going : Str) -> V ;
regV : (cry : Str) -> V ;
reg2V : (stop, stopped : Str) -> V;
@@ -548,11 +584,22 @@ oper
dirV2 : V -> V2 ;
mkV2 = overload {
mkV2 : V -> V2 = dirV2 ;
mkV2 : Str -> V2 = \s -> dirV2 (regV s) ;
mkV2 : V -> Prep -> V2 = prepV2;
mkV2 : V -> V2 = dirV2
mkV2 : V -> Prep -> V2 = prepV2 ;
mkV2 : V -> Str -> V2 = \v,p -> prepV2 v (mkPrep p)
};
prepPrepV3 : V -> Prep -> Prep -> V3 ;
dirV3 : V -> Prep -> V3 ;
dirdirV3 : V -> V3 ;
mkV3 = overload {
mkV3 : V -> Prep -> Prep -> V3 = prepPrepV3 ;
mkV3 : V -> Prep -> V3 = dirV3 ;
mkV3 : V -> Str -> V3 = \v,s -> dirV3 v (mkPrep s);
mkV3 : V -> V3 = dirdirV3
} ;
---- obsolete