diff --git a/lib/resource/doc/example/AnimalsFre.gf b/lib/resource/doc/example/AnimalsFre.gf index ace09a5c0..c76453383 100644 --- a/lib/resource/doc/example/AnimalsFre.gf +++ b/lib/resource/doc/example/AnimalsFre.gf @@ -1,17 +1,21 @@ --# -path=.:resource/french:resource/romance:resource/abstract:resource/../prelude -concrete AnimalsFre of Animals = open ResourceFre, ParadigmsFre, VerbsFre in { +concrete AnimalsFre of Animals = + open + --- ResourceFre, + RulesFre, StructuralFre, VerbphraseFre, + ParadigmsFre, VerbsFre in { lincat Phrase = Phr ; Animal = N ; Action = V2 ; lin Who act obj = QuestPhrase (UseQCl (PosTP TPresent ASimul) - (QPredV2 who8one_IP act (IndefNumNP NoNum (UseN obj)))) ; + (IntVP who8one_IP (ComplV2 act (IndefNumNP NoNum (UseN obj))))) ; Whom subj act = QuestPhrase (UseQCl (PosTP TPresent ASimul) (IntSlash who8one_IP (SlashV2 (DefOneNP (UseN subj)) act))) ; Answer subj act obj = IndicPhrase (UseCl (PosTP TPresent ASimul) - (SPredV2 (DefOneNP (UseN subj)) act (IndefNumNP NoNum (UseN obj)))) ; + (PredVP (DefOneNP (UseN subj)) (ComplV2 act (IndefNumNP NoNum (UseN obj))))) ; Dog = regN "chien" masculine ; Cat = regN "chat" masculine ; Mouse = regN "souris" feminine ; diff --git a/lib/resource/doc/gf-resource.html b/lib/resource/doc/gf-resource.html index 93ece7095..4f5204ec4 100644 --- a/lib/resource/doc/gf-resource.html +++ b/lib/resource/doc/gf-resource.html @@ -167,7 +167,10 @@ families, using the module system of GF.

These are not our success criteria

-Language coverage: you can parse all expressions. +Language coverage: you can parse all expressions. Example: +the French passé simple tense, although covered by the +morhology, is not used in the language-independent API, but +only the passé composé is.

diff --git a/lib/resource/english/SyntaxEng.gf b/lib/resource/english/SyntaxEng.gf index c2d15077f..19932e2a8 100644 --- a/lib/resource/english/SyntaxEng.gf +++ b/lib/resource/english/SyntaxEng.gf @@ -1122,8 +1122,6 @@ oper Question = {s : Bool => SForm => QuestForm => Str} ; QuestionSent = {s : QuestForm => Str} ; ---- TODO: questions in all tenses. - --3 Yes-no questions -- -- Yes-no questions are used both independently diff --git a/lib/resource/french/ParadigmsFre.gf b/lib/resource/french/ParadigmsFre.gf index 1fdb6e95f..041371808 100644 --- a/lib/resource/french/ParadigmsFre.gf +++ b/lib/resource/french/ParadigmsFre.gf @@ -315,19 +315,19 @@ oper mkV0 v = v ** {lock_V0 = <>} ; mkVS v = v ** {mn,mp = Ind ; lock_VS = <>} ; ---- more moods - mkV2S v p = mkV2 v p ** {lock_V2S = <>} ; + mkV2S v p = mkV2 v p ** {mn,mp = Ind ; lock_V2S = <>} ; mkVV v = v ** {c = accusative ; lock_VV = <>} ; deVV v = v ** {c = genitive.p1 ; lock_VV = <>} ; aVV v = v ** {c = dative.p1 ; lock_VV = <>} ; - mkV2V v p t = mkV2 v p ** {c3 = t.p1 ; lock_V2V = <>} ; + mkV2V v p t = mkV2 v p ** {c3 = t.p1 ; s3 = p.p2 ; lock_V2V = <>} ; mkVA v = v ** {lock_VA = <>} ; mkV2A v p = mkV2 v p ** {lock_V2A = <>} ; mkVQ v = v ** {lock_VQ = <>} ; mkV2Q v p = mkV2 v p ** {lock_V2Q = <>} ; mkAS v = v ** {mn,mp = Ind ; lock_AS = <>} ; ---- more moods - mkA2S v p = mkA2 v p ** {lock_A2S = <>} ; - mkAV v p = v ** {c = p.p1 ; lock_AV = <>} ; + mkA2S v p = mkA2 v p ** {mn,mp = Ind ; lock_A2S = <>} ; + mkAV v p = v ** {c = p.p1 ; s2 = p.p2 ; lock_AV = <>} ; mkA2V v p q = mkA2 v p ** {s3 = q.p2 ; c3 = q.p1 ; lock_A2V = <>} ; } ; diff --git a/lib/resource/french/SyntaxFre.gf b/lib/resource/french/SyntaxFre.gf index fa7754cb5..d8e1f0385 100644 --- a/lib/resource/french/SyntaxFre.gf +++ b/lib/resource/french/SyntaxFre.gf @@ -119,6 +119,11 @@ oper AEsse => verbEtre } ; + progressiveVerbPhrase : VerbPhrase -> VerbGroup = \vp -> + predClauseBeGroup + (complCopula (\\g,n,p => + "en" ++ "train" ++ elisDe ++ vp.s ! VIInfinit ! g ! n ! p)) ; + -- The "ne - pas" negation. posNeg = \b,v,c -> @@ -179,13 +184,6 @@ oper -- Questions {- ---- - questVerbPhrase = \jean,dort -> - {s = table { - DirQ => optStr (estCeQue Acc) ++ (predVerbPhrase jean dort).s ! Ind ; - IndirQ => elisSi ++ (predVerbPhrase jean dort).s ! Ind - } - } ; - existNounPhraseQuest = \duvin -> { s = \\m => case m of { @@ -194,22 +192,17 @@ oper } ++ duvin.s ! stressed accusative --- il y en a ; have to define "y" } ; - - intVerbPhrase = \qui, dormir -> - let dort = dormir.s ! qui.g ! VPF Simul (VFin presInd qui.n P3) - in - {s = table { - DirQ => qui.s ! Nom ++ optStr (estCeQue Nom) ++ dort ; - IndirQ => "ce" ++ qui.s ! Nom ++ dort - } - } ; - +-} intSlash = \Qui, Tuvois -> - let {qui = Tuvois.s2 ++ Qui.s ! Tuvois.c ; tuvois = Tuvois.s ! Ind} in - {s = table { - DirQ => qui ++ optStr (estCeQue Acc) ++ tuvois ; - IndirQ => ifCe Tuvois.c ++ qui ++ tuvois - } + {s = \\b,cl => + let + qui = Tuvois.s2 ++ Qui.s ! Tuvois.c ; + tuvois = Tuvois.s ! b ! cl + in + table { + DirQ => qui ++ optStr (estCeQue Acc) ++ tuvois ; + IndirQ => ifCe Tuvois.c ++ qui ++ tuvois + } } ; -- An auxiliary to distinguish between @@ -221,14 +214,6 @@ oper _ => [] } ; - questAdverbial = \quand, jean, dort -> - let {jeandort = (predVerbPhrase jean dort).s ! Ind} in - {s = table { - DirQ => quand.s ++ optStr (estCeQue Acc) ++ jeandort ; - IndirQ => quand.s ++ jeandort - } - } ; --} ----- moved from Morpho --2 Articles diff --git a/lib/resource/romance/CategoriesRomance.gf b/lib/resource/romance/CategoriesRomance.gf index a438d7279..6a47ce830 100644 --- a/lib/resource/romance/CategoriesRomance.gf +++ b/lib/resource/romance/CategoriesRomance.gf @@ -48,9 +48,9 @@ lincat ADeg = {s : Degree => AForm => Str ; p : Bool} ; AP = Adjective ; AS = Adjective ** {mp,mn : Mode} ; --- "more difficult for him to come than..." - A2S = Adjective ** {s2 : Preposition} ; - AV = Adjective ** {c : CaseA} ; - A2V = Adjective ** {s2 : Preposition} ; + A2S = Adjective ** {mp,mn : Mode ; c : CaseA ; s2 : Preposition} ; + AV = Adjective ** {c : CaseA ; s2 : Preposition} ; + A2V = Adjective ** {c : CaseA ; s2 : Preposition} ; V = Verb ; -- = {s : VF => Str} ; @@ -64,13 +64,13 @@ lincat VQ = Verb ; VA = Verb ; - V2S = TransVerb ; + V2S = TransVerb ** {mp,mn : Mode} ; V2Q = TransVerb ; - V2V = TransVerb ** {c3 : CaseA} ; + V2V = TransVerb ** {c3 : CaseA ; s3 : Preposition} ; V2A = TransVerb ; V0 = Verb ; - TP = {s : Str ; b : Bool ; t : Tense ; a : Anteriority} ; --- the Str field is dummy + TP = {s : Str ; b : Bool ; t : Tense ; a : Anteriority} ; --- s-field is dummy Tense = {s : Str ; t : Tense} ; Ant = {s : Str ; a : Anteriority} ; @@ -84,7 +84,7 @@ lincat -- = {s : Mode => Str} ; Cl = Clause ; -- = {s : Bool => ClForm => Str} ; - Slash = Sentence ** {s2 : Preposition ; c : CaseA} ; + Slash = Clause ** {s2 : Preposition ; c : CaseA} ; RP = {s : RelForm => Str ; g : RelGen} ; RS = {s : Mode => Gender => Number => Person => Str} ; diff --git a/lib/resource/romance/RulesRomance.gf b/lib/resource/romance/RulesRomance.gf index e45437d9e..86c9ccd14 100644 --- a/lib/resource/romance/RulesRomance.gf +++ b/lib/resource/romance/RulesRomance.gf @@ -45,14 +45,20 @@ lin UseV2 = transAsVerb ; --- Formation of infinitival phrases. + UseV2V x = x ** {isAux = False} ; + UseV2S x = x ; + UseV2Q x = x ; + UseA2S x = x ; + UseA2V x = x ; - UseCl tp cl = {s = \\o => tp.s ++ cl.s ! tp.b ! ClFinite tp.t tp.a o} ; -{- ---- +-- Formation of fixed-tense fixed-polarity clauses. + + UseCl tp cl = + {s = \\m => tp.s ++ cl.s ! tp.b ! useClForm tp.t tp.a m} ; UseRCl tp cl = - {s = \\gn,p => tp.s ++ cl.s ! tp.b ! VFinite tp.t tp.a ! gn ! p} ; - UseQCl tp cl = {s = \\q => tp.s ++ cl.s ! tp.b ! VFinite tp.t tp.a ! q} ; --} + {s = \\m,g,n,p => tp.s ++ cl.s ! tp.b ! useClForm tp.t tp.a m ! g ! n ! p} ; + UseQCl tp cl = + {s = \\q => tp.s ++ cl.s ! tp.b ! useClForm tp.t tp.a Ind ! q} ; PosTP t a = {s = t.s ++ a.s ; b = True ; t = t.t ; a = a.a} ; NegTP t a = {s = t.s ++ a.s ; b = False ; t = t.t ; a = a.a} ; @@ -77,23 +83,18 @@ lin AdvAP = advAdjPhrase ; AdvAdv = cc2 ; -{- --3 Sentences and relative clauses -- SlashV2 = slashTransVerb ; - SlashVV2 = slashVerbVerb ; - SlashAdv cl p = slashAdverb cl p.s ; - - --PosSlashV2 = slashTransVerb True ; - --NegSlashV2 = slashTransVerb False ; --} +---- SlashVV2 = slashVerbVerb ; +---- SlashAdv cl p = slashAdverb cl p.s ; IdRP = identRelPron ; FunRP = funRelPron ; ----- RelSlash = relSlash ; ----- ModRS = modRelClause ; ----- RelCl = relSuch ; + RelSlash = relSlash ; + ModRS = modRelClause ; + RelCl = relSuch ; --! --3 Questions and imperatives @@ -102,9 +103,9 @@ lin ---- IDetCN d n = detNounPhrase d n ; FunIP = funIntPron ; ----- QuestCl = questClause ; ----- IntSlash = intSlash ; ----- QuestAdv = questAdverbial ; + QuestCl = questClause ; + IntSlash = intSlash ; + QuestAdv = questAdverbial ; ---- PosImpVP = imperVerbPhrase True ; ---- NegImpVP = imperVerbPhrase False ; @@ -132,6 +133,11 @@ lin ConjNP = conjunctNounPhrase ; ConjDNP = conjunctDistrNounPhrase ; + TwoAdv = twoAdverb ; + ConsAdv = consAdverb ; + ConjAdv = conjunctAdverb ; + ConjDAdv = conjunctDistrAdverb ; + SubjS = subjunctSentence ; -- stack SubjImper = subjunctImperative ; SubjQS = subjunctQuestion ; diff --git a/lib/resource/romance/SyntaxRomance.gf b/lib/resource/romance/SyntaxRomance.gf index 62a4fa88e..0a4aee2d2 100644 --- a/lib/resource/romance/SyntaxRomance.gf +++ b/lib/resource/romance/SyntaxRomance.gf @@ -493,11 +493,20 @@ oper complAdverb : Adverb -> Complemnt = \dehors -> complCopula (\\_,_,_ => dehors.s) ; - complVerbAdj : (Adjective ** {c : CaseA}) -> VerbPhrase -> Complemnt = \facile,ouvrir -> + complVerbAdj : AdjCompl -> VerbPhrase -> Complemnt = \facile,ouvrir -> complCopula (\\g,n,p => - facile.s ! AF g n ++ prepCase facile.c ++ + facile.s ! AF g n ++ prepCase facile.c ++ facile.s2 ++ ouvrir.s ! VIInfinit ! g ! n ! p) ; + complVerbAdj2 : Bool -> AdjCompl -> NounPhrase -> VerbPhrase -> Complemnt = + \b,facile,lui,nager -> + complTransVerbGen (copula ** {c = dative ; s2=[]}) lui + (\\g,n,p => + facile.s ! AF g n ++ prepCase facile.c ++ facile.s2 ++ + nager.s ! VIInfinit ! g ! n ! p) ; ---- agr dep on b + + progressiveVerbPhrase : VerbPhrase -> VerbGroup ; + -- Passivization is like adjectival predication. passVerb : Verb -> Complemnt = \aimer -> @@ -670,10 +679,10 @@ oper -- as well as the position: "est toujours heureux" / "est heureux à Paris".) Adverb : Type = SS ; -{- - adVerbPhrase : VerbPhrase -> Adverb -> VerbPhrase = \chante, bien -> - {s = \\g,v => chante.s ! g ! v ++ bien.s} ; --} + + adVerbPhrase : VerbGroup -> Adverb -> VerbGroup = \chante, bien -> + {s = \\b,g,v => chante.s ! b ! g ! v ++ bien.s} ; + -- Adverbs are typically generated by prefixing prepositions. -- The rule for prepositional phrases also comprises the use of prepositions -- treated as cases. Therefore, both a preposition and a case are needed @@ -726,6 +735,14 @@ param ; oper + useClForm : Tense -> Anteriority -> Mode -> ClForm = + \t,a,m -> case t of { + Present => ClPres a m ; + Past => ClImperf a m ; --- no passé simple + Future => ClFut a ; ---- mode + Condit => ClCondit a + } ; + Clause = {s : Bool => ClForm => Str} ; ---- VIForm = VIInfinit | VIImperat Bool Number ; @@ -828,11 +845,25 @@ oper ----- let m = if_then_else Mode b croire.mp croire.mn embedConj ++ jeanboit.s ! croire.mp) ; - complQuestVerb : Verb -> Question -> Complemnt = \demander,sijeanboit -> + complDitransSentVerb : + (TransVerb ** {mp, mn : Mode}) -> NounPhrase -> Sentence -> Complemnt = + \dire,lui,jeanboit -> + complTransVerbGen + dire lui + (\\g,n,p => + embedConj ++ jeanboit.s ! dire.mp) ; + + complQuestVerb : Verb -> QuestionSent -> Complemnt = \demander,sijeanboit -> mkCompl demander (\\g,n,p => sijeanboit.s ! IndirQ) ; + complDitransQuestVerb : TransVerb -> NounPhrase -> QuestionSent -> Complemnt = + \dire,lui,jeanboit -> + complTransVerbGen + dire lui + (\\g,n,p => jeanboit.s ! IndirQ) ; + complAdjVerb : Verb -> AdjPhrase -> Complemnt = \sent,bon -> mkCompl sent (\\g,n,_ => bon.s ! AF g n) ; @@ -869,14 +900,12 @@ oper -- Notice that the slash category has the same relation to sentences as -- transitive verbs have to verbs: it's like a *sentence taking a complement*. - SentenceSlashNounPhrase = Sentence ** Complement ; + ClauseSlashNounPhrase = Clause ** Complement ; -{- ---- - slashTransVerb : Bool -> NounPhrase -> TransVerb -> SentenceSlashNounPhrase = - \b,jean,aimer -> - predVerbPhrase jean (predVerbGroup b (predVerb (verbOfTransVerb aimer))) ** + slashTransVerb : NounPhrase -> TransVerb -> ClauseSlashNounPhrase = + \jean,aimer -> + predVerbGroupClause jean (predClauseGroup aimer (complVerb aimer)) ** complementOfTransVerb aimer ; --} --2 Relative pronouns and relative clauses -- @@ -890,7 +919,9 @@ oper oper RelPron : Type = {s : RelFormA => Str ; g : RelGen} ; - RelClause : Type = {s : Mode => Gender => Number => Str} ; + + RelClause : Type = {s : Bool => ClForm => Gender => Number => Person => Str} ; + RelSentence : Type = {s : Mode => Gender => Number => Person => Str} ; mkGenRel : RelGen -> Gender -> Gender = \rg,g -> case rg of { RG gen => gen ; @@ -915,21 +946,22 @@ oper -- Relative clauses can be formed from both verb phrases ("qui dort") and -- slash expressions ("que je vois", "dont je parle"). -{- ----- - relVerbPhrase : RelPron -> VerbPhrase -> RelClause = \qui,dort -> - {s = \\m,g,n => - allRelForms qui g n nominative ++ dort.s ! g ! VPF Simul (VFin (VPres m) n P3) + + relVerbPhrase : RelPron -> VerbGroup -> RelClause = \qui,dort -> + {s = \\b,cl,g,n,p => + allRelForms qui g n nominative ++ dort.s ! b ! g ! cl2vp cl n p } ; --} - relSlash : RelPron -> SentenceSlashNounPhrase -> RelClause = \dont,jeparle -> - {s = \\m,g,n => jeparle.s2 ++ allRelForms dont g n jeparle.c ++ jeparle.s ! m + + relSlash : RelPron -> ClauseSlashNounPhrase -> RelClause = \dont,jeparle -> + {s = \\b,cl,g,n,p => + jeparle.s2 ++ allRelForms dont g n jeparle.c ++ jeparle.s ! b ! cl } ; -- A 'degenerate' relative clause is the one often used in mathematics, e.g. -- "nombre x tel que x soit pair". - relSuch : Sentence -> RelClause = \A -> - {s = \\m,g,n => suchPron g n ++ embedConj ++ A.s ! m + relSuch : Clause -> RelClause = \A -> + {s = \\b,cl,g,n,p => suchPron g n ++ embedConj ++ A.s ! b ! cl } ; suchPron : Gender -> Number -> Str ; @@ -942,8 +974,8 @@ oper -- ("je cherche un mec qui sache chanter") must have another structure -- (unless common noun phrases are given a mode parameter...). - modRelClause : CommNounPhrase -> RelClause -> CommNounPhrase = \mec,quidort -> - {s = \\n => mec.s ! n ++ quidort.s ! Ind ! mec.g ! n ; + modRelClause : CommNounPhrase -> RelSentence -> CommNounPhrase = \mec,quidort -> + {s = \\n => mec.s ! n ++ quidort.s ! Ind ! mec.g ! n ! P3 ; g = mec.g } ; @@ -990,7 +1022,7 @@ oper Utterance = SS ; indicUtt : Sentence -> Utterance = \x -> ss (x.s ! Ind ++ ".") ; - interrogUtt : Question -> Utterance = \x -> ss (x.s ! DirQ ++ "?") ; + interrogUtt : QuestionSent -> Utterance = \x -> ss (x.s ! DirQ ++ "?") ; --2 Questions -- @@ -1001,7 +1033,8 @@ param QuestForm = DirQ | IndirQ ; oper - Question = SS1 QuestForm ; + Question = {s : Bool => ClForm => QuestForm => Str} ; + QuestionSent = {s : QuestForm => Str} ; --3 Yes-no questions @@ -1017,6 +1050,13 @@ oper -- The leading "est-ce que" is recognized as a variant, and requires -- direct word order. + questClause : Clause -> Question = \cl -> + {s = \\b,c => table { + DirQ => cl.s ! b ! c ; + IndirQ => cl.s ! b ! c + } + } ; + ----- questVerbPhrase : NounPhrase -> VerbPhrase -> Question ; -- The existence question is treated separately. @@ -1030,9 +1070,10 @@ oper -- -- N.B. inversion variants and "est-ce que" are treated as above. ------ intVerbPhrase : IntPron -> VerbPhrase -> Question ; + intVerbPhrase : IntPron -> VerbGroup -> Question = \ip,vg -> + questClause (predVerbGroupClause (ip ** {p = P3 ; c = Clit0}) vg) ; - intSlash : IntPron -> SentenceSlashNounPhrase -> Question ; + intSlash : IntPron -> ClauseSlashNounPhrase -> Question ; --3 Interrogative adverbials @@ -1047,7 +1088,18 @@ oper IntAdverb = SS ; ------ questAdverbial : IntAdverb -> NounPhrase -> VerbPhrase -> Question ; + questAdverbial : IntAdverb -> Clause -> Question = + \quand, jeanDort -> + {s = \\b,cl => + let + jeandort = jeanDort.s ! b ! cl + in + table { + DirQ => quand.s ++ jeandort ; ---- est-ce que + IndirQ => quand.s ++ jeandort + } + } ; + --2 Imperatives @@ -1175,6 +1227,7 @@ oper {s = \\c => co.s1++ xs.s1 ! pform2case c ++ co.s2 ++ xs.s2 ! pform2case c} ** {n = conjNumber co.n xs.n ; g = xs.g ; p = xs.p ; c = Clit0} ; + -- We have to define a calculus of numbers of genders. For numbers, -- it is like the conjunction with $Pl$ corresponding to $False$. For genders, -- $Masc$ corresponds to $False$. @@ -1204,6 +1257,34 @@ oper <_,P1> => P1 ; _ => P2 } ; +--3 Coordinating adverbs +-- +-- We need a category of lists of adverbs. It is a discontinuous +-- category, the parts corresponding to 'init' and 'last' segments +-- (rather than 'head' and 'tail', because we have to keep track of the slot between +-- the last two elements of the list). A list has at least two elements. + + ListAdverb : Type = SD2 ; + + twoAdverb : (_,_ : Adverb) -> ListAdverb = CO.twoSS ; + + consAdverb : ListAdverb -> Adverb -> ListAdverb = + CO.consSS CO.comma ; + +-- To coordinate a list of adverbs by a simple conjunction, we place +-- it between the last two elements; commas are put in the other slots, + + conjunctAdverb : Conjunction -> ListAdverb -> Adverb = \c,xs -> + ss (CO.conjunctX c xs) ; + +-- To coordinate a list of adverbs by a distributed conjunction, we place +-- the first part (e.g. "either") in front of the first element, the second +-- part ("or") between the last two elements, and commas in the other slots. + + conjunctDistrAdverb : ConjunctionDistr -> ListAdverb -> Adverb = + \c,xs -> + ss (CO.conjunctDistrX c xs) ; + @@ -1226,7 +1307,7 @@ oper {s = \\g,n => subjunctVariants si A (B.s ! g ! n) } ; - subjunctQuestion : Subjunction -> Sentence -> Question -> Question = \si,A,B -> + subjunctQuestion : Subjunction -> Sentence -> QuestionSent -> QuestionSent = \si,A,B -> {s = \\q => subjunctVariants si A (B.s ! q) } ; @@ -1241,11 +1322,9 @@ oper B ++ si.s ++ As } ; -{- ----- - subjunctVerbPhrase : VerbPhrase -> Subjunction -> Sentence -> VerbPhrase = + subjunctVerbPhrase : VerbGroup -> Subjunction -> Sentence -> VerbGroup = \V, si, A -> adVerbPhrase V (ss (si.s ++ A.s ! si.m)) ; --} --2 One-word utterances -- @@ -1266,7 +1345,7 @@ oper defaultNounPhrase : NounPhrase -> SS = \jean -> ss (jean.s ! stressed nominative) ; - defaultQuestion : Question -> SS = \quiesttu -> + defaultQuestion : QuestionSent -> SS = \quiesttu -> ss (quiesttu.s ! DirQ) ; defaultSentence : Sentence -> SS = \x -> ss (x.s ! Ind) ; diff --git a/lib/resource/romance/VerbphraseRomance.gf b/lib/resource/romance/VerbphraseRomance.gf index 0fd69dee3..12d731ed0 100644 --- a/lib/resource/romance/VerbphraseRomance.gf +++ b/lib/resource/romance/VerbphraseRomance.gf @@ -36,8 +36,8 @@ incomplete concrete VerbphraseRomance of Verbphrase = CategoriesRomance ** ComplV2A v x y = predClauseGroup v (complDitransAdjVerb v x y) ; ComplSubjV2V v x y = predClauseGroup v (complDitransVerbVerb False v x y) ; ComplObjV2V v x y = predClauseGroup v (complDitransVerbVerb True v x y) ; ----- ComplV2S v x y = predClauseGroup v (complDitransSentVerb v x y) ; ----- ComplV2Q v x y = predClauseGroup v (complDitransQuestVerb v x y) ; + ComplV2S v x y = predClauseGroup v (complDitransSentVerb v x y) ; + ComplV2Q v x y = predClauseGroup v (complDitransQuestVerb v x y) ; PredAP v = predClauseBeGroup (complAdjective v) ; PredSuperl a = predClauseBeGroup (complAdjective (superlAdjPhrase a)) ; @@ -46,20 +46,20 @@ incomplete concrete VerbphraseRomance of Verbphrase = CategoriesRomance ** PredPP v = predClauseBeGroup (complAdverb v) ; PredAV v x = predClauseBeGroup (complVerbAdj v x) ; ----- PredObjA2V v x y = predClauseBeGroup (complVerbAdj2 True v x y) ; + PredObjA2V v x y = predClauseBeGroup (complVerbAdj2 True v x y) ; ----- PredProgVP = progressiveVerbPhrase ; + PredProgVP = progressiveVerbPhrase ; -- Use VPs PredVP = predVerbGroupClause ; ----- RelVP = relVerbPhrase ; ----- IntVP = intVerbPhrase ; + RelVP = relVerbPhrase ; + IntVP = intVerbPhrase ; PosVP tp = predVerbGroup True tp ; NegVP tp = predVerbGroup False tp ; ----- AdvVP = adVerbPhrase ; ----- SubjVP = subjunctVerbPhrase ; -} \ No newline at end of file + AdvVP = adVerbPhrase ; + SubjVP = subjunctVerbPhrase ; +}