diff --git a/lib/src/abstract/Extra.gf b/lib/src/abstract/Extra.gf index 4f5bb08e3..fa05b8a89 100644 --- a/lib/src/abstract/Extra.gf +++ b/lib/src/abstract/Extra.gf @@ -36,4 +36,11 @@ abstract Extra = Cat ** { ConjVPS : Conj -> [VPS] -> VPS ; PredVPS : NP -> VPS -> S ; + -- 9/4/2010 + + fun + ProDrop : Pron -> Pron ; -- unstressed subject pronoun becomes []: "(io) sono stanco" + ICompAP : AP -> IComp ; -- "how old" + IAdvAdv : Adv -> IAdv ; -- "how often" + } diff --git a/lib/src/api/Constructors.gf b/lib/src/api/Constructors.gf index f26e5e408..f22b85509 100644 --- a/lib/src/api/Constructors.gf +++ b/lib/src/api/Constructors.gf @@ -443,6 +443,10 @@ incomplete resource Constructors = open Grammar in { -- There are definite and indefinite articles. + mkQuant : overload { --# notminimal + mkQuant : Pron -> Quant ; -- 1. my --# notminimal + } ; --# notminimal + the_Quant : Quant ; -- the --# notminimal a_Quant : Quant ; -- a --# notminimal @@ -1125,6 +1129,10 @@ incomplete resource Constructors = open Grammar in { = \p -> DetQuant (PossPron p) ; --# notminimal } ; + mkQuant = overload { --# notminimal + mkQuant : Pron -> Quant = PossPron ; -- 1. my --# notminimal + } ; --# notminimal + the_Art : Art = DefArt ; -- the a_Art : Art = IndefArt ; -- a diff --git a/lib/src/api/TryEng.gf b/lib/src/api/TryEng.gf index 823dc212f..7a8aee98c 100644 --- a/lib/src/api/TryEng.gf +++ b/lib/src/api/TryEng.gf @@ -1,6 +1,6 @@ --# -path=.:alltenses:prelude -resource TryEng = SyntaxEng-[mkAdN], LexiconEng, ParadigmsEng - [mkAdv,mkAdN,mkOrd] ** +resource TryEng = SyntaxEng-[mkAdN], LexiconEng, ParadigmsEng - [mkAdv,mkAdN,mkOrd,mkQuant] ** open (P = ParadigmsEng) in { oper diff --git a/lib/src/danish/DiffDan.gf b/lib/src/danish/DiffDan.gf index 7b0401e9b..72912ae49 100644 --- a/lib/src/danish/DiffDan.gf +++ b/lib/src/danish/DiffDan.gf @@ -76,4 +76,5 @@ instance DiffDan of DiffScand = open CommonScand, Prelude in { <_, P3> => "sig" } ; + hur_IAdv = {s = "hvor"} ; } diff --git a/lib/src/english/ExtraEng.gf b/lib/src/english/ExtraEng.gf index c70154869..984a4d4d4 100644 --- a/lib/src/english/ExtraEng.gf +++ b/lib/src/english/ExtraEng.gf @@ -93,4 +93,8 @@ concrete ExtraEng of ExtraEngAbs = CatEng ** ConjVPS = conjunctDistrTable Agr ; + ICompAP ap = {s = "how" ++ ap.s ! agrP3 Sg} ; ---- IComp should have agr! + + IAdvAdv adv = {s = "how" ++ adv.s} ; + } diff --git a/lib/src/english/ExtraEngAbs.gf b/lib/src/english/ExtraEngAbs.gf index 78e735d9d..19cf48717 100644 --- a/lib/src/english/ExtraEngAbs.gf +++ b/lib/src/english/ExtraEngAbs.gf @@ -1,4 +1,4 @@ -abstract ExtraEngAbs = Extra ** { +abstract ExtraEngAbs = Extra - [ProDrop] ** { -- uncontracted negations; contracted are the default fun diff --git a/lib/src/finnish/ExtraFin.gf b/lib/src/finnish/ExtraFin.gf index 381b72104..41645bb0b 100644 --- a/lib/src/finnish/ExtraFin.gf +++ b/lib/src/finnish/ExtraFin.gf @@ -75,4 +75,18 @@ concrete ExtraFin of ExtraFinAbs = CatFin ** s = \\agr => ap.s ! False ! NCase (complNumAgr agr) Part } ; +---- copied from VerbFin.CompAP, should be shared + ICompAP ap = { + s = \\agr => + let + n = complNumAgr agr ; + c = case n of { + Sg => Nom ; -- minä olen iso ; te olette iso + Pl => Part -- me olemme isoja ; te olette isoja + } --- definiteness of NP ? + in "kuinka" ++ ap.s ! False ! (NCase n c) + } ; + + IAdvAdv adv = {s = "kuinka" ++ adv.s} ; + } diff --git a/lib/src/finnish/ExtraFinAbs.gf b/lib/src/finnish/ExtraFinAbs.gf index 8459af853..1908edf3d 100644 --- a/lib/src/finnish/ExtraFinAbs.gf +++ b/lib/src/finnish/ExtraFinAbs.gf @@ -1,6 +1,6 @@ abstract ExtraFinAbs = Extra [ GenNP,VPI,ListVPI,BaseVPI,ConsVPI,MkVPI,ComplVPIVV,ConjVPI, - VV,VP,Conj,NP,Quant] ** { + VV,VP,Conj,NP,Quant,IAdv,IComp,ICompAP,IAdvAdv,Adv,AP] ** { fun AdvExistNP : Adv -> NP -> Cl ; -- kuvassa olemme me diff --git a/lib/src/french/ExtraFreAbs.gf b/lib/src/french/ExtraFreAbs.gf index 33f518ab7..166987457 100644 --- a/lib/src/french/ExtraFreAbs.gf +++ b/lib/src/french/ExtraFreAbs.gf @@ -1,7 +1,7 @@ -- Structures special for French. These are not implemented in other -- Romance languages. -abstract ExtraFreAbs = ExtraRomanceAbs ** { +abstract ExtraFreAbs = ExtraRomanceAbs - [ProDrop] ** { -- Notice: only direct (main-clause) questions are generated, and needed. diff --git a/lib/src/german/ExtraGer.gf b/lib/src/german/ExtraGer.gf index 518fe1713..6e1df9ffe 100644 --- a/lib/src/german/ExtraGer.gf +++ b/lib/src/german/ExtraGer.gf @@ -31,4 +31,8 @@ concrete ExtraGer of ExtraGerAbs = CatGer ** moegen_VV = auxVV mögen_V ; + ICompAP ap = {s = \\_ => "wie" ++ ap.s ! APred} ; + + IAdvAdv adv = {s = "wie" ++ adv.s} ; + } diff --git a/lib/src/german/ExtraGerAbs.gf b/lib/src/german/ExtraGerAbs.gf index 886b666c3..38fa60ac3 100644 --- a/lib/src/german/ExtraGerAbs.gf +++ b/lib/src/german/ExtraGerAbs.gf @@ -1,6 +1,6 @@ abstract ExtraGerAbs = Extra [ VPI,ListVPI,BaseVPI,ConsVPI,MkVPI,ComplVPIVV,ConjVPI, - VV,VP,Conj] ** { + VV,VP,Conj,IAdv,IComp,ICompAP,IAdvAdv,Adv,AP] ** { fun PPzuAdv : CN -> Adv ; -- zum Lied, zur Flasche diff --git a/lib/src/norwegian/DiffNor.gf b/lib/src/norwegian/DiffNor.gf index b8ccefd70..3ae69f84e 100644 --- a/lib/src/norwegian/DiffNor.gf +++ b/lib/src/norwegian/DiffNor.gf @@ -86,4 +86,6 @@ instance DiffNor of DiffScand = open CommonScand, Prelude in { <_, P3> => "seg" } ; + hur_IAdv = {s = "hvor"} ; + } diff --git a/lib/src/romance/ExtraRomance.gf b/lib/src/romance/ExtraRomance.gf index 18b3cd56e..d4647129a 100644 --- a/lib/src/romance/ExtraRomance.gf +++ b/lib/src/romance/ExtraRomance.gf @@ -20,4 +20,15 @@ incomplete concrete ExtraRomance of ExtraRomanceAbs = CatRomance ** ComplVPIVV v vpi = insertComplement (\\a => prepCase v.c2.c ++ vpi.s) (predV v) ; + ProDrop p = { + s = table { + Nom => let pn = p.s ! Nom in {c1 = pn.c1 ; c2 = pn.c2 ; comp = [] ; ton = pn.ton} ; + c => p.s ! c + } ; + a = p.a ; + poss = p.poss ; + hasClit = p.hasClit ; + isPol = p.isPol + } ; + } diff --git a/lib/src/romance/ExtraRomanceAbs.gf b/lib/src/romance/ExtraRomanceAbs.gf index e8a8e7daf..b223e0523 100644 --- a/lib/src/romance/ExtraRomanceAbs.gf +++ b/lib/src/romance/ExtraRomanceAbs.gf @@ -1,6 +1,6 @@ abstract ExtraRomanceAbs = Cat, Extra[ VPI,ListVPI,BaseVPI,ConsVPI,MkVPI,ComplVPIVV,ConjVPI, - VV,VP,Conj] ** { + VV,VP,Conj,Pron,ProDrop] ** { fun TPasseSimple : Tense ; --# notpresent diff --git a/lib/src/scandinavian/DiffScand.gf b/lib/src/scandinavian/DiffScand.gf index 7a17732bf..584235b5f 100644 --- a/lib/src/scandinavian/DiffScand.gf +++ b/lib/src/scandinavian/DiffScand.gf @@ -61,5 +61,7 @@ interface DiffScand = open CommonScand, Prelude in { reflPron : Agr -> Str ; + hur_IAdv : {s : Str} ; + } diff --git a/lib/src/scandinavian/ExtraScand.gf b/lib/src/scandinavian/ExtraScand.gf index 12c5fbd7d..47b6e2bf3 100644 --- a/lib/src/scandinavian/ExtraScand.gf +++ b/lib/src/scandinavian/ExtraScand.gf @@ -80,4 +80,8 @@ incomplete concrete ExtraScand of ExtraScandAbs = CatScand ** } ; ConjVPS = conjunctDistrTable2 Order Agr ; + + ICompAP ap = {s = \\a => hur_IAdv.s ++ ap.s ! a} ; + + IAdvAdv adv = {s = hur_IAdv.s ++ adv.s} ; } diff --git a/lib/src/swedish/DiffSwe.gf b/lib/src/swedish/DiffSwe.gf index 1ad42006f..f1865e2fb 100644 --- a/lib/src/swedish/DiffSwe.gf +++ b/lib/src/swedish/DiffSwe.gf @@ -77,4 +77,5 @@ instance DiffSwe of DiffScand = open CommonScand, Prelude in { <_, P3> => "sig" } ; + hur_IAdv = {s = "hur"} ; }