--1 Extensions of core RGL syntax (the Grammar module) -- This module defines syntax rules that are not yet implemented in all -- languages, and perhaps never implementable either. But all rules are given -- a default implementation in common/ExtendFunctor.gf so that they can be included -- in the library API. The default implementations are meant to be overridden in each -- xxxxx/ExtendXxx.gf when the work proceeds. -- -- This module is aimed to replace the original Extra.gf, which is kept alive just -- for backwardcommon compatibility. It will also replace translator/Extensions.gf -- and thus eliminate the often duplicated work in those two modules. -- -- (c) Aarne Ranta 2017-08-20 under LGPL and BSD concrete ExtendLat of Extend = CatLat ** open ResLat in { lin -- GenNP : NP -> Quant ; -- this man's GenNP np = { s = \\_ => combineNounPhrase np ! PronNonDrop ! APostN ! DPreN ! Gen ; sp = \\_ => ""} ; -- GenIP : IP -> IQuant ; -- whose -- GenRP : Num -> CN -> RP ; -- whose car -- -- In case the first two are not available, the following applications should in any case be. -- GenModNP : Num -> NP -> CN -> NP ; -- this man's car(s) -- GenModIP : Num -> IP -> CN -> IP ; -- whose car(s) -- CompBareCN : CN -> Comp ; -- (is) teacher -- StrandQuestSlash : IP -> ClSlash -> QCl ; -- whom does John live with -- StrandRelSlash : RP -> ClSlash -> RCl ; -- that he lives in -- EmptyRelSlash : ClSlash -> RCl ; -- he lives in -- -- $VP$ conjunction, separate categories for finite and infinitive forms (VPS and VPI, respectively) -- -- covering both in the same category leads to spurious VPI parses because VPS depends on many more tenses -- cat -- VPS ; -- finite VP's with tense and polarity -- [VPS] {2} ; -- VPI ; -- [VPI] {2} ; -- infinitive VP's (TODO: with anteriority and polarity) -- fun -- MkVPS : Temp -> Pol -> VP -> VPS ; -- hasn't slept -- ConjVPS : Conj -> [VPS] -> VPS ; -- has walked and won't sleep -- PredVPS : NP -> VPS -> S ; -- she [has walked and won't sleep] -- MkVPI : VP -> VPI ; -- to sleep (TODO: Ant and Pol) -- ConjVPI : Conj -> [VPI] -> VPI ; -- to sleep and to walk -- ComplVPIVV : VV -> VPI -> VP ; -- must sleep and walk -- -- the same for VPSlash, taking a complement with shared V2 verbs -- cat -- VPS2 ; -- have loved (binary version of VPS) -- [VPS2] {2} ; -- has loved, hates" -- VPI2 ; -- to love (binary version of VPI) -- [VPI2] {2} ; -- to love, to hate -- fun -- MkVPS2 : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved -- ConjVPS2 : Conj -> [VPS2] -> VPS2 ; -- has loved and now hates -- ComplVPS2 : VPS2 -> NP -> VPS ; -- has loved and now hates that person -- MkVPI2 : VPSlash -> VPI2 ; -- to love -- ConjVPI2 : Conj -> [VPI2] -> VPI2 ; -- to love and hate -- ComplVPI2 : VPI2 -> NP -> VPI ; -- to love and hate that person -- fun -- ProDrop : Pron -> Pron ; -- unstressed subject pronoun becomes empty: "am tired" -- ICompAP : AP -> IComp ; -- "how old" -- IAdvAdv : Adv -> IAdv ; -- "how often" -- CompIQuant : IQuant -> IComp ; -- which (is it) [agreement to NP] -- PrepCN : Prep -> CN -> Adv ; -- by accident [Prep + CN without article] -- -- fronted/focal constructions, only for main clauses -- fun -- FocusObj : NP -> SSlash -> Utt ; -- her I love -- FocusAdv : Adv -> S -> Utt ; -- today I will sleep -- FocusAdV : AdV -> S -> Utt ; -- never will I sleep -- FocusAP : AP -> NP -> Utt ; -- green was the tree -- -- participle constructions -- PresPartAP : VP -> AP ; -- (the man) looking at Mary -- EmbedPresPart : VP -> SC ; -- looking at Mary (is fun) -- PastPartAP : VPSlash -> AP ; -- lost (opportunity) ; (opportunity) lost in space PastPartAP vp = { s = \\ag => vp.part ! VPassPerf ! ag ++ vp.adv ++ vp.c.s} ; -- TODO -- PastPartAgentAP : VPSlash -> NP -> AP ; -- (opportunity) lost by the company -- -- this is a generalization of Verb.PassV2 and should replace it in the future. -- PassVPSlash : VPSlash -> VP ; -- be forced to sleep PassVPSlash vp = vp ** { s = \\a => case a of { VAct _ t n p => vp.pass ! VPass t n p } ; } ; -- -- the form with an agent may result in a different linearization -- -- from an adverbial modification by an agent phrase. -- PassAgentVPSlash : VPSlash -> NP -> VP ; -- be begged by her to go -- -- publishing of the document -- NominalizeVPSlashNP : VPSlash -> NP -> NP ; -- -- counterpart to ProgrVP, for VPSlash -- ProgrVPSlash : VPSlash -> VPSlash; -- -- existential for mathematics -- ExistsNP : NP -> Cl ; -- there exists a number / there exist numbers -- -- existentials with a/no variation -- ExistCN : CN -> Cl ; -- there is a car / there is no car -- ExistMassCN : CN -> Cl ; -- there is beer / there is no beer -- ExistPluralCN : CN -> Cl ; -- there are trees / there are no trees -- -- generalisation of existential, with adverb as a parameter -- AdvIsNP : Adv -> NP -> Cl ; -- here is the tree / here are the trees -- AdvIsNPAP : Adv -> NP -> AP -> Cl ; -- here are the instructions documented -- -- infinitive for purpose AR 21/8/2013 -- PurposeVP : VP -> Adv ; -- to become happy -- -- object S without "that" -- ComplBareVS : VS -> S -> VP ; -- say she runs -- SlashBareV2S : V2S -> S -> VPSlash ; -- answer (to him) it is good -- ComplDirectVS : VS -> Utt -> VP ; -- say: "today" -- ComplDirectVQ : VQ -> Utt -> VP ; -- ask: "when" -- -- front the extraposed part -- FrontComplDirectVS : NP -> VS -> Utt -> Cl ; -- "I am here", she said -- FrontComplDirectVQ : NP -> VQ -> Utt -> Cl ; -- "where", she asked -- -- proper structure of "it is AP to VP" -- PredAPVP : AP -> VP -> Cl ; -- it is good to walk -- -- to use an AP as CN or NP without CN -- AdjAsCN : AP -> CN ; -- a green one ; en grön (Swe) -- AdjAsNP : AP -> NP ; -- green (is good) AdjAsNP ap = { s = \\_,c => ap.s ! (Ag Neutr Sg c) ; adv = "" ; det = { s, sp = \\_ => "" } ; g = Neutr ; n = Sg ; p = P3 ; postap = { s = \\_ => "" } ; preap = { s = \\_ => "" } ; } ; -- -- infinitive complement for IAdv -- PredIAdvVP : IAdv -> VP -> QCl ; -- how to walk? -- -- alternative to EmbedQS. For English, EmbedQS happens to work, -- -- because "what" introduces question and relative. The default linearization -- -- could be e.g. "the thing we did (was fun)". -- EmbedSSlash : SSlash -> SC ; -- what we did (was fun) -- -- reflexive noun phrases: a generalization of Verb.ReflVP, which covers just reflexive pronouns -- -- This is necessary in languages like Swedish, which have special reflexive possessives. -- -- However, it is also needed in application grammars that want to treat "brush one's teeth" as a one-place predicate. -- cat -- RNP ; -- reflexive noun phrase, e.g. "my family and myself" -- RNPList ; -- list of reflexives to be coordinated, e.g. "my family, myself, everyone" -- -- Notice that it is enough for one NP in RNPList to be RNP. -- fun -- ReflRNP : VPSlash -> RNP -> VP ; -- love my family and myself -- ReflPron : RNP ; -- myself -- ReflPoss : Num -> CN -> RNP ; -- my car(s) -- PredetRNP : Predet -> RNP -> RNP ; -- all my brothers -- ConjRNP : Conj -> RNPList -> RNP ; -- my family, John and myself -- Base_rr_RNP : RNP -> RNP -> RNPList ; -- my family, myself -- Base_nr_RNP : NP -> RNP -> RNPList ; -- John, myself -- Base_rn_RNP : RNP -> NP -> RNPList ; -- myself, John -- Cons_rr_RNP : RNP -> RNPList -> RNPList ; -- my family, myself, John -- Cons_nr_RNP : NP -> RNPList -> RNPList ; -- John, my family, myself -- ---- Cons_rn_RNP : RNP -> ListNP -> RNPList ; -- myself, John, Mary -- --- from Extensions -- ComplGenVV : VV -> Ant -> Pol -> VP -> VP ; -- want not to have slept -- ---- SlashV2V : V2V -> Ant -> Pol -> VPS -> VPSlash ; -- force (her) not to have slept -- CompoundN : N -> N -> N ; -- control system / controls system / control-system -- CompoundAP : N -> A -> AP ; -- language independent / language-independent -- GerundCN : VP -> CN ; -- publishing of the document (can get a determiner) -- GerundNP : VP -> NP ; -- publishing the document (by nature definite) -- GerundAdv : VP -> Adv ; -- publishing the document (prepositionless adverb) -- WithoutVP : VP -> Adv ; -- without publishing the document -- ByVP : VP -> Adv ; -- by publishing the document -- InOrderToVP : VP -> Adv ; -- (in order) to publish the document -- ApposNP : NP -> NP -> NP ; -- Mr Macron, the president of France, -- AdAdV : AdA -> AdV -> AdV ; -- almost always -- UttAdV : AdV -> Utt ; -- always(!) -- PositAdVAdj : A -> AdV ; -- (that she) positively (sleeps) -- CompS : S -> Comp ; -- (the fact is) that she sleeps -- CompQS : QS -> Comp ; -- (the question is) who sleeps -- CompVP : Ant -> Pol -> VP -> Comp ; -- (she is) to go -- -- very language-specific things -- -- Eng -- UncontractedNeg : Pol ; -- do not, etc, as opposed to don't -- UttVPShort : VP -> Utt ; -- have fun, as opposed to "to have fun" -- ComplSlashPartLast : VPSlash -> NP -> VP ; -- set it apart, as opposed to "set apart it" -- -- Romance -- DetNPMasc : Det -> NP ; -- DetNPFem : Det -> NP ; -- UseComp_estar : Comp -> VP ; -- (Cat, Spa, Por) "está cheio" instead of "é cheio" -- SubjRelNP : NP -> RS -> NP ; -- Force RS in subjunctive: lo que les *resulte* mejor -- iFem_Pron : Pron ; -- I (Fem) -- youFem_Pron : Pron ; -- you (Fem) -- weFem_Pron : Pron ; -- we (Fem) -- youPlFem_Pron : Pron ; -- you plural (Fem) -- theyFem_Pron : Pron ; -- they (Fem) -- youPolFem_Pron : Pron ; -- you polite (Fem) -- youPolPl_Pron : Pron ; -- you polite plural (Masc) -- youPolPlFem_Pron : Pron ; -- you polite plural (Fem) -- -- German -- UttAccNP : NP -> Utt ; -- him (accusative) -- UttDatNP : NP -> Utt ; -- him (dative) -- UttAccIP : IP -> Utt ; -- whom (accusative) -- UttDatIP : IP -> Utt ; -- whom (dative) }