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
-- 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.
@@ -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 = <>} ;