From eb361d894159e87ce35cfe93577044003afb4c83 Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 2 Dec 2005 13:58:36 +0000 Subject: [PATCH] verb subcat patterns --- lib/resource-1.0/abstract/Adverb.gf | 2 ++ lib/resource-1.0/abstract/Basic.gf | 18 ++++++------ lib/resource-1.0/abstract/Cat.gf | 6 ++++ lib/resource-1.0/abstract/Sentence.gf | 7 +++-- lib/resource-1.0/abstract/Verb.gf | 21 ++++++++++---- lib/resource-1.0/english/AdverbEng.gf | 1 + lib/resource-1.0/english/BasicEng.gf | 18 ++++++------ lib/resource-1.0/english/CatEng.gf | 6 ++-- lib/resource-1.0/english/ParadigmsEng.gf | 35 ++++++++++++++---------- lib/resource-1.0/english/SentenceEng.gf | 14 ++++++++++ lib/resource-1.0/english/TestEng.gf | 2 +- lib/resource-1.0/english/VerbEng.gf | 9 ++++++ 12 files changed, 95 insertions(+), 44 deletions(-) diff --git a/lib/resource-1.0/abstract/Adverb.gf b/lib/resource-1.0/abstract/Adverb.gf index ac3c2fee6..ead353f6a 100644 --- a/lib/resource-1.0/abstract/Adverb.gf +++ b/lib/resource-1.0/abstract/Adverb.gf @@ -11,7 +11,9 @@ abstract Adverb = Cat ** { AdAdv : AdA -> Adv -> Adv ; SubjS : Subj -> S -> Adv ; + AdvSC : SC -> Adv ; AdnCAdv : CAdv -> AdN ; + } diff --git a/lib/resource-1.0/abstract/Basic.gf b/lib/resource-1.0/abstract/Basic.gf index a0f4caa77..c4c7b6edb 100644 --- a/lib/resource-1.0/abstract/Basic.gf +++ b/lib/resource-1.0/abstract/Basic.gf @@ -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 ; diff --git a/lib/resource-1.0/abstract/Cat.gf b/lib/resource-1.0/abstract/Cat.gf index 46705d793..f68f79b10 100644 --- a/lib/resource-1.0/abstract/Cat.gf +++ b/lib/resource-1.0/abstract/Cat.gf @@ -22,12 +22,18 @@ abstract Cat = { V ; V2 ; V3 ; + VV ; VS ; VQ ; + VA ; + V2A ; + AP ; + Comp ; + SC ; A ; A2 ; diff --git a/lib/resource-1.0/abstract/Sentence.gf b/lib/resource-1.0/abstract/Sentence.gf index 4bfdf0c1b..f2571cc81 100644 --- a/lib/resource-1.0/abstract/Sentence.gf +++ b/lib/resource-1.0/abstract/Sentence.gf @@ -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 ; + } - diff --git a/lib/resource-1.0/abstract/Verb.gf b/lib/resource-1.0/abstract/Verb.gf index 67fded275..69539097d 100644 --- a/lib/resource-1.0/abstract/Verb.gf +++ b/lib/resource-1.0/abstract/Verb.gf @@ -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 ; + + } diff --git a/lib/resource-1.0/english/AdverbEng.gf b/lib/resource-1.0/english/AdverbEng.gf index e1d6f6bdf..ebcb3e810 100644 --- a/lib/resource-1.0/english/AdverbEng.gf +++ b/lib/resource-1.0/english/AdverbEng.gf @@ -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"} ; diff --git a/lib/resource-1.0/english/BasicEng.gf b/lib/resource-1.0/english/BasicEng.gf index b8f1540e7..300cd6936 100644 --- a/lib/resource-1.0/english/BasicEng.gf +++ b/lib/resource-1.0/english/BasicEng.gf @@ -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" ; diff --git a/lib/resource-1.0/english/CatEng.gf b/lib/resource-1.0/english/CatEng.gf index 0610e5cbc..663315ae7 100644 --- a/lib/resource-1.0/english/CatEng.gf +++ b/lib/resource-1.0/english/CatEng.gf @@ -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} ; diff --git a/lib/resource-1.0/english/ParadigmsEng.gf b/lib/resource-1.0/english/ParadigmsEng.gf index 68814b497..c2e95d097 100644 --- a/lib/resource-1.0/english/ParadigmsEng.gf +++ b/lib/resource-1.0/english/ParadigmsEng.gf @@ -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 = <>} ; } ; diff --git a/lib/resource-1.0/english/SentenceEng.gf b/lib/resource-1.0/english/SentenceEng.gf index 57e508f7c..66b197d60 100644 --- a/lib/resource-1.0/english/SentenceEng.gf +++ b/lib/resource-1.0/english/SentenceEng.gf @@ -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 diff --git a/lib/resource-1.0/english/TestEng.gf b/lib/resource-1.0/english/TestEng.gf index 769c227bc..b23c0a0c3 100644 --- a/lib/resource-1.0/english/TestEng.gf +++ b/lib/resource-1.0/english/TestEng.gf @@ -1,4 +1,4 @@ ---# -path=.:prelude +--# -path=.:../abstract:../common:prelude concrete TestEng of Test = NounEng, diff --git a/lib/resource-1.0/english/VerbEng.gf b/lib/resource-1.0/english/VerbEng.gf index 0f99ea1ea..db7e18ca3 100644 --- a/lib/resource-1.0/english/VerbEng.gf +++ b/lib/resource-1.0/english/VerbEng.gf @@ -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 + }