diff --git a/examples/phrasebook/DiffPhrasebook.gf b/examples/phrasebook/DiffPhrasebook.gf deleted file mode 100644 index 27076323b..000000000 --- a/examples/phrasebook/DiffPhrasebook.gf +++ /dev/null @@ -1,9 +0,0 @@ -interface DiffPhrasebook = open Syntax in { - -oper - want_V2 : V2 ; - like_V2 : V2 ; - cost_V2 : V2 ; -- it costs five euros - cost_V : V ; -- how much does it cost - -} diff --git a/examples/phrasebook/DiffPhrasebookEng.gf b/examples/phrasebook/DiffPhrasebookEng.gf deleted file mode 100644 index 40c802459..000000000 --- a/examples/phrasebook/DiffPhrasebookEng.gf +++ /dev/null @@ -1,12 +0,0 @@ -instance DiffPhrasebookEng of DiffPhrasebook = open - SyntaxEng, - ParadigmsEng, - IrregEng -in { - -oper - want_V2 = mkV2 (mkV "want") ; - like_V2 = mkV2 (mkV "like") ; - cost_V2 = mkV2 IrregEng.cost_V ; - cost_V = IrregEng.cost_V ; -} diff --git a/examples/phrasebook/DiffPhrasebookFin.gf b/examples/phrasebook/DiffPhrasebookFin.gf deleted file mode 100644 index c90820e06..000000000 --- a/examples/phrasebook/DiffPhrasebookFin.gf +++ /dev/null @@ -1,14 +0,0 @@ -instance DiffPhrasebookFin of DiffPhrasebook = open - SyntaxFin, - ParadigmsFin -in { - -flags coding = utf8 ; - -oper - want_V2 = mkV2 (mkV "haluta") ; - like_V2 = mkV2 (mkV "pitää") elative ; - - cost_V2 = mkV2 (mkV "maksaa") ; - cost_V = mkV "maksaa" ; -} diff --git a/examples/phrasebook/DiffPhrasebookFre.gf b/examples/phrasebook/DiffPhrasebookFre.gf deleted file mode 100644 index 7a83a4f88..000000000 --- a/examples/phrasebook/DiffPhrasebookFre.gf +++ /dev/null @@ -1,16 +0,0 @@ -instance DiffPhrasebookFre of DiffPhrasebook = open - SyntaxFre, - IrregFre, - ParadigmsFre -in { - -flags coding = utf8 ; - -oper - want_V2 = vouloir_V2 ; - like_V2 = mkV2 (mkV "aimer") ; - - cost_V2 = mkV2 (mkV "coûter") ; - cost_V = mkV "coûter" ; - -} diff --git a/examples/phrasebook/DiffPhrasebookIta.gf b/examples/phrasebook/DiffPhrasebookIta.gf deleted file mode 100644 index f1d608fde..000000000 --- a/examples/phrasebook/DiffPhrasebookIta.gf +++ /dev/null @@ -1,14 +0,0 @@ -instance DiffPhrasebookIta of DiffPhrasebook = open - SyntaxIta, - BeschIta, - ParadigmsIta -in { - -oper - want_V2 = mkV2 (mkV (volere_96 "volere")) ; - like_V2 = mkV2 (mkV "amare") ; ---- - - cost_V2 = mkV2 (mkV "costare") ; - cost_V = mkV "costare" ; - -} diff --git a/examples/phrasebook/DiffPhrasebookRon.gf b/examples/phrasebook/DiffPhrasebookRon.gf deleted file mode 100644 index 61e928b72..000000000 --- a/examples/phrasebook/DiffPhrasebookRon.gf +++ /dev/null @@ -1,17 +0,0 @@ -instance DiffPhrasebookRon of DiffPhrasebook = open - SyntaxRon, - BeschRon, - ParadigmsRon -in { - -flags coding = utf8 ; - -oper - want_V2 = dirV2 (lin V want_VV) ; -- mkVV (v_besch74 "vrea") - like_V2 = dirV2 (v_besch71 "plăcea") ; - - cost_V2 = dirV2(v_besch18 "costa") ; - - cost_V = v_besch18 "costa" ; - -} diff --git a/examples/phrasebook/DiffPhrasebookSwe.gf b/examples/phrasebook/DiffPhrasebookSwe.gf deleted file mode 100644 index 14fbd7bbc..000000000 --- a/examples/phrasebook/DiffPhrasebookSwe.gf +++ /dev/null @@ -1,12 +0,0 @@ -instance DiffPhrasebookSwe of DiffPhrasebook = open - SyntaxSwe, - ParadigmsSwe -in { - -oper - want_V2 = mkV2 (mkV "önska") ; ---- vill ha - like_V2 = mkV2 (mkV "tycker") (mkPrep "om") ; - - cost_V2 = mkV2 (mkV "kosta") ; - cost_V = mkV "kosta" ; -} diff --git a/examples/phrasebook/Sentences.gf b/examples/phrasebook/Sentences.gf index a5249d3ca..18bf88144 100644 --- a/examples/phrasebook/Sentences.gf +++ b/examples/phrasebook/Sentences.gf @@ -85,8 +85,6 @@ abstract Sentences = Numeral ** { The, Thes : Kind -> Item ; -- the pizza, the pizzas AmountCurrency : Numeral -> Currency -> Price ; -- five euros - HowMuchCost : Item -> Question ; -- how much does the pizza cost - ItCost : Item -> Price -> Proposition ; -- the pizza costs five euros ThePlace : PlaceKind -> Place ; -- the bar diff --git a/examples/phrasebook/SentencesEng.gf b/examples/phrasebook/SentencesEng.gf index f71b14c6f..caaf9daca 100644 --- a/examples/phrasebook/SentencesEng.gf +++ b/examples/phrasebook/SentencesEng.gf @@ -1,5 +1,4 @@ concrete SentencesEng of Sentences = NumeralEng ** SentencesI with - (DiffPhrasebook = DiffPhrasebookEng), (Syntax = SyntaxEng), (Symbolic = SymbolicEng), (Lexicon = LexiconEng) ; diff --git a/examples/phrasebook/SentencesFin.gf b/examples/phrasebook/SentencesFin.gf index 6e7e5c9de..72eacca5f 100644 --- a/examples/phrasebook/SentencesFin.gf +++ b/examples/phrasebook/SentencesFin.gf @@ -1,5 +1,4 @@ concrete SentencesFin of Sentences = NumeralFin ** SentencesI with - (DiffPhrasebook = DiffPhrasebookFin), (Syntax = SyntaxFin), (Symbolic = SymbolicFin), (Lexicon = LexiconFin) ; diff --git a/examples/phrasebook/SentencesFre.gf b/examples/phrasebook/SentencesFre.gf index 201db3323..ae85f126d 100644 --- a/examples/phrasebook/SentencesFre.gf +++ b/examples/phrasebook/SentencesFre.gf @@ -3,7 +3,6 @@ concrete SentencesFre of Sentences = NumeralFre ** SentencesI - [ IFemale, YouFamFemale, YouPolFemale ] with - (DiffPhrasebook = DiffPhrasebookFre), (Syntax = SyntaxFre), (Symbolic = SymbolicFre), (Lexicon = LexiconFre) ** diff --git a/examples/phrasebook/SentencesI.gf b/examples/phrasebook/SentencesI.gf index 0b26cff41..1dbaf7861 100644 --- a/examples/phrasebook/SentencesI.gf +++ b/examples/phrasebook/SentencesI.gf @@ -1,6 +1,5 @@ incomplete concrete SentencesI of Sentences = Numeral ** open - DiffPhrasebook, Syntax, Lexicon, Symbolic, -- for names as strings @@ -57,9 +56,6 @@ incomplete concrete SentencesI of Sentences = Numeral ** PropAction a = a ; - HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item cost_V)) ; - ItCost item price = mkCl item cost_V2 price ; - AmountCurrency num curr = mkNP curr ; ObjItem i = i ; diff --git a/examples/phrasebook/SentencesIta.gf b/examples/phrasebook/SentencesIta.gf index 1646d8819..83af8cc82 100644 --- a/examples/phrasebook/SentencesIta.gf +++ b/examples/phrasebook/SentencesIta.gf @@ -2,7 +2,6 @@ concrete SentencesIta of Sentences = NumeralIta ** SentencesI - [ IFemale, YouFamFemale, YouPolFemale ] with - (DiffPhrasebook = DiffPhrasebookIta), (Syntax = SyntaxIta), (Symbolic = SymbolicIta), (Lexicon = LexiconIta) ** diff --git a/examples/phrasebook/SentencesRon.gf b/examples/phrasebook/SentencesRon.gf index 5103d2d59..7043d7982 100644 --- a/examples/phrasebook/SentencesRon.gf +++ b/examples/phrasebook/SentencesRon.gf @@ -1,5 +1,4 @@ concrete SentencesRon of Sentences = NumeralRon ** SentencesI with - (DiffPhrasebook = DiffPhrasebookRon), (Syntax = SyntaxRon), (Symbolic = SymbolicRon), (Lexicon = LexiconRon) ; diff --git a/examples/phrasebook/SentencesSwe.gf b/examples/phrasebook/SentencesSwe.gf index a57749668..a1eaf975c 100644 --- a/examples/phrasebook/SentencesSwe.gf +++ b/examples/phrasebook/SentencesSwe.gf @@ -1,5 +1,4 @@ concrete SentencesSwe of Sentences = NumeralSwe ** SentencesI with - (DiffPhrasebook = DiffPhrasebookSwe), (Syntax = SyntaxSwe), (Symbolic = SymbolicSwe), (Lexicon = LexiconSwe) ; diff --git a/examples/phrasebook/Words.gf b/examples/phrasebook/Words.gf index 6d5cf91b0..0be56f24e 100644 --- a/examples/phrasebook/Words.gf +++ b/examples/phrasebook/Words.gf @@ -45,4 +45,7 @@ abstract Words = Sentences ** { PropOpenDay : Place -> Day -> Proposition ; PropClosedDay : Place -> Day -> Proposition ; + HowMuchCost : Item -> Question ; -- how much does the pizza cost + ItCost : Item -> Price -> Proposition ; -- the pizza costs five euros + } diff --git a/examples/phrasebook/WordsEng.gf b/examples/phrasebook/WordsEng.gf index 0b854c814..ab0d6ce99 100644 --- a/examples/phrasebook/WordsEng.gf +++ b/examples/phrasebook/WordsEng.gf @@ -78,6 +78,9 @@ concrete WordsEng of Words = SentencesEng ** PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ; PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ; + HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item IrregEng.cost_V)) ; + ItCost item price = mkCl item (mkV2 IrregEng.cost_V) price ; + oper mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co -> {lang = mkNP (mkPN nat) ; prop = mkA nat ; country = mkNP (mkPN co)} ; diff --git a/examples/phrasebook/WordsFin.gf b/examples/phrasebook/WordsFin.gf index 1bd93d940..f37b9b45b 100644 --- a/examples/phrasebook/WordsFin.gf +++ b/examples/phrasebook/WordsFin.gf @@ -3,7 +3,7 @@ concrete WordsFin of Words = SentencesFin ** open SyntaxFin, ParadigmsFin, (L = LangFin), - DiffPhrasebookFin, Prelude, (E = ExtraFin) in { + Prelude, (E = ExtraFin) in { lin Wine = mkCN (mkN "viini") ; Beer = mkCN (mkN "olut" "oluita") ; @@ -61,7 +61,7 @@ concrete WordsFin of Words = SentencesFin ** Saturday = let d = "lauantai" in mkDay (mkPN d) (d + "sin") ; Sunday = let d = "sunnuntai" in mkDay (mkPN d) (d + "sin") ; - AWant p obj = mkCl p.name want_V2 obj ; + AWant p obj = mkCl p.name (mkV2 "haluta") obj ; ALike p item = mkCl p.name L.like_V2 item ; ASpeak p lang = mkCl p.name (mkV2 (mkV "puhua") partitive) lang ; ALove p q = mkCl p.name (mkV2 (mkV "rakastaa") partitive) q.name ; @@ -86,6 +86,9 @@ concrete WordsFin of Words = SentencesFin ** PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ; PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ; + HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "maksaa"))) ; + ItCost item price = mkCl item (mkV2 (mkV "maksaa")) price ; + oper mkNat : PN -> PN -> A -> {lang : NP ; prop : A ; country : NP} = \nat,co,pro -> diff --git a/examples/phrasebook/WordsFre.gf b/examples/phrasebook/WordsFre.gf index b61afdb14..6f0e7f152 100644 --- a/examples/phrasebook/WordsFre.gf +++ b/examples/phrasebook/WordsFre.gf @@ -2,7 +2,6 @@ concrete WordsFre of Words = SentencesFre ** open SyntaxFre, - DiffPhrasebookFre, IrregFre, (E = ExtraFre), ParadigmsFre, @@ -59,7 +58,7 @@ Good = prefixA (mkA "bon" "bonne" "bons" "bien") ; Saturday = mkDay "samedi" ; Sunday = mkDay "dimanche" ; - AWant p obj = mkCl p.name want_V2 obj ; + AWant p obj = mkCl p.name vouloir_V2 obj ; ALike p item = mkCl item plaire_V2 p.name ; ASpeak p lang = mkCl p.name (mkV2 (mkV "parler")) lang ; ALove p q = mkCl p.name (mkV2 (mkV "aimer")) q.name ; @@ -86,6 +85,9 @@ Good = prefixA (mkA "bon" "bonne" "bons" "bien") ; PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ; PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ; + HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "coûter"))) ; + ItCost item price = mkCl item (mkV2 (mkV "coûter")) price ; + oper mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co -> {lang = mkNP (mkPN nat) ; prop = mkA nat ; country = mkNP (mkPN co)} ; diff --git a/examples/phrasebook/WordsIta.gf b/examples/phrasebook/WordsIta.gf index be120355d..a2fb1c882 100644 --- a/examples/phrasebook/WordsIta.gf +++ b/examples/phrasebook/WordsIta.gf @@ -2,7 +2,6 @@ concrete WordsIta of Words = SentencesIta ** open SyntaxIta, - DiffPhrasebookIta, BeschIta, (E = ExtraIta), (L = LexiconIta), @@ -60,7 +59,7 @@ Good = prefixA (mkA "buono" "buona" "buoni" "buone" "bene") ; Saturday = mkDay "sabato" ; Sunday = mkDay "domenica" ; - AWant p obj = mkCl p.name want_V2 obj ; + AWant p obj = mkCl p.name (mkV2 (mkV (volere_96 "volere"))) obj ; ALike p item = mkCl item (mkV2 (mkV (piacere_64 "piacere")) dative) p.name ; ASpeak p lang = mkCl p.name (mkV2 (mkV "parlare")) lang ; ALove p q = mkCl p.name (mkV2 (mkV "amare")) q.name ; @@ -87,6 +86,9 @@ Good = prefixA (mkA "buono" "buona" "buoni" "buone" "bene") ; PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ; PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ; + HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "costare"))) ; + ItCost item price = mkCl item (mkV2 (mkV "costare")) price ; + oper mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co -> {lang = mkNP (mkPN nat) ; prop = mkA nat ; country = mkNP (mkPN co)} ; diff --git a/examples/phrasebook/WordsRon.gf b/examples/phrasebook/WordsRon.gf index edf27ad11..997848125 100644 --- a/examples/phrasebook/WordsRon.gf +++ b/examples/phrasebook/WordsRon.gf @@ -3,8 +3,7 @@ concrete WordsRon of Words = SentencesRon ** open SyntaxRon, ParadigmsRon, - BeschRon, - DiffPhrasebookRon in + BeschRon in { flags coding=utf8 ; @@ -42,8 +41,8 @@ Good = mkA "bun" "bună" "buni" "bune" "bine" ; -- Romanian = SyntaxRon.mkNP (mkPN "română") ; ---- ? -- Swedish = mkNP (mkPN "suédois") ; - AWant p obj = mkCl p.name want_V2 obj ; - ALike p item = mkCl p.name like_V2 item ; + AWant p obj = mkCl p.name (dirV2 (lin V want_VV)) obj ; + ALike p item = mkCl p.name (dirV2 (v_besch71 "plăcea")) item ; ASpeak p lang = mkCl p.name (dirV2 (mkV "vorbi")) lang ; ALove p q = mkCl p.name (dirV2 (mkV "iubi")) q.name ; AUnderstand p = mkCl p.name (v_besch83 "înÅ£elege") ; @@ -53,7 +52,6 @@ Good = mkA "bun" "bună" "buni" "bune" "bine" ; -- ATired p = mkCl p (mkA "stanco") ; -- AScared p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "paura" feminine))) ; - {- GImHungry = ss "mi-e foame" ; GImThirsty = ss "mi-e sete" ; @@ -61,6 +59,9 @@ Good = mkA "bun" "bună" "buni" "bune" "bine" ; GImScared = ss "mi-e frică" ; -} + HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (v_besch18 "costa"))) ; + ItCost item price = mkCl item (dirV2 (v_besch18 "costa")) price ; + oper mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i -> { name = mkCN p ; diff --git a/examples/phrasebook/WordsSwe.gf b/examples/phrasebook/WordsSwe.gf index e70deeec0..02672f541 100644 --- a/examples/phrasebook/WordsSwe.gf +++ b/examples/phrasebook/WordsSwe.gf @@ -77,6 +77,9 @@ concrete WordsSwe of Words = SentencesSwe ** PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ; PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ; + HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosta"))) ; + ItCost item price = mkCl item (mkV2 (mkV "kosta")) price ; + oper mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co -> {lang = mkNP (mkPN (nat + "a")) ; diff --git a/examples/phrasebook/pgraph.png b/examples/phrasebook/pgraph.png index c7be64c86..72f294297 100644 Binary files a/examples/phrasebook/pgraph.png and b/examples/phrasebook/pgraph.png differ diff --git a/examples/phrasebook/phrasebook.html b/examples/phrasebook/phrasebook.html index 3a37aadfe..e77a12d46 100644 --- a/examples/phrasebook/phrasebook.html +++ b/examples/phrasebook/phrasebook.html @@ -17,10 +17,10 @@ History

@@ -117,9 +117,6 @@ Separate concrete syntaxes. Separate concrete syntaxes.

-DiffPhrasebook: the (so far small) interface for Sentences. -

-

DisambPhrasebook: disambiguation grammars generating feedback phrases if the input language is ambiguous.

@@ -128,7 +125,7 @@ Here is the module structure as produced by

     > i -retain DisambPhrasebookEng.gf
-    > dg -only=Phrasebook*,Sentences*,Words*,Greetings*,DiffP*,DisambPhrasebookEng
+    > dg -only=Phrasebook*,Sentences*,Words*,Greetings*,DisambPhrasebookEng
     > ! dot -Tpng _gfdepgraph.dot >pgraph.png
 

diff --git a/examples/phrasebook/phrasebook.txt b/examples/phrasebook/phrasebook.txt index 73b3efe73..dd9ac82f2 100644 --- a/examples/phrasebook/phrasebook.txt +++ b/examples/phrasebook/phrasebook.txt @@ -13,10 +13,10 @@ Aarne Ranta #BSMALL History -- 26 March 2010. Version 0.1: Eng, Fin, Fre, Ron; dedicated minibar UI. -- 28 March. Version 0.2: Swe, Ita; cat Action; small phrases. -- 30 March. Version 0.3: disambiguation grammar for English - 6 April. Version 0.4: weekdays, nationalities +- 30 March. Version 0.3: disambiguation grammar for English +- 28 March. Version 0.2: Swe, Ita; cat Action; small phrases. +- 26 March 2010. Version 0.1: Eng, Fin, Fre, Ron; dedicated minibar UI. [Missing constructs missing.txt] @@ -99,15 +99,13 @@ Separate concrete syntaxes. ``Phrasebook``: the top module putting everything together. Separate concrete syntaxes. -``DiffPhrasebook``: the (so far small) interface for ``Sentences``. - ``DisambPhrasebook``: disambiguation grammars generating feedback phrases if the input language is ambiguous. Here is the module structure as produced by ``` > i -retain DisambPhrasebookEng.gf - > dg -only=Phrasebook*,Sentences*,Words*,Greetings*,DiffP*,DisambPhrasebookEng + > dg -only=Phrasebook*,Sentences*,Words*,Greetings*,DisambPhrasebookEng > ! dot -Tpng _gfdepgraph.dot >pgraph.png ``` diff --git a/lib/src/catalan/DiffCat.gf b/lib/src/catalan/DiffCat.gf index 8a484407e..b2febbd59 100644 --- a/lib/src/catalan/DiffCat.gf +++ b/lib/src/catalan/DiffCat.gf @@ -87,23 +87,21 @@ oper infForm _ _ _ _ = True ; - mkImperative b p vp = { - s = \\pol,agr => + mkImperative b p vp = + \\pol,g,n => let pe = case b of {True => P3 ; _ => p} ; ----- agr = aag ** {p = pe} ; - aag = verbAgr agr ; ---- + agr = {g = g ; n = n ; p = pe} ; clpr = <[],[],False> ; ----e pronArg agr.n agr.p vp.clAcc vp.clDat ; ----e verb = case of { ----e => (vp.s ! VPInfinit Simul clpr.p3).inf ! aag ; ----e _ => (vp.s ! VPImperat).fin ! agr ----e } ; - verb = vp.s.s ! vImperForm agr ; ----e + verb = vp.s.s ! vImper n pe ; ----e neg = vp.neg ! pol ; compl = neg.p2 ++ clpr.p2 ++ vp.comp ! agr ++ vp.ext ! pol in neg.p1 ++ verb ++ bindIf clpr.p3 ++ clpr.p1 ++ compl ; - } ; negation : Polarity => (Str * Str) = table { Pos => <[],[]> ; diff --git a/lib/src/catalan/IdiomCat.gf b/lib/src/catalan/IdiomCat.gf index 56b18c7aa..1e4eeb2bb 100644 --- a/lib/src/catalan/IdiomCat.gf +++ b/lib/src/catalan/IdiomCat.gf @@ -4,10 +4,10 @@ concrete IdiomCat of Idiom = CatCat ** flags optimize=all_subs ; lin - ExistNP np = mkClause [] True (agrP3 Masc Sg) + ExistNP np = mkClause [] True False (agrP3 Masc Sg) (insertClit3 "hi" (insertComplement (\\_ => (np.s ! Acc).ton) (predV haver_V))) ; - GenericCl vp = mkClause "hom" True (agrP3 Masc Sg) vp ; - ImpersCl vp = mkClause [] True (agrP3 Masc Sg) vp ; + GenericCl vp = mkClause "hom" True False (agrP3 Masc Sg) vp ; + ImpersCl vp = mkClause [] True False (agrP3 Masc Sg) vp ; ProgrVP vp = @@ -23,7 +23,7 @@ concrete IdiomCat of Idiom = CatCat ** ----AR, for completeness - CleftNP np rs = mkClause [] True (agrP3 Masc Sg) + CleftNP np rs = mkClause [] True False (agrP3 Masc Sg) (insertComplement (\\_ => rs.s ! Indic ! np.a) (insertComplement (\\_ => (np.s ! rs.c).ton) (predV copula))) ; @@ -31,17 +31,17 @@ concrete IdiomCat of Idiom = CatCat ** ExistIP ip = { s = \\t,a,p,_ => ip.s ! Nom ++ - (mkClause [] True + (mkClause [] True False (agrP3 Masc Sg) (insertClit3 "hi" (insertComplement (\\_ => ip.s ! Acc) (predV haver_V)))) .s ! DDir ! t ! a ! p ! Indic } ; ImpPl1 vp = {s = - (mkImperative False P1 vp).s ! Pos ! Ag Masc Pl P1 ; --- fem + mkImperative False P1 vp ! Pos ! Masc ! Pl --- fem } ; - CleftAdv ad s = mkClause [] True (agrP3 Masc Sg) + CleftAdv ad s = mkClause [] True False (agrP3 Masc Sg) (insertComplement (\\_ => conjThat ++ s.s ! Indic) (insertComplement (\\_ => ad.s) (predV copula))) ; diff --git a/lib/src/catalan/MorphoCat.gf b/lib/src/catalan/MorphoCat.gf index 689aa1865..b52b61b90 100644 --- a/lib/src/catalan/MorphoCat.gf +++ b/lib/src/catalan/MorphoCat.gf @@ -147,7 +147,7 @@ oper _ => ses } ; a = Ag g n p ; - hasClit = True + hasClit = True ; isPol = False } ; elisPoss : Str -> Str = \s -> diff --git a/lib/src/catalan/ParadigmsCat.gf b/lib/src/catalan/ParadigmsCat.gf index 2f071ce8f..3b4dc2410 100644 --- a/lib/src/catalan/ParadigmsCat.gf +++ b/lib/src/catalan/ParadigmsCat.gf @@ -316,7 +316,7 @@ oper } } ; - makeNP x g n = {s = (pn2np (mk2PN x g)).s; a = agrP3 g n ; hasClit = False} ** {lock_NP = <>} ; + makeNP x g n = {s = (pn2np (mk2PN x g)).s; a = agrP3 g n ; hasClit = False ; isPol = False} ** {lock_NP = <>} ; mk5A a b c d e = compADeg {s = \\_ => (mkAdj a b c d e).s ; isPre = False ; lock_A = <>} ; diff --git a/lib/src/french/DiffFre.gf b/lib/src/french/DiffFre.gf index 17be8b770..bc90db5d3 100644 --- a/lib/src/french/DiffFre.gf +++ b/lib/src/french/DiffFre.gf @@ -118,21 +118,21 @@ instance DiffFre of DiffRomance = open CommonRomance, PhonoFre, Prelude in { _ => } ; - mkImperative b p vp = { - s = \\pol,ag => + mkImperative b p vp = + \\pol,g,n => let - agr = verbAgr ag ; - num = if_then_else Number b Pl agr.n ; - verb = vp.s.s ! vImperForm ag ; + agr = Ag g n p ; + num = if_then_else Number b Pl n ; + verb = vp.s.s ! vImper n p ; neg = vp.neg ! pol ; clpr = ; ---- TODO: True if clit - compl = vp.comp ! ag ++ vp.ext ! pol + compl = vp.comp ! agr ++ vp.ext ! pol in case pol of { Pos => verb ++ if_then_Str clpr.p2 "-" [] ++ clpr.p1 ++ compl ; Neg => neg.p1 ++ clpr.p1 ++ verb ++ neg.p2 ++ compl - } - } ; ---- TODO: vois-le vs. vois-moi vs. ne me vois pas + } ; + ---- TODO: vois-le vs. vois-moi vs. ne me vois pas negation : Polarity => (Str * Str) = table { diff --git a/lib/src/french/ExtraFre.gf b/lib/src/french/ExtraFre.gf index 00005bff7..0213f1d7b 100644 --- a/lib/src/french/ExtraFre.gf +++ b/lib/src/french/ExtraFre.gf @@ -1,5 +1,5 @@ concrete ExtraFre of ExtraFreAbs = ExtraRomanceFre ** - open CommonRomance, PhonoFre, MorphoFre, ParadigmsFre, ParamX, ResFre in { + open CommonRomance, PhonoFre, MorphoFre, ParadigmsFre, ParamX, ResFre, Prelude in { lin EstcequeS qs = {s = "est-ce" ++ elisQue ++ qs.s ! Indic} ; @@ -42,8 +42,9 @@ concrete ExtraFre of ExtraFreAbs = ExtraRomanceFre ** Fem Sg P2 ; youPl8fem_Pron, youPol8fem_Pron = - let vous = mkPronoun "vous" "vous" "vous" "vous" "votre" "votre" "vos" Masc Pl P2 - in {s = vous.s ; hasClit = vous.hasClit ; poss = vous.poss ; a = AgPol Fem} ; + let vous = mkPronoun "vous" "vous" "vous" "vous" "votre" "votre" "vos" Fem Pl P2 + in + {s = vous.s ; hasClit = vous.hasClit ; poss = vous.poss ; a = vous.a ; isPol = True} ; oper prepQue : Case -> Str = \c -> case c of { diff --git a/lib/src/french/IdiomFre.gf b/lib/src/french/IdiomFre.gf index e01073085..c92956d3d 100644 --- a/lib/src/french/IdiomFre.gf +++ b/lib/src/french/IdiomFre.gf @@ -4,26 +4,26 @@ concrete IdiomFre of Idiom = CatFre ** flags optimize=all_subs ; lin - ImpersCl vp = mkClause "il" True (agrP3 Masc Sg) vp ; - GenericCl vp = mkClause "on" True (agrP3 Masc Sg) vp ; + ImpersCl vp = mkClause "il" True False (agrP3 Masc Sg) vp ; + GenericCl vp = mkClause "on" True False (agrP3 Masc Sg) vp ; ExistNP np = - mkClause "il" True (agrP3 Masc Sg) + mkClause "il" True False (agrP3 Masc Sg) (insertClit3 "y" (insertComplement (\\_ => (np.s ! Acc).ton) (predV avoir_V))) ; ExistIP ip = { s = \\t,a,p,_ => ip.s ! Nom ++ - (mkClause "il" True (agrP3 Masc Sg) + (mkClause "il" True False (agrP3 Masc Sg) (insertClit3 "y" (predV avoir_V))).s ! DDir ! t ! a ! p ! Indic ---- DInv } ; - CleftNP np rs = mkClause elisCe True (agrP3 Masc Sg) + CleftNP np rs = mkClause elisCe True np.isPol (agrP3 Masc Sg) (insertComplement (\\_ => rs.s ! Indic ! np.a) (insertComplement (\\_ => (np.s ! rs.c).ton) (predV copula))) ; - CleftAdv ad s = mkClause elisCe True (agrP3 Masc Sg) + CleftAdv ad s = mkClause elisCe True False (agrP3 Masc Sg) (insertComplement (\\_ => conjThat ++ s.s ! Indic) (insertComplement (\\_ => ad.s) (predV copula))) ; @@ -33,12 +33,12 @@ concrete IdiomFre of Idiom = CatFre ** (\\a => "en" ++ "train" ++ elisDe ++ infVP vp a) (predV copula) ; - ImpPl1 vp = {s = - (mkImperative False P1 vp).s ! Pos ! Ag Masc Pl P1 --- fem + ImpPl1 vp = { + s = mkImperative False P1 vp ! Pos ! Masc ! Pl --- fem } ; ImpP3 np vp = { - s = (mkClause (np.s ! Nom).comp np.hasClit np.a vp).s + s = (mkClause (np.s ! Nom).comp np.hasClit False np.a vp).s ! DInv ! RPres ! Simul ! Pos ! Conjunct } ; diff --git a/lib/src/french/MorphoFre.gf b/lib/src/french/MorphoFre.gf index a95b1c58a..ab03a9ed7 100644 --- a/lib/src/french/MorphoFre.gf +++ b/lib/src/french/MorphoFre.gf @@ -178,7 +178,8 @@ oper _ => ses } ; a = Ag g n p ; - hasClit = True + hasClit = True ; + isPol = False } ; elisPoss : Str -> Str = \s -> diff --git a/lib/src/french/ParadigmsFre.gf b/lib/src/french/ParadigmsFre.gf index d20fc134b..1009de8d9 100644 --- a/lib/src/french/ParadigmsFre.gf +++ b/lib/src/french/ParadigmsFre.gf @@ -403,7 +403,7 @@ oper --------------------------- obsolete makeNP : Str -> Gender -> Number -> NP ; - makeNP x g n = {s = (pn2np {s=x;g= g}).s; a = agrP3 g n ; hasClit = False} ** {lock_NP = <>} ; + makeNP x g n = {s = (pn2np {s=x;g= g}).s; a = agrP3 g n ; hasClit = False ; isPol = False ; lock_NP = <>} ; regPN : Str -> PN ; mk2PN : Str -> Gender -> PN = \x,g -> {s = x ; g = g} ** {lock_PN = <>} ; diff --git a/lib/src/french/StructuralFre.gf b/lib/src/french/StructuralFre.gf index 347f5c5fa..f6d91723e 100644 --- a/lib/src/french/StructuralFre.gf +++ b/lib/src/french/StructuralFre.gf @@ -172,7 +172,8 @@ lin Masc Pl P2 ; youPol_Pron = let vous = mkPronoun "vous" "vous" "vous" "vous" "votre" "votre" "vos" Masc Pl P2 - in {s = vous.s ; hasClit = vous.hasClit ; poss = vous.poss ; a = AgPol Masc} ; + in + {s = vous.s ; hasClit = vous.hasClit ; poss = vous.poss ; a = vous.a ; isPol = True} ; not_Predet = {s = \\a,c => prepCase c ++ "pas" ; c = Nom ; a = PNoAg} ; diff --git a/lib/src/italian/DiffIta.gf b/lib/src/italian/DiffIta.gf index 3c6eab703..2006ce126 100644 --- a/lib/src/italian/DiffIta.gf +++ b/lib/src/italian/DiffIta.gf @@ -108,22 +108,21 @@ instance DiffIta of DiffRomance = open CommonRomance, PhonoIta, BeschIta, Prelud infForm n p x y = (pronArg n p x y).p3 ; - mkImperative b p vp = { - s = \\pol,agr => + mkImperative b p vp = + \\pol,g,n => let pe = case b of {True => P3 ; _ => p} ; ----- agr = aag ** {p = pe} ; - aag = verbAgr agr ; ---- + agr = {g = g ; n = n ; p = pe} ; clpr = ; ---- TODO: True is clit - verb = case of { + verb = case of { => vp.s.s ! VInfin clpr.p3 ; ---- ! aag ; - _ => vp.s.s ! vImperForm agr + _ => vp.s.s ! vImper n pe } ; neg = vp.neg ! pol ; compl = clpr.p2 ++ vp.comp ! agr ++ vp.ext ! pol in neg.p1 ++ verb ++ bindIf clpr.p3 ++ clpr.p1 ++ compl ; - } ; ---- TODO non mi mangi + ---- TODO non mi mangi negation : Polarity => (Str * Str) = table { Pos => <[],[]> ; diff --git a/lib/src/italian/IdiomIta.gf b/lib/src/italian/IdiomIta.gf index 4669ef2ba..968697e88 100644 --- a/lib/src/italian/IdiomIta.gf +++ b/lib/src/italian/IdiomIta.gf @@ -4,22 +4,22 @@ concrete IdiomIta of Idiom = CatIta ** flags optimize=all_subs ; lin - ImpersCl vp = mkClause [] True (agrP3 Masc Sg) vp ; + ImpersCl vp = mkClause [] True False (agrP3 Masc Sg) vp ; GenericCl vp = - mkClause [] True (agrP3 Masc Sg) (insertRefl vp) ; + mkClause [] True False (agrP3 Masc Sg) (insertRefl vp) ; - CleftNP np rs = mkClause [] True (agrP3 Masc Sg) + CleftNP np rs = mkClause [] True False (agrP3 Masc Sg) (insertComplement (\\_ => rs.s ! Indic ! np.a) (insertComplement (\\_ => (np.s ! rs.c).ton) (predV copula))) ; - CleftAdv ad s = mkClause [] True (agrP3 Masc Sg) + CleftAdv ad s = mkClause [] True False (agrP3 Masc Sg) (insertComplement (\\_ => conjThat ++ s.s ! Indic) (insertComplement (\\_ => ad.s) (predV copula))) ; ExistNP np = let npa = complAgr np.a in - mkClause [] True (agrP3 npa.g npa.n) + mkClause [] True False (agrP3 npa.g npa.n) (insertClit3 (elision "ci" "c'" "ci") (insertComplement (\\_ => (np.s ! Nom).ton) (predV copula))) ; @@ -27,7 +27,7 @@ concrete IdiomIta of Idiom = CatIta ** ExistIP ip = { s = \\t,a,p,_ => ip.s ! Nom ++ - (mkClause [] True (agrP3 ip.a.g ip.a.n) + (mkClause [] True False (agrP3 ip.a.g ip.a.n) (insertClit3 (elision "ci" "c'" "ci") (predV copula))).s ! DDir ! t ! a ! p ! Indic } ; @@ -44,7 +44,7 @@ concrete IdiomIta of Idiom = CatIta ** (predV (essereV (verboV (stare_16 "stare")))) ; ImpPl1 vp = {s = - (mkImperative False P1 vp).s ! Pos ! Ag Masc Pl P1 --- fem + mkImperative False P1 vp ! Pos ! Masc ! Pl --- fem } ; } diff --git a/lib/src/italian/MorphoIta.gf b/lib/src/italian/MorphoIta.gf index ad0ce1202..8b950f7ff 100644 --- a/lib/src/italian/MorphoIta.gf +++ b/lib/src/italian/MorphoIta.gf @@ -155,7 +155,7 @@ oper => see } ; a = Ag g n p ; - hasClit = True + hasClit = True ; isPol = False } ; {- --e diff --git a/lib/src/italian/ParadigmsIta.gf b/lib/src/italian/ParadigmsIta.gf index feb93e33e..799e3a73c 100644 --- a/lib/src/italian/ParadigmsIta.gf +++ b/lib/src/italian/ParadigmsIta.gf @@ -321,7 +321,7 @@ oper } } ; - makeNP x g n = {s = (pn2np (mk2PN x g)).s; a = agrP3 g n ; hasClit = False} ** {lock_NP = <>} ; + makeNP x g n = {s = (pn2np (mk2PN x g)).s; a = agrP3 g n ; hasClit = False ; isPol = False} ** {lock_NP = <>} ; mk5A a b c d e = compADeg {s = \\_ => (mkAdj a b c d e).s ; isPre = False ; lock_A = <>} ; diff --git a/lib/src/romance/CommonRomance.gf b/lib/src/romance/CommonRomance.gf index ae23addfc..2833d8ba5 100644 --- a/lib/src/romance/CommonRomance.gf +++ b/lib/src/romance/CommonRomance.gf @@ -63,12 +63,6 @@ oper _ => Masc } ; - conjAgr : Agr -> Agr -> Agr = \a,b -> case of { - => Ag (conjGender g h) (conjNumber n m) (conjPerson p q) ; - => Ag (conjGender g h) Pl (conjPerson p P2) ; - => Ag (conjGender g h) Pl (conjPerson p P2) ; - => AgPol (conjGender g h) - } ; --3 Verbs -- @@ -123,6 +117,27 @@ param oper AAgr : Type = {g : Gender ; n : Number} ; + Agr : Type = {g : Gender ; n : Number ; p : Person} ; + + complAgr : Agr -> {g : Gender ; n : Number} = \a -> {g = a.g ; n = a.n} ; + + verbAgr : Agr -> {g : Gender ; n : Number ; p : Person} = \a -> a ; + + conjAgr : Agr -> Agr -> Agr = \a,b -> + {g = conjGender a.g b.g ; n = conjNumber a.n b.n ; p = conjPerson a.p b.p} ; + + Ag : Gender -> Number -> Person -> Agr = \g,n,p -> {g = g ; n = n ; p = p} ; + +-- The imperative forms depend on number and person. + + vImper : Number -> Person -> VF = \n,p -> case of { + => VImper SgP2 ; + => VImper PlP1 ; + => VImper PlP2 ; + _ => VInfin False + } ; + +{- param Agr = Ag Gender Number Person | AgPol Gender ; @@ -136,6 +151,21 @@ param AgPol g => {g = g ; n = Pl ; p = P2} } ; + conjAgr : Agr -> Agr -> Agr = \a,b -> case of { + => Ag (conjGender g h) (conjNumber n m) (conjPerson p q) ; + => Ag (conjGender g h) Pl (conjPerson p P2) ; + => Ag (conjGender g h) Pl (conjPerson p P2) ; + => AgPol (conjGender g h) + } ; + + vImperForm : Agr -> VF = \a -> case a of { + Ag _ Pl P1 => VImper PlP1 ; + Ag _ n P3 => VFin (VPres Conjunct) n P3 ; + Ag _ Sg _ => VImper SgP2 ; + _ => VImper PlP2 -- covers French AgPol + } ; + +-} param RAgr = RAg {g : Gender ; n : Number} | RNoAg ; --- AAgr PAgr = PAg Number | PNoAg ; @@ -159,23 +189,6 @@ oper presInd = VPres Indic ; --- The imperative forms depend on number and person. - - vImper : Number -> Person -> VF = \n,p -> case of { - => VImper SgP2 ; - => VImper PlP1 ; - => VImper PlP2 ; - _ => VInfin False - } ; - - vImperForm : Agr -> VF = \a -> case a of { - Ag _ Pl P1 => VImper PlP1 ; - Ag _ n P3 => VFin (VPres Conjunct) n P3 ; - Ag _ Sg _ => VImper SgP2 ; - _ => VImper PlP2 -- covers French AgPol - } ; - - --- diff --git a/lib/src/romance/DiffRomance.gf b/lib/src/romance/DiffRomance.gf index c8d056f6a..424acfc16 100644 --- a/lib/src/romance/DiffRomance.gf +++ b/lib/src/romance/DiffRomance.gf @@ -49,7 +49,7 @@ interface DiffRomance = open CommonRomance, Prelude in { -- To render imperatives (with their clitics etc). - oper mkImperative : Bool -> Person -> VP -> {s : Polarity => Agr => Str} ; + oper mkImperative : Bool -> Person -> VP -> Polarity => Gender => Number => Str ; --2 Constants that must derivatively depend on language diff --git a/lib/src/romance/QuestionRomance.gf b/lib/src/romance/QuestionRomance.gf index 4cae05232..28f9e410d 100644 --- a/lib/src/romance/QuestionRomance.gf +++ b/lib/src/romance/QuestionRomance.gf @@ -17,7 +17,7 @@ incomplete concrete QuestionRomance of Question = QuestVP qp vp = { s = \\t,a,b,_ => let - cl = mkClause (qp.s ! Nom) False (agrP3 qp.a.g qp.a.n) vp + cl = mkClause (qp.s ! Nom) False False (agrP3 qp.a.g qp.a.n) vp in cl.s ! DDir ! t ! a ! b ! Indic } ; @@ -50,7 +50,7 @@ incomplete concrete QuestionRomance of Question = s = \\t,a,p,_ => let vp = predV copula ; - cls = (mkClause (np.s ! Nom).comp np.hasClit np.a vp).s ! + cls = (mkClause (np.s ! Nom).comp np.hasClit np.isPol np.a vp).s ! DInv ! t ! a ! p ! Indic ; why = icomp.s ! complAgr np.a ; in why ++ cls diff --git a/lib/src/romance/RelativeRomance.gf b/lib/src/romance/RelativeRomance.gf index 163ca924f..fa01cce96 100644 --- a/lib/src/romance/RelativeRomance.gf +++ b/lib/src/romance/RelativeRomance.gf @@ -15,12 +15,12 @@ incomplete concrete RelativeRomance of Relative = RelVP rp vp = case rp.hasAgr of { True => {s = \\ag => (mkClause - (rp.s ! False ! complAgr ag ! Nom) False + (rp.s ! False ! complAgr ag ! Nom) False False (Ag rp.a.g rp.a.n P3) vp).s ! DDir ; c = Nom} ; False => {s = \\ag => (mkClause - (rp.s ! False ! complAgr ag ! Nom) False + (rp.s ! False ! complAgr ag ! Nom) False False ag vp).s ! DDir ; c = Nom } diff --git a/lib/src/romance/ResRomance.gf b/lib/src/romance/ResRomance.gf index 2f0d74439..a5452df8f 100644 --- a/lib/src/romance/ResRomance.gf +++ b/lib/src/romance/ResRomance.gf @@ -15,7 +15,8 @@ oper NounPhrase : Type = { s : Case => {c1,c2,comp,ton : Str} ; a : Agr ; - hasClit : Bool + hasClit : Bool ; + isPol : Bool --- only needed for French complement agr } ; Pronoun : Type = NounPhrase ** { poss : Number => Gender => Str ---- also: substantival @@ -24,7 +25,8 @@ oper heavyNP : {s : Case => Str ; a : Agr} -> NounPhrase = \np -> { s = \\c => {comp,ton = np.s ! c ; c1,c2 = []} ; a = np.a ; - hasClit = False + hasClit = False ; + isPol = False } ; Compl : Type = {s : Str ; c : Case ; isDir : Bool} ; @@ -188,19 +190,22 @@ oper ext : Polarity => Str ; -- que je dors / que je dorme } ; - mkClause : Str -> Bool -> Agr -> VP -> + mkClause : Str -> Bool -> Bool -> Agr -> VP -> {s : Direct => RTense => Anteriority => Polarity => Mood => Str} = - \subj, hasClit, ag, vp -> { + \subj, hasClit, isPol, agr, vp -> { s = \\d,te,a,b,m => let - neg = vp.neg ! b ; - compl = vp.comp ! ag ++ vp.ext ! b ; + neg = vp.neg ! b ; - agr = verbAgr ag ; gen = agr.g ; num = agr.n ; per = agr.p ; + compl = case isPol of { + True => vp.comp ! {g = gen ; n = Sg ; p = per} ; + _ => vp.comp ! agr + } ++ vp.ext ! b ; + vtyp = vp.s.vtyp ; refl = case vtyp of { VRefl => reflPron num per Acc ; ---- case ? diff --git a/lib/src/romance/SentenceRomance.gf b/lib/src/romance/SentenceRomance.gf index f64ccf65c..4bb394119 100644 --- a/lib/src/romance/SentenceRomance.gf +++ b/lib/src/romance/SentenceRomance.gf @@ -4,13 +4,13 @@ incomplete concrete SentenceRomance of Sentence = flags optimize=all_subs ; lin - PredVP np vp = mkClause (np.s ! Nom).comp np.hasClit np.a vp ; + PredVP np vp = mkClause (np.s ! Nom).comp np.hasClit np.isPol np.a vp ; - PredSCVP sc vp = mkClause sc.s False (agrP3 Masc Sg) vp ; + PredSCVP sc vp = mkClause sc.s False False (agrP3 Masc Sg) vp ; ImpVP vp = { s = \\p,i,g => case i of { - ImpF n b => (mkImperative b P2 vp).s ! p ! (Ag g n P2) ---- AgPol ? + ImpF n b => mkImperative b P2 vp ! p ! g ! n ---- AgPol ? } } ; @@ -23,7 +23,7 @@ incomplete concrete SentenceRomance of Sentence = ---- => insertAgr ag v2 ; ---- _ => v2 ----e } - in (mkClause (np.s ! Nom).comp np.hasClit np.a vp).s ; + in (mkClause (np.s ! Nom).comp np.hasClit np.isPol np.a vp).s ; c2 = v2.c2 } ; @@ -40,7 +40,7 @@ incomplete concrete SentenceRomance of Sentence = SlashVS np vs slash = {s = \\ag => (mkClause - (np.s ! Nom).comp np.hasClit np.a + (np.s ! Nom).comp np.hasClit np.isPol np.a (insertExtrapos (\\b => conjThat ++ slash.s ! ag ! (vs.m ! b)) (predV vs)) ).s ; diff --git a/lib/src/spanish/DiffSpa.gf b/lib/src/spanish/DiffSpa.gf index d78d42b78..55c720c49 100644 --- a/lib/src/spanish/DiffSpa.gf +++ b/lib/src/spanish/DiffSpa.gf @@ -90,24 +90,21 @@ instance DiffSpa of DiffRomance = open CommonRomance, PhonoSpa, BeschSpa, Prelud infForm _ _ _ _ = True ; - mkImperative b p vp = { - s = \\pol,agr => + mkImperative b p vp = + \\pol,g,n => let pe = case b of {True => P3 ; _ => p} ; ----- agr = aag ** {p = pe} ; - aag = verbAgr agr ; ---- - + agr = {g = g ; n = n ; p = pe} ; clpr = <[],[],False> ; ----e pronArg agr.n agr.p vp.clAcc vp.clDat ; ----e verb = case of { ----e => (vp.s ! VPInfinit Simul clpr.p3).inf ! aag ; ----e _ => (vp.s ! VPImperat).fin ! agr ----e } ; - verb = vp.s.s ! vImperForm agr ; + verb = vp.s.s ! vImper n pe ; neg = vp.neg ! pol ; compl = neg.p2 ++ clpr.p2 ++ vp.comp ! agr ++ vp.ext ! pol in neg.p1 ++ verb ++ bindIf clpr.p3 ++ clpr.p1 ++ compl ; - } ; negation : Polarity => (Str * Str) = table { Pos => <[],[]> ; diff --git a/lib/src/spanish/IdiomSpa.gf b/lib/src/spanish/IdiomSpa.gf index 92aff2105..346cb8dc7 100644 --- a/lib/src/spanish/IdiomSpa.gf +++ b/lib/src/spanish/IdiomSpa.gf @@ -4,27 +4,27 @@ concrete IdiomSpa of Idiom = CatSpa ** flags optimize=all_subs ; lin - ImpersCl vp = mkClause [] True (agrP3 Masc Sg) vp ; + ImpersCl vp = mkClause [] True False (agrP3 Masc Sg) vp ; GenericCl vp = - mkClause [] True (agrP3 Masc Sg) (insertRefl vp) ; ---- just Italian ? + mkClause [] True False (agrP3 Masc Sg) (insertRefl vp) ; ---- just Italian ? - CleftNP np rs = mkClause [] True (agrP3 Masc Sg) + CleftNP np rs = mkClause [] True False (agrP3 Masc Sg) (insertComplement (\\_ => rs.s ! Indic ! np.a) (insertComplement (\\_ => (np.s ! rs.c).ton) (predV copula))) ; - CleftAdv ad s = mkClause [] True (agrP3 Masc Sg) + CleftAdv ad s = mkClause [] True False (agrP3 Masc Sg) (insertComplement (\\_ => conjThat ++ s.s ! Indic) (insertComplement (\\_ => ad.s) (predV copula))) ; ExistNP np = - mkClause [] True (agrP3 Masc Sg) + mkClause [] True False (agrP3 Masc Sg) (insertComplement (\\_ => (np.s ! Acc).ton) (predV (verboV (hay_3 "haber")))) ; ExistIP ip = { s = \\t,a,p,_ => ip.s ! Nom ++ - (mkClause [] True (agrP3 Masc Sg) (predV (verboV (hay_3 "haber")))).s ! DDir ! t ! a ! p ! Indic + (mkClause [] True False (agrP3 Masc Sg) (predV (verboV (hay_3 "haber")))).s ! DDir ! t ! a ! p ! Indic } ; ProgrVP vp = @@ -39,7 +39,7 @@ concrete IdiomSpa of Idiom = CatSpa ** (predV (verboV (estar_2 "estar"))) ; ImpPl1 vp = {s = - (mkImperative False P1 vp).s ! Pos ! Ag Masc Pl P1 ; --- fem + mkImperative False P1 vp ! Pos ! Masc ! Pl ; --- fem } ; } diff --git a/lib/src/spanish/MorphoSpa.gf b/lib/src/spanish/MorphoSpa.gf index 8a2b4fae5..b54ab60ba 100644 --- a/lib/src/spanish/MorphoSpa.gf +++ b/lib/src/spanish/MorphoSpa.gf @@ -111,7 +111,7 @@ oper } ; a = Ag g n p ; - hasClit = True + hasClit = True ; isPol = False } ; diff --git a/lib/src/spanish/ParadigmsSpa.gf b/lib/src/spanish/ParadigmsSpa.gf index 36008eb2d..f09614e4e 100644 --- a/lib/src/spanish/ParadigmsSpa.gf +++ b/lib/src/spanish/ParadigmsSpa.gf @@ -314,7 +314,7 @@ oper } } ; - makeNP x g n = {s = (pn2np (mk2PN x g)).s; a = agrP3 g n ; hasClit = False} ** {lock_NP = <>} ; + makeNP x g n = {s = (pn2np (mk2PN x g)).s; a = agrP3 g n ; hasClit = False ; isPol = False} ** {lock_NP = <>} ; mk5A a b c d e = compADeg {s = \\_ => (mkAdj a b c d e).s ; isPre = False ; lock_A = <>} ;