mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-13 23:09:31 -06:00
verb subcat patterns
This commit is contained in:
@@ -11,7 +11,9 @@ abstract Adverb = Cat ** {
|
||||
AdAdv : AdA -> Adv -> Adv ;
|
||||
|
||||
SubjS : Subj -> S -> Adv ;
|
||||
AdvSC : SC -> Adv ;
|
||||
|
||||
AdnCAdv : CAdv -> AdN ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
abstract Basic = Cat ** {
|
||||
fun
|
||||
airplane_N : N ;
|
||||
-- answer_V2S : V2S ;
|
||||
answer_V2S : V2 ;
|
||||
apartment_N : N ;
|
||||
apple_N : N ;
|
||||
art_N : N ;
|
||||
-- ask_V2Q : V2Q ;
|
||||
ask_V2Q : V2 ;
|
||||
baby_N : N ;
|
||||
bad_A : A ;
|
||||
bank_N : N ;
|
||||
beautiful_A : A ;
|
||||
-- become_VA : VA ;
|
||||
become_VA : VA ;
|
||||
beer_N : N ;
|
||||
-- beg_V2V : V2V ;
|
||||
beg_V2V : V2 ;
|
||||
big_A : A ;
|
||||
bike_N : N ;
|
||||
bird_N : N ;
|
||||
@@ -58,7 +58,7 @@ abstract Basic = Cat ** {
|
||||
dog_N : N ;
|
||||
door_N : N ;
|
||||
drink_V2 : V2 ;
|
||||
-- easy_A2V : A2V ;
|
||||
easy_A2V : A2 ;
|
||||
eat_V2 : V2 ;
|
||||
enemy_N : N ;
|
||||
empty_A : A ;
|
||||
@@ -72,7 +72,7 @@ abstract Basic = Cat ** {
|
||||
fridge_N : N ;
|
||||
friend_N : N ;
|
||||
fruit_N : N ;
|
||||
-- fun_AV : AV ;
|
||||
fun_AV : A ;
|
||||
garden_N : N ;
|
||||
girl_N : N ;
|
||||
glove_N : N ;
|
||||
@@ -121,7 +121,7 @@ abstract Basic = Cat ** {
|
||||
oil_N : N ;
|
||||
old_A : A ;
|
||||
open_V2 : V2 ;
|
||||
-- paint_V2A : V2A ;
|
||||
paint_V2A : V2A ;
|
||||
paper_N : N ;
|
||||
peace_N : N ;
|
||||
pen_N : N ;
|
||||
@@ -130,10 +130,10 @@ abstract Basic = Cat ** {
|
||||
play_V2 : V2 ;
|
||||
policeman_N : N ;
|
||||
priest_N : N ;
|
||||
-- probable_AS : AS ;
|
||||
probable_AS : A ;
|
||||
queen_N : N ;
|
||||
radio_N : N ;
|
||||
-- rain_V0 : V0 ;
|
||||
rain_V0 : V ;
|
||||
read_V2 : V2 ;
|
||||
red_A : A ;
|
||||
religion_N : N ;
|
||||
|
||||
@@ -22,12 +22,18 @@ abstract Cat = {
|
||||
V ;
|
||||
V2 ;
|
||||
V3 ;
|
||||
|
||||
VV ;
|
||||
VS ;
|
||||
VQ ;
|
||||
|
||||
VA ;
|
||||
V2A ;
|
||||
|
||||
AP ;
|
||||
|
||||
Comp ;
|
||||
SC ;
|
||||
|
||||
A ;
|
||||
A2 ;
|
||||
|
||||
@@ -2,13 +2,14 @@ abstract Sentence = Cat ** {
|
||||
|
||||
fun
|
||||
|
||||
PredVP : NP -> VP -> Cl ;
|
||||
PredVP : NP -> VP -> Cl ;
|
||||
PredSCVP : SC -> VP -> Cl ;
|
||||
|
||||
ImpVP : VP -> Imp ;
|
||||
ImpVP : VP -> Imp ;
|
||||
|
||||
SlashV2 : NP -> V2 -> Slash ;
|
||||
SlashVVV2 : NP -> VV -> V2 -> Slash ;
|
||||
AdvSlash : Slash -> Adv -> Slash ;
|
||||
SlashPrep : Cl -> Prep -> Slash ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -4,24 +4,33 @@ abstract Verb = Cat ** {
|
||||
UseV : V -> VP ;
|
||||
ComplV2 : V2 -> NP -> VP ;
|
||||
ComplV3 : V3 -> NP -> NP -> VP ;
|
||||
|
||||
ComplVV : VV -> VP -> VP ;
|
||||
ComplVS : VS -> S -> VP ;
|
||||
ComplVQ : VQ -> QS -> VP ;
|
||||
|
||||
ReflV2 : V2 -> VP ;
|
||||
PassV2 : V2 -> Comp ; --- overgen (V2 with prep)
|
||||
ComplVA : VA -> AP -> VP ;
|
||||
ComplV2A : V2A -> NP -> AP -> VP ;
|
||||
|
||||
ReflV2 : V2 -> VP ;
|
||||
PassV2 : V2 -> Comp ; --- overgen (V2 with prep)
|
||||
|
||||
UseComp : Comp -> VP ;
|
||||
|
||||
AdvVP : VP -> Adv -> VP ; -- here
|
||||
AdVVP : AdV -> VP -> VP ; -- always
|
||||
|
||||
UseVV : VV -> V2 ;
|
||||
UseVQ : VQ -> V2 ;
|
||||
UseVS : VS -> V2 ;
|
||||
|
||||
CompAP : AP -> Comp ;
|
||||
CompNP : NP -> Comp ;
|
||||
CompAdv : Adv -> Comp ;
|
||||
|
||||
UseVV : VV -> V2 ;
|
||||
UseVQ : VQ -> V2 ;
|
||||
UseVS : VS -> V2 ;
|
||||
|
||||
EmbedS : S -> SC ;
|
||||
EmbedQS : QS -> SC ;
|
||||
EmbedVP : VP -> SC ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ concrete AdverbEng of Adverb = CatEng ** open ResEng, Prelude in {
|
||||
AdAdv = cc2 ;
|
||||
|
||||
SubjS = cc2 ;
|
||||
AdvSC s = s ;
|
||||
|
||||
AdnCAdv cadv = {s = cadv.s ++ "than"} ;
|
||||
|
||||
|
||||
@@ -8,18 +8,18 @@ flags
|
||||
|
||||
lin
|
||||
airplane_N = regN "airplane" ;
|
||||
-- answer_V2S = mkV2S (regV "answer") "to" ;
|
||||
answer_V2S = mkV2S (regV "answer") "to" ;
|
||||
apartment_N = regN "apartment" ;
|
||||
apple_N = regN "apple" ;
|
||||
art_N = regN "art" ;
|
||||
-- ask_V2Q = mkV2Q (regV "ask") [] ;
|
||||
ask_V2Q = mkV2Q (regV "ask") [] ;
|
||||
baby_N = regN "baby" ;
|
||||
bad_A = regADeg "bad" ;
|
||||
bank_N = regN "bank" ;
|
||||
beautiful_A = regADeg "beautiful" ;
|
||||
-- become_VA = mkVA (irregV "become" "became" "become") ;
|
||||
become_VA = mkVA (irregV "become" "became" "become") ;
|
||||
beer_N = regN "beer" ;
|
||||
-- beg_V2V = mkV2V (regDuplV "beg") [] "to" ;
|
||||
beg_V2V = mkV2V (regDuplV "beg") [] "to" ;
|
||||
big_A = regADeg "big" ;
|
||||
bike_N = regN "bike" ;
|
||||
bird_N = regN "bird" ;
|
||||
@@ -65,7 +65,7 @@ lin
|
||||
dog_N = regN "dog" ;
|
||||
door_N = regN "door" ;
|
||||
drink_V2 = dirV2 (irregV "drink" "drank" "drunk") ;
|
||||
-- easy_A2V = mkA2V (regA "easy") "for" ;
|
||||
easy_A2V = mkA2V (regA "easy") "for" ;
|
||||
eat_V2 = dirV2 (irregV "eat" "ate" "eaten") ;
|
||||
empty_A = regADeg "empty" ;
|
||||
enemy_N = regN "enemy" ;
|
||||
@@ -79,7 +79,7 @@ lin
|
||||
fridge_N = regN "fridge" ;
|
||||
friend_N = regN "friend" ;
|
||||
fruit_N = regN "fruit" ;
|
||||
-- fun_AV = mkAV (regA "fun") ;
|
||||
fun_AV = mkAV (regA "fun") ;
|
||||
garden_N = regN "garden" ;
|
||||
girl_N = regN "girl" ;
|
||||
glove_N = regN "glove" ;
|
||||
@@ -128,7 +128,7 @@ lin
|
||||
oil_N = regN "oil" ;
|
||||
old_A = regADeg "old" ;
|
||||
open_V2 = dirV2 (regV "open") ;
|
||||
-- paint_V2A = mkV2A (regV "paint") [] ;
|
||||
paint_V2A = mkV2A (regV "paint") [] ;
|
||||
paper_N = regN "paper" ;
|
||||
peace_N = regN "peace" ;
|
||||
pen_N = regN "pen" ;
|
||||
@@ -137,10 +137,10 @@ lin
|
||||
play_V2 = dirV2 (regV "play") ;
|
||||
policeman_N = regN "policeman" ;
|
||||
priest_N = regN "priest" ;
|
||||
-- probable_AS = mkAS (regA "probable") ;
|
||||
probable_AS = mkAS (regA "probable") ;
|
||||
queen_N = regN "queen" ;
|
||||
radio_N = regN "radio" ;
|
||||
-- rain_V0 = mkV0 (regV "rain") ;
|
||||
rain_V0 = mkV0 (regV "rain") ;
|
||||
read_V2 = dirV2 (irregV "read" "read" "read") ;
|
||||
red_A = regADeg "red" ;
|
||||
religion_N = regN "religion" ;
|
||||
|
||||
@@ -20,13 +20,15 @@ concrete CatEng of Cat = open ResEng, Prelude, (R = ParamX) in {
|
||||
s2 : Agr => Str
|
||||
} ;
|
||||
|
||||
V, VS, VQ = Verb ; -- = {s : VForm => Str} ;
|
||||
V2, VV = Verb ** {c2 : Str} ;
|
||||
V, VS, VQ, VA = Verb ; -- = {s : VForm => Str} ;
|
||||
V2, VV, V2A = Verb ** {c2 : Str} ;
|
||||
V3 = Verb ** {c2, c3 : Str} ;
|
||||
|
||||
AP = {s : Agr => Str ; isPre : Bool} ;
|
||||
Comp = {s : Agr => Str} ;
|
||||
|
||||
SC = {s : Str} ;
|
||||
|
||||
A = {s : AForm => Str} ;
|
||||
A2 = {s : AForm => Str ; c2 : Str} ;
|
||||
|
||||
|
||||
@@ -258,8 +258,6 @@ oper
|
||||
-- Verbs and adjectives can take complements such as sentences,
|
||||
-- questions, verb phrases, and adjectives.
|
||||
|
||||
V0, V2S, V2V, VA, V2A, V2Q : Type ; ----
|
||||
|
||||
mkV0 : V -> V0 ;
|
||||
mkVS : V -> VS ;
|
||||
mkV2S : V -> Str -> V2S ;
|
||||
@@ -270,13 +268,19 @@ oper
|
||||
mkVQ : V -> VQ ;
|
||||
mkV2Q : V -> Str -> V2Q ;
|
||||
|
||||
AS, A2S, AV, A2V : Type ; ----
|
||||
|
||||
mkAS : A -> AS ;
|
||||
mkA2S : A -> Str -> A2S ;
|
||||
mkAV : A -> AV ;
|
||||
mkA2V : A -> Str -> A2V ;
|
||||
|
||||
-- Notice: categories $V2S, V2V, V2A, V2Q$ are in v 1.0 treated
|
||||
-- just as synonyms of $V2$, and the second argument is given
|
||||
-- as an adverb. Likewise $AS, A2S, AV, A2V$ are just $A$.
|
||||
-- $V0$ is just $V$.
|
||||
|
||||
V0, V2S, V2V, V2A, V2Q : Type ;
|
||||
AS, A2S, AV, A2V : Type ;
|
||||
|
||||
|
||||
--2 Definitions of paradigms
|
||||
--
|
||||
@@ -431,18 +435,21 @@ oper
|
||||
mkVV v = v ** {c2 = "to" ; lock_VV = <>} ;
|
||||
mkVQ v = v ** {lock_VQ = <>} ;
|
||||
|
||||
{-
|
||||
mkV0 v = v ** {lock_V0 = <>} ;
|
||||
mkV2S v p = mkV2 v p ** {lock_V2S = <>} ;
|
||||
mkV2V v p t = mkV2 v p ** {s4 = t ; lock_V2V = <>} ;
|
||||
V0 : Type = V ;
|
||||
V2S, V2V, V2Q, V2A : Type = V2 ;
|
||||
AS, A2S, AV : Type = A ;
|
||||
A2V : Type = A2 ;
|
||||
|
||||
mkV0 v = v ** {lock_V = <>} ;
|
||||
mkV2S v p = mkV2 v p ** {lock_V2 = <>} ;
|
||||
mkV2V v p t = mkV2 v p ** {s4 = t ; lock_V2 = <>} ;
|
||||
mkVA v = v ** {lock_VA = <>} ;
|
||||
mkV2A v p = mkV2 v p ** {lock_V2A = <>} ;
|
||||
mkV2Q v p = mkV2 v p ** {lock_V2Q = <>} ;
|
||||
mkV2Q v p = mkV2 v p ** {lock_V2 = <>} ;
|
||||
|
||||
mkAS v = v ** {lock_AS = <>} ;
|
||||
mkA2S v p = mkA2 v p ** {lock_A2S = <>} ;
|
||||
mkAV v = v ** {lock_AV = <>} ;
|
||||
mkA2V v p = mkA2 v p ** {lock_A2V = <>} ;
|
||||
-}
|
||||
mkAS v = v ** {lock_A = <>} ;
|
||||
mkA2S v p = mkA2 v p ** {lock_A = <>} ;
|
||||
mkAV v = v ** {lock_A = <>} ;
|
||||
mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -17,6 +17,20 @@ concrete SentenceEng of Sentence = CatEng ** open ResEng in {
|
||||
}
|
||||
} ;
|
||||
|
||||
PredSCVP sc vp = {
|
||||
s = \\t,a,b,o =>
|
||||
let
|
||||
agr = (agrP3 Sg).a ;
|
||||
verb = vp.s ! t ! a ! b ! o ! agr ;
|
||||
subj = sc.s ;
|
||||
compl = vp.s2 ! agr
|
||||
in
|
||||
case o of {
|
||||
ODir => subj ++ verb.fin ++ verb.inf ++ compl ;
|
||||
OQuest => verb.fin ++ subj ++ verb.inf ++ compl
|
||||
}
|
||||
} ;
|
||||
|
||||
ImpVP vp = {
|
||||
s = \\pol,n =>
|
||||
let
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
--# -path=.:prelude
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
concrete TestEng of Test =
|
||||
NounEng,
|
||||
|
||||
@@ -7,10 +7,15 @@ concrete VerbEng of Verb = CatEng ** open ResEng in {
|
||||
ComplV2 v np = insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v) ;
|
||||
ComplV3 v np np2 =
|
||||
insertObj (\\_ => v.c2 ++ np.s ! Acc ++ v.c3 ++ np2.s ! Acc) (predV v) ;
|
||||
|
||||
ComplVV v vp = insertObj (\\a => v.c2 ++ infVP vp a) (predV v) ;
|
||||
ComplVS v s = insertObj (\\_ => conjThat ++ s.s) (predV v) ;
|
||||
ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ;
|
||||
|
||||
ComplVA v ap = insertObj (ap.s) (predV v) ;
|
||||
ComplV2A v np ap =
|
||||
insertObj (\\_ => v.c2 ++ np.s ! Acc ++ ap.s ! np.a) (predV v) ;
|
||||
|
||||
UseComp comp = insertObj comp.s (predAux auxBe) ;
|
||||
|
||||
AdvVP vp adv = insertObj (\\_ => adv.s) vp ;
|
||||
@@ -26,4 +31,8 @@ concrete VerbEng of Verb = CatEng ** open ResEng in {
|
||||
CompNP np = {s = \\_ => np.s ! Acc} ;
|
||||
CompAdv a = {s = \\_ => a.s} ;
|
||||
|
||||
EmbedS s = {s = conjThat ++ s.s} ;
|
||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||
EmbedVP vp = {s = infVP vp (agrP3 Sg).a} ; --- agr
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user