From 375a4fba7a79481c6153cbab731be33806ea0254 Mon Sep 17 00:00:00 2001 From: aarne Date: Wed, 9 Feb 2005 14:45:48 +0000 Subject: [PATCH] aux and slash --- lib/resource/abstract/Rules.gf | 26 +- lib/resource/english/CategoriesEng.gf | 2 +- lib/resource/english/ClauseEng.gf | 4 +- lib/resource/english/MorphoEng.gf | 64 ++++- lib/resource/english/OldParadigmsEng.gf | 3 +- lib/resource/english/ParadigmsEng.gf | 2 +- lib/resource/english/RulesEng.gf | 15 +- lib/resource/english/StructuralEng.gf | 2 +- lib/resource/english/SyntaxEng.gf | 295 ++++++++++++----------- lib/resource/english/TypesEng.gf | 9 +- lib/resource/scandinavian/RulesScand.gf | 3 +- lib/resource/scandinavian/SyntaxScand.gf | 15 +- 12 files changed, 250 insertions(+), 190 deletions(-) diff --git a/lib/resource/abstract/Rules.gf b/lib/resource/abstract/Rules.gf index ab2c9ea99..ad03f035a 100644 --- a/lib/resource/abstract/Rules.gf +++ b/lib/resource/abstract/Rules.gf @@ -64,17 +64,15 @@ fun -- module $Verbphrase$ (deep $VP$ nesting) and its alternative, -- $Clause$ (shallow many-place predication structure). - PredAS : AS -> S -> Cl ; -- "it is good that he comes" - PredV0 : V0 -> Cl ; -- "it is raining" + PredAS : AS -> S -> Cl ; -- "it is good that he comes" + PredV0 : V0 -> Cl ; -- "it is raining" -- Partial saturation. - UseV2 : V2 -> V ; -- "loves" - ComplV3 : V3 -> NP -> V2 ; -- "prefers wine (to beer)" + UseV2 : V2 -> V ; -- "loves" + ComplV3 : V3 -> NP -> V2 ; -- "prefers wine (to beer)" - ComplA2S : A2S -> NP -> AS ; -- "good for John" - - TransVV2 : VV -> V2 -> V2 ; -- (which song do you) want to play + ComplA2S : A2S -> NP -> AS ; -- "good for John" UseV2V : V2V -> VV ; UseV2S : V2S -> VS ; @@ -118,13 +116,15 @@ fun --3 Sentences and relative clauses -- - SlashV2 : NP -> V2 -> Slash ; -- "John doesn't love" + SlashV2 : NP -> V2 -> Slash ; -- "(whom) John doesn't love" + SlashVV2 : NP -> VV -> V2 -> Slash ; -- "(which song do you) want to play" + SlashAdv : Cl -> Prep -> Slash ; -- "(whom) John walks with" - IdRP : RP ; -- "which" - FunRP : N2 -> RP -> RP ; -- "the successor of which" - RelSlash : RP -> Slash -> RCl ; -- "that I wait for"/"for which I wait" - ModRS : CN -> RS -> CN ; -- "man who walks" - RelCl : Cl -> RCl ; -- "such that it is even" + IdRP : RP ; -- "which" + FunRP : N2 -> RP -> RP ; -- "the successor of which" + RelSlash : RP -> Slash -> RCl ; -- "that I wait for"/"for which I wait" + ModRS : CN -> RS -> CN ; -- "man who walks" + RelCl : Cl -> RCl ; -- "such that it is even" --! --3 Questions and imperatives diff --git a/lib/resource/english/CategoriesEng.gf b/lib/resource/english/CategoriesEng.gf index 40f2bf09d..100e5963e 100644 --- a/lib/resource/english/CategoriesEng.gf +++ b/lib/resource/english/CategoriesEng.gf @@ -59,7 +59,7 @@ lincat -- = Verb ** {s3 : Preposition} ; V3 = TransVerb ** {s4 : Preposition} ; VS = Verb ; - VV = Verb ** {isAux : Bool} ; + VV = AuxVerb ** {isAux : Bool} ; VS = Verb ; VQ = Verb ; diff --git a/lib/resource/english/ClauseEng.gf b/lib/resource/english/ClauseEng.gf index 0eb3faa26..7ab5e9e60 100644 --- a/lib/resource/english/ClauseEng.gf +++ b/lib/resource/english/ClauseEng.gf @@ -12,7 +12,7 @@ concrete ClauseEng of Clause = CategoriesEng ** SPredV2 np v x = predVerbClause np v (complTransVerb v x) ; SPredReflV2 np v = predVerbClause np v (reflTransVerb v) ; SPredVS np v x = predVerbClause np v (complSentVerb v x) ; - SPredVV np v x = predVerbClause np v (complVerbVerb v x) ; + SPredVV np v x = predVerbClause np (aux2verb v) (complVerbVerb v x) ; SPredVQ np v x = predVerbClause np v (complQuestVerb v x) ; SPredVA np v x = predVerbClause np v (complAdjVerb v x) ; SPredV2A np v x y = predVerbClause np v (complDitransAdjVerb v x y) ; @@ -37,7 +37,7 @@ concrete ClauseEng of Clause = CategoriesEng ** QPredV2 np v x = intVerbClause np v (complTransVerb v x) ; QPredReflV2 np v = intVerbClause np v (reflTransVerb v) ; QPredVS np v x = intVerbClause np v (complSentVerb v x) ; - QPredVV np v x = intVerbClause np v (complVerbVerb v x) ; + QPredVV np v x = intVerbClause np (aux2verb v) (complVerbVerb v x) ; QPredVQ np v x = intVerbClause np v (complQuestVerb v x) ; QPredVA np v x = intVerbClause np v (complAdjVerb v x) ; QPredV2A np v x y = intVerbClause np v (complDitransAdjVerb v x y) ; diff --git a/lib/resource/english/MorphoEng.gf b/lib/resource/english/MorphoEng.gf index e3ec56d4c..5e6060c2d 100644 --- a/lib/resource/english/MorphoEng.gf +++ b/lib/resource/english/MorphoEng.gf @@ -178,9 +178,9 @@ oper mkVerbP3worst : (_,_,_,_,_: Str) -> VerbP3 = \go,goes,went,gone,going -> {s = table { InfImp => go ; - Indic P3 => goes ; + Indic Sg => goes ; Indic _ => go ; - Pastt _ => went ; + Pastt => went ; PPart => gone ; PresPart => going } @@ -246,22 +246,62 @@ oper verbP3Do = mkVerbP3 "do" "does" "did" "done" ; - verbBe : VerbP3 = {s = table { - InfImp => "be" ; - Indic P1 => "am" ; - Indic P2 => "are" ; - Indic P3 => "is" ; - Pastt Sg => "was" ; - Pastt Pl => "were" ; - PPart => "been" ; - PresPart => "being" - }} ; + auxVerbBe : AuxVerb = {s = table { + AInfImp => "be" ; + AIndic P1 b => if_then_Str b "am" ["am not"] ; + AIndic P2 b => negAux b "are" ; + AIndic P3 b => negAux b "is" ; + APastt Sg b => negAux b "was" ; + APastt Pl b => negAux b "were" ; + APPart => "been" ; + APresPart => "being" + } + } ; + +-- The negative forms are not used; +--- the particle $want.s1$ disappears - is it ever needed? + + verb2aux : Verb -> AuxVerb = \want -> {s = table { + AInfImp => want.s ! InfImp ; + AIndic P3 b => want.s ! Indic Sg ; + AIndic _ b => want.s ! Indic Pl ; + APastt _ b => want.s ! Pastt ; + APPart => want.s ! PPart ; + APresPart => want.s ! PresPart + } + } ; + + aux2verb : AuxVerb -> Verb = \want -> {s = table { + InfImp => want.s ! AInfImp ; + Indic Sg => want.s ! AIndic P3 True ; + Indic _ => want.s ! AIndic P2 True ; + Pastt => want.s ! APastt Pl True ; + PPart => want.s ! APPart ; + PresPart => want.s ! APresPart + } ; + s1 = [] + } ; + +-- The three most important example auxiliaries. + + mkVerbAux : (_,_,_,_: Str) -> AuxVerb = \beable, can, could, beenable -> + {s = table { + AInfImp => beable ; + AIndic _ b => negAux b can ; + APastt _ b => negAux b could ; + APPart => beenable ; + APrepPart => nonExist ---- fix! + } ; + } ; + verbPart : VerbP3 -> Particle -> Verb = \v,p -> v ** {s1 = p} ; verbNoPart : VerbP3 -> Verb = \v -> verbPart v [] ; + negAux : Bool -> Str -> Str = \b,is -> if_then_Str b is (is + "n't") ; + -- The optional negation contraction is a useful macro e.g. for "do". contractNot : Str -> Str = \is -> variants {is ++ "not" ; is + "n't"} ; diff --git a/lib/resource/english/OldParadigmsEng.gf b/lib/resource/english/OldParadigmsEng.gf index f06f02af5..7f15cdcf1 100644 --- a/lib/resource/english/OldParadigmsEng.gf +++ b/lib/resource/english/OldParadigmsEng.gf @@ -154,7 +154,7 @@ oper -- The verbs "be" and "have" are special. - vBe : V ; +---- vBe : V ; vHave : V ; -- Verbs with a particle. @@ -281,7 +281,6 @@ oper mkV2 = \v,p -> v ** {lock_V2 = <> ; s3 = p} ; tvPartReg = \get, along, to -> mkV2 (vPartReg get along) to ; - vBe = verbBe ** {s1 = [] ; lock_V = <>} ; vHave = verbP3Have ** {s1 = [] ; lock_V = <>} ; tvGen = \s,p -> mkV2 (vGen s) p ; diff --git a/lib/resource/english/ParadigmsEng.gf b/lib/resource/english/ParadigmsEng.gf index 3b4c906ab..c34c17ce4 100644 --- a/lib/resource/english/ParadigmsEng.gf +++ b/lib/resource/english/ParadigmsEng.gf @@ -403,7 +403,7 @@ oper mkV0 v = v ** {lock_V0 = <>} ; mkVS v = v ** {lock_VS = <>} ; mkV2S v p = mkV2 v p ** {lock_V2S = <>} ; - mkVV v = v ** {isAux = False ; lock_VV = <>} ; + mkVV v = verb2aux v ** {isAux = False ; lock_VV = <>} ; mkV2V v p t = mkV2 v p ** {s4 = t ; lock_V2V = <>} ; mkVA v = v ** {lock_VA = <>} ; mkV2A v p = mkV2 v p ** {lock_V2A = <>} ; diff --git a/lib/resource/english/RulesEng.gf b/lib/resource/english/RulesEng.gf index f7f3195d8..eb674273b 100644 --- a/lib/resource/english/RulesEng.gf +++ b/lib/resource/english/RulesEng.gf @@ -82,7 +82,6 @@ lin ComplA2S = predAdjSent2 ; - TransVV2 = transVerbVerb ; AdjPart = adjPastPart ; UseV2V x = x ** {isAux = False} ; @@ -120,6 +119,8 @@ lin -- SlashV2 = slashTransVerbCl ; + SlashVV2 = slashVerbVerb ; + SlashAdv cl p = slashAdverb cl p.s ; IdRP = identRelPron ; FunRP = funRelPron ; @@ -197,16 +198,12 @@ lin OneNP = nameNounPhrase (nameReg "one" human) ; - ExistCN A = predVerbClause + ExistCN A = predBeGroup (nameNounPhrase (nameReg "there" Neutr)) - (mkTransVerbDir verbBe) - (complTransVerb (mkTransVerbDir verbBe) - (indefNounPhrase singular A)) ; + (complNounPhrase (indefNounPhrase singular A)) ; ExistNumCN nu A = - predVerbClause + predBeGroup (nameNounPhrasePl (nameReg "there" Neutr)) - (mkTransVerbDir verbBe) - (complTransVerb (mkTransVerbDir verbBe) - (indefNounPhraseNum plural nu A)) ; + (complNounPhrase (indefNounPhraseNum plural nu A)) ; } ; diff --git a/lib/resource/english/StructuralEng.gf b/lib/resource/english/StructuralEng.gf index 6957c1ba1..7c446ae4c 100644 --- a/lib/resource/english/StructuralEng.gf +++ b/lib/resource/english/StructuralEng.gf @@ -79,7 +79,7 @@ concrete StructuralEng of Structural = to_Prep = ss "to" ; under_Prep = ss "under" ; very_Adv = ss "very" ; - want_VV = verbNoPart (regVerbP3 "want") ** {isAux = False} ; + want_VV = verb2aux (verbNoPart (regVerbP3 "want")) ** {isAux = False} ; we_NP = pronNounPhrase pronWe ; what8many_IP = intPronWhat plural ; what8one_IP = intPronWhat singular ; diff --git a/lib/resource/english/SyntaxEng.gf b/lib/resource/english/SyntaxEng.gf index ebe1841cc..b928fc582 100644 --- a/lib/resource/english/SyntaxEng.gf +++ b/lib/resource/english/SyntaxEng.gf @@ -408,22 +408,6 @@ oper } in negAux b has ; - auxBe : Bool -> Tense -> Agr -> Str = \b,t,a -> - let is = - case t of { - Present => case a of { - ASgP3 _ => "is" ; - ASgP1 => "am" ; - _ => "are" - } ; - Past => case a of { - ASgP3 _ => "was" ; - _ => "were" - } ; - _ => "be" --- never used - } - in negAux b is ; ---- amn't - auxTense : Bool -> Tense -> Agr -> Str = \b,t,a -> case t of { Present => negAux b (case a of { @@ -435,8 +419,6 @@ oper Conditional => negAux b "would" } ; - negAux : Bool -> Str -> Str = \b,is -> if_then_Str b is (is + "n't") ; - {- --vg useVerbGen : Bool -> Verb -> (Agr => Str) -> VerbGroup = \isAux,verb,arg -> let @@ -527,14 +509,6 @@ oper complAdverb : PrepPhrase -> Complement = \elsewhere -> (\\_ => elsewhere.s) ; -{- --- compiles to 25k lines gfr 3/2/2005 - predAdjSent : Adjective -> Sentence -> Clause = \bra,hansover -> - predVerbGroupClause - (pronNounPhrase pronIt) - (beGroup ( - \\n => bra.s ! AAdj ++ "that" ++ hansover.s)) ; --} - predAdjSent : Adjective -> Sentence -> Clause = \bra,hansover -> predBeGroup (pronNounPhrase pronIt) (\\n => bra.s ! AAdj ++ "that" ++ hansover.s) ; @@ -552,47 +526,6 @@ oper s1 = if_then_Str b [] "not" ; } ; - predBeGroup : NounPhrase -> Complement -> Clause = \itt,goo -> - let - it = itt.s ! NomP ; - good = goo ! itt.a ; - begood : Tense -> Str = \t -> case t of { - Present => good ; - Past => good ; - _ => "be" ++ good - } ; - beengood : Tense -> Str = \t -> case t of { - Future => "have" ++ "been" ++ good ; - Conditional => "have" ++ "been" ++ good ; - _ => "been" ++ good - } ; - has : Bool -> Tense -> Str = \b,t -> case t of { - Future => if_then_Str b "will" "won't" ; - Conditional => negAux b "would" ; - _ => auxHave b t itt.a - } ; - is : Bool -> Tense -> Str = \b,t -> case t of { - Future => if_then_Str b "will" "won't" ; - Conditional => negAux b "would" ; - _ => auxBe b t itt.a - } - in - {s = \\o,b,sf => - case sf of { - VFinite t Simul => case o of { - Dir => it ++ is b t ++ begood t ; - Inv => is b t ++ it ++ begood t - } ; - VFinite t Anter => case o of { - Dir => it ++ has b t ++ beengood t ; - Inv => has b t ++ it ++ beengood t - } ---- ; ---- VInfinit Simul => it ++ begood Future ; ---- VInfinit Anter => it ++ beengood Future ; ---- VPresPart => it ++ "being" ++ good - } - } ; predAdjSent2 : AdjCompl -> NounPhrase -> Adjective = \bra,han -> @@ -778,21 +711,42 @@ oper -- This applies to non-auxiliaries. - predVerbClause : NounPhrase -> Verb -> Complement -> Clause = \np,verb,comp -> + predVerbClause : NounPhrase -> Verb -> Complement -> Clause = \np,verb,comp -> + let nv = predVerbClauseGen np verb comp in + {s = table { + Dir => \\b,sf => let nvg = nv ! b ! sf in nvg.p1 ++ nvg.p2 ++ nvg.p3 ; + Inv => \\b,sf => let nvg = nv ! b ! sf in + case sf of { + VFinite t Simul => case b of { + True => auxTense b t np.a ++ nvg.p1 ++ (nv ! False ! sf).p3 ; + _ => nvg.p2 ++ nvg.p1 ++ nvg.p3 + } ; + _ => nvg.p2 ++ nvg.p1 ++ nvg.p3 + } + } + } ; + + predClauseGroup : Verb -> Complement -> VerbGroup = \verb,comp -> + let + nvg : Agr -> (Bool => SForm => (Str * Str * Str)) = + \ag -> predVerbClauseGen {s = \\_ => [] ; a = ag} verb comp + in + {s = \\b,f,a => (nvg a ! b ! f).p2 ; + s2 = \\b,f,a => (nvg a ! b ! f).p3 ; + isAux = False ---- + } ; + + predVerbClauseGen : NounPhrase -> Verb -> Complement -> (Bool => + SForm => (Str * Str * Str)) = \np,verb,comp -> let it = np.s ! NomP ; agr = np.a ; - itgoes : Order -> Str -> Str -> Str = \o,x,y -> case o of { - Dir => it ++ x ++ y ; - Inv => x ++ it ++ y - } ; - goes : Tense -> Str = \t -> verb.s ! case of { - => Indic P1 ; - => Indic P3 ; - => Indic P2 ; - => Pastt Pl ; - => Pastt Sg ; - _ => Pastt Pl --- Future doesn't matter + goes : Tense -> Str = \t -> verb.s ! case t of { + Present => case agr of { + ASgP3 _ => Indic Sg ; + _ => Indic Pl + } ; + _ => Pastt --- Future doesn't matter } ; off = comp ! agr ; go = verb.s ! InfImp ++ off ; @@ -801,59 +755,102 @@ oper have = "have" ; has : Bool -> Tense -> Str = \b,t -> auxHave b t agr ; does : Bool -> Tense -> Str = \b,t -> auxTense b t agr - in - {s = \\o,b,sf => - let - neg = if_then_Str b [] "not" ; - in - case sf of { + in + \\b => table { VFinite Present Simul => case b of { - True => case o of { - Dir => it ++ goes Present ++ off ; - Inv => does b Present ++ it ++ go - } ; - False => itgoes o (does b Present) go + True => ; + ---- does b Present ++ it ++ go + False => } ; VFinite Past Simul => case b of { - True => case o of { - Dir => it ++ goes Past ++ off ; - Inv => does b Past ++ it ++ go - } ; - False => itgoes o (does b Past) go + True => ; + ---- does b Present ++ it ++ go + False => } ; - VFinite t Simul => itgoes o (does b t) go ; - VFinite Present Anter => itgoes o (has b Present) gone ; - VFinite Past Anter => itgoes o (has b Past) gone ; - VFinite t Anter => itgoes o (does b t) (have ++ gone) + VFinite t Simul => ; + VFinite Present Anter => ; + VFinite Past Anter => ; + VFinite t Anter => --- ; --- VInfinit Simul => it ++ neg ++ go ; --- VInfinit Anter => it ++ neg ++ (have ++ gone) ; --- VPresPart => it ++ neg ++ going - } } ; -{- --vg - predVerbGroupClause : NounPhrase -> VerbGroup -> Clause = - \yo,dosleep -> { - s = \\o,b,c => - let - a = yo.a ; - you = yo.s ! NomP ; - do = dosleep.s ! b ! c ! a ; - sleeps = dosleep.s2 ! b ! c ! a ; - does = auxTense b Present a ; - did = auxTense b Past a ; - sleep = dosleep.s2 ! False ! c ! a - in - case o of { - Dir => you ++ do ++ sleeps ; - Inv => case of { - => does ++ you ++ sleep ; - => did ++ you ++ sleep ; - _ => do ++ you ++ sleeps - } + +-- This is for auxiliaries. + + predBeGroup : NounPhrase -> Complement -> Clause = \np,comp -> + let nv = predAuxClauseGen np auxVerbBe comp in + {s = table { + Dir => \\b,sf => let nvg = nv ! b ! sf in nvg.p1 ++ nvg.p2 ++ nvg.p3 ; + Inv => \\b,sf => let nvg = nv ! b ! sf in nvg.p2 ++ nvg.p1 ++ nvg.p3 + } + } ; + +{- --- + predClauseGroup : Verb -> Complement -> VerbGroup = \verb,comp -> + let + nvg : Agr -> (Bool => SForm => (Str * Str * Str)) = + \ag -> predVerbClauseGen {s = \\_ => [] ; a = ag} verb comp + in + {s = \\b,f,a => (nvg a ! b ! f).p2 ; + s2 = \\b,f,a => (nvg a ! b ! f).p3 ; + isAux = True + } ; +-} + + predAuxClauseGen : NounPhrase -> AuxVerb -> Complement -> + (Bool => SForm => (Str * Str * Str)) = \np,verb,comp -> + let + it = np.s ! NomP ; + ita = np.a ; + been = verb.s ! APPart ; + good = comp ! ita ; + begood : Tense -> Str = \t -> case t of { + Present => good ; + Past => good ; + _ => verb.s ! AInfImp ++ good + } ; + beengood : Tense -> Str = \t -> case t of { + Future => "have" ++ been ++ good ; + Conditional => "have" ++ been ++ good ; + _ => been ++ good + } ; + has : Bool -> Tense -> Str = \b,t -> case t of { + Future => if_then_Str b "will" "won't" ; + Conditional => negAux b "would" ; + _ => auxHave b t ita + } ; + is : Bool -> Tense -> Str = \b,t -> case t of { + Future => if_then_Str b "will" "won't" ; + Conditional => negAux b "would" ; + _ => auxVerbForm verb b t ita } + in + \\b => + table { + VFinite t Simul => ; + VFinite t Anter => +--- VInfinit Simul => it ++ begood Future ; +--- VInfinit Anter => it ++ beengood Future ; +--- VPresPart => it ++ "being" ++ good } ; --- vg -} + + auxVerbForm : AuxVerb -> Bool -> Tense -> Agr -> Str = \verb,b,t,a -> + case t of { + Present => case a of { + ASgP3 _ => verb.s ! AIndic P3 b ; + ASgP1 => verb.s ! AIndic P1 b ; + _ => verb.s ! AIndic P2 b + } ; + Past => case a of { + ASgP3 _ => verb.s ! APastt Sg b ; + _ => verb.s ! APastt Pl b + } ; + _ => verb.s ! AInfImp --- never used + } ; + + --3 Sentence-complement verbs -- @@ -891,7 +888,7 @@ oper -- the construction can be iterated, and the corresponding complication -- in the parameter structure. - VerbVerb : Type = Verb ** {isAux : Bool} ; + VerbVerb : Type = AuxVerb ** {isAux : Bool} ; -- To generate "can walk"/"can't walk"; "tries to walk"/"does not try to walk": -- The contraction of "not" is not provided, since it would require changing @@ -906,26 +903,13 @@ oper in ---- if_then_else VerbGroup taux ---- (useVerbAux try torun) - (mkComp try torun) ; - --- The three most important example auxiliaries. - - mkVerbAux : (_,_,_,_: Str) -> VerbVerb = \beable, can, could, beenable -> - {s = table { - InfImp => beable ; - Indic _ => can ; - Pastt _ => could ; - PPart => beenable ; - PrepPart => nonExist ---- fix! - } ; - s1 = [] ; - isAux = True - } ; + (mkComp (aux2verb try) torun) ; ---- ---- Problem: "to" in non-present tenses comes to wrong place. +--- The real problem is that these are *not* auxiliaries in all tenses. - vvCan : VerbVerb = mkVerbAux ["be able to"] "can" "could" ["been able to"] ; - vvMust : VerbVerb = mkVerbAux ["have to"] "must" ["had to"] ["had to"] ; + vvCan : VerbVerb = mkVerbAux ["be able to"] "can" "could" ["been able to"] ** {isAux = True} ; + vvMust : VerbVerb = mkVerbAux ["have to"] "must" ["had to"] ["had to"] ** {isAux = True} ; -- Notice agreement to object vs. subject: @@ -942,13 +926,6 @@ oper (simma.s ! VIInfinit ! a) ) ; - transVerbVerb : VerbVerb -> TransVerb -> TransVerb = \vilja,hitta -> - {s = vilja.s ; - s1 = vilja.s1 ++ if_then_Str vilja.isAux [] "to" ++ - hitta.s ! InfImp ++ hitta.s1 ; - s3 = hitta.s3 - } ; - complVerbAdj : Adjective -> VerbPhrase -> Complement = \grei, simma -> (\\a => grei.s ! AAdj ++ simma.s1 ++ @@ -996,6 +973,32 @@ oper s2 = lookat.s3 } ; +--- this does not give negative or anterior forms + + slashVerbVerb : NounPhrase -> VerbVerb -> TransVerb -> ClauseSlashNounPhrase = + \you,want,lookat -> + let youlookat = (predVerbClause you (aux2verb want) + (complVerbVerb want (predVerbI True {s = [] ; a = Simul} lookat + (complVerb lookat)))).s + in + {s = table { + DirQ => youlookat ! Inv ; + IndirQ => youlookat ! Dir + } ; + s2 = lookat.s3 + } ; + + slashAdverb : Clause -> Preposition -> ClauseSlashNounPhrase = + \youwalk,by -> + {s = table { + DirQ => youwalk.s ! Inv ; + IndirQ => youwalk.s ! Dir + } ; + s2 = by + } ; + + + --2 Relative pronouns and relative clauses -- diff --git a/lib/resource/english/TypesEng.gf b/lib/resource/english/TypesEng.gf index fbe91ab3e..867945595 100644 --- a/lib/resource/english/TypesEng.gf +++ b/lib/resource/english/TypesEng.gf @@ -63,7 +63,12 @@ oper -- in the singular; plural forms are uniformly equal to the 2nd person singular. param - VForm = InfImp | Indic Person | Pastt Number | PPart | PresPart ; + VForm = InfImp | Indic Number | Pastt | PPart | PresPart ; + +-- This is for auxiliary verbs, which have special negated indicative forms. + + AuxVerbForm = AInfImp | AIndic Person Bool | APastt Number Bool | APPart | APresPart ; + oper VerbP3 : Type = {s : VForm => Str} ; @@ -73,6 +78,8 @@ oper Particle : Type = Str ; Verb = VerbP3 ** {s1 : Particle} ; + AuxVerb = {s : AuxVerbForm => Str} ; + -- --3 Pronouns -- diff --git a/lib/resource/scandinavian/RulesScand.gf b/lib/resource/scandinavian/RulesScand.gf index 1b44d951d..c1e4467b5 100644 --- a/lib/resource/scandinavian/RulesScand.gf +++ b/lib/resource/scandinavian/RulesScand.gf @@ -61,7 +61,6 @@ lin ComplA2S = predAdjSent2 ; - TransVV2 = transVerbVerb ; AdjPart = adjPastPart ; UseV2V x = x ; @@ -102,6 +101,8 @@ lin -- SlashV2 = slashTransVerb ; + SlashVV2 = slashVerbVerb ; + SlashAdv cl p = slashAdverb cl p.s ; IdRP = identRelPron ; FunRP = funRelPron ; diff --git a/lib/resource/scandinavian/SyntaxScand.gf b/lib/resource/scandinavian/SyntaxScand.gf index 65b13836c..608b1d717 100644 --- a/lib/resource/scandinavian/SyntaxScand.gf +++ b/lib/resource/scandinavian/SyntaxScand.gf @@ -918,7 +918,20 @@ oper slashTransVerb : NounPhrase -> TransVerb -> ClauseSlashNounPhrase = \jag, se -> predVerbGroupClause jag (useVerb se (\\_,_,_ => se.s1)) ** {s2 = se.s2} ; - + + --- this does not give negative or anterior forms + + slashVerbVerb : NounPhrase -> VerbVerb -> TransVerb -> ClauseSlashNounPhrase = + \jag,vilja,se -> + predVerbGroupClause jag (useVerb vilja (\\g,n,p => + vilja.s1 ++ + vilja.s3 ++ + se.s ! VI (Inf Act)) + ) ** {s2 = se.s2} ; + + slashAdverb : Clause -> Preposition -> ClauseSlashNounPhrase = + \youwalk,by -> youwalk ** {s2 = by} ; + --2 Relative pronouns and relative clauses -- -- Relative pronouns can be nominative, accusative, or genitive, and