diff --git a/lib/resource-1.0/abstract/Adjective.gf b/lib/resource-1.0/abstract/Adjective.gf index f62f9347a..ad4d6801d 100644 --- a/lib/resource-1.0/abstract/Adjective.gf +++ b/lib/resource-1.0/abstract/Adjective.gf @@ -9,8 +9,8 @@ abstract Adjective = Cat ** { -- elliptic-relational. -- (The superlative use is covered in [Noun Noun.html].$SuperlA$.) - PositA : A -> AP ; -- warm - ComparA : A -> NP -> AP ; -- warmer than Spain + PositA : A -> AP ; -- warm + ComparA : A -> NP -> AP ; -- warmer than Spain ComplA2 : A2 -> NP -> AP ; -- divisible by 2 ReflA2 : A2 -> AP ; -- divisible by itself UseA2 : A2 -> A ; -- divisible diff --git a/lib/resource-1.0/api/Constructors.gf b/lib/resource-1.0/api/Constructors.gf index 542e1dab3..98d479157 100644 --- a/lib/resource-1.0/api/Constructors.gf +++ b/lib/resource-1.0/api/Constructors.gf @@ -37,29 +37,30 @@ incomplete resource Constructors = open Grammar in { --2 Texts, phrases, and utterances mkText : overload { - mkText : Text ; -- [empty text] - mkText : Phr -> Text ; -- John walks. - mkText : Utt -> Text ; -- John walks. - mkText : S -> Text ; -- John walks. - mkText : Cl -> Text ; -- John walks. - mkText : QS -> Text ; -- Does John walk? - mkText : Imp -> Text ; -- Walk! - mkText : Pol -> Imp -> Text ; -- Don't walk! - mkText : Phr -> Text -> Text -- John walks. ... + mkText : Text ; -- [empty text] + mkText : Phr -> Text -> Text ; -- John walks. ... + mkText : Phr -> Text ; -- John walks. + mkText : Utt -> Text ; -- John walks. + mkText : S -> Text ; -- John walks. + mkText : Cl -> Text ; -- John walks. + mkText : QS -> Text ; -- Does John walk? + mkText : Imp -> Text ; -- Walk! + mkText : Pol -> Imp -> Text -- Don't walk! } ; mkPhr : overload { - mkPhr : PConj -> Utt -> Voc -> Phr; -- But go home my friend - mkPhr : Utt -> Phr ; -- Go home - mkPhr : S -> Phr -- I go home + mkPhr : PConj -> Utt -> Voc -> Phr ; -- But go home my friend + mkPhr : Utt -> Phr ; -- Go home + mkPhr : S -> Phr ; -- I go home + mkPhr : Cl -> Phr -- I go home } ; mkUtt : overload { - mkUtt : S -> Utt ; -- John walked - mkUtt : Cl -> Utt ; -- John walks - mkUtt : QS -> Utt ; -- is it good - mkUtt : Pol -> Imp -> Utt ; -- (don't) help yourself - mkUtt : Imp -> Utt ; -- help yourself + mkUtt : S -> Utt ; -- John walked + mkUtt : Cl -> Utt ; -- John walks + mkUtt : QS -> Utt ; -- is it good + mkUtt : Pol -> Imp -> Utt ; -- (don't) help yourself + mkUtt : Imp -> Utt ; -- help yourself mkUtt : IP -> Utt ; -- who mkUtt : IAdv -> Utt ; -- why mkUtt : NP -> Utt ; -- this man @@ -86,54 +87,54 @@ incomplete resource Constructors = open Grammar in { } ; mkCl : overload { - mkCl : NP -> VP -> Cl ; -- John wants to walk - mkCl : NP -> V -> Cl ; -- John walks + mkCl : NP -> VP -> Cl ; -- John wants to walk + mkCl : NP -> V -> Cl ; -- John walks mkCl : NP -> V2 -> NP -> Cl ; -- John uses it - mkCl : VP -> Cl ; -- it rains - mkCl : NP -> RS -> Cl ; -- it is you who did it - mkCl : Adv -> S -> Cl ; -- it is yesterday she arrived - mkCl : NP -> Cl ; -- there is a house - mkCl : NP -> AP -> Cl ; -- John is nice and warm - mkCl : NP -> A -> Cl ; -- John is warm - mkCl : NP -> A -> NP -> Cl; -- John is warmer than Mary - mkCl : NP -> A2 -> NP -> Cl; -- John is married to Mary - mkCl : NP -> NP -> Cl ; -- John is a man - mkCl : NP -> Adv -> Cl -- John is here + mkCl : VP -> Cl ; -- it rains + mkCl : NP -> RS -> Cl ; -- it is you who did it + mkCl : Adv -> S -> Cl ; -- it is yesterday she arrived + mkCl : NP -> Cl ; -- there is a house + mkCl : NP -> AP -> Cl ; -- John is nice and warm + mkCl : NP -> A -> Cl ; -- John is warm + mkCl : NP -> A -> NP -> Cl; -- John is warmer than Mary + mkCl : NP -> A2 -> NP -> Cl; -- John is married to Mary + mkCl : NP -> NP -> Cl ; -- John is a man + mkCl : NP -> Adv -> Cl -- John is here } ; --2 Verb phrases and imperatives mkVP : overload { - mkVP : V -> VP ; -- sleep - mkVP : V2 -> NP -> VP ; -- use it + mkVP : V -> VP ; -- sleep + mkVP : V2 -> NP -> VP ; -- use it mkVP : V3 -> NP -> NP -> VP ; -- send a message to her - mkVP : VV -> VP -> VP ; -- want to run - mkVP : VS -> S -> VP ; -- know that she runs - mkVP : VQ -> QS -> VP ; -- ask if she runs - mkVP : VA -> AP -> VP ; -- look red + mkVP : VV -> VP -> VP ; -- want to run + mkVP : VS -> S -> VP ; -- know that she runs + mkVP : VQ -> QS -> VP ; -- ask if she runs + mkVP : VA -> AP -> VP ; -- look red mkVP : V2A -> NP -> AP -> VP ; -- paint the house red - mkVP : AP -> VP ; -- be warm - mkVP : NP -> VP ; -- be a man - mkVP : Adv -> VP ; -- be here - mkVP : VP -> Adv -> VP ; -- sleep here - mkVP : AdV -> VP -> VP -- always sleep + mkVP : AP -> VP ; -- be warm + mkVP : NP -> VP ; -- be a man + mkVP : Adv -> VP ; -- be here + mkVP : VP -> Adv -> VP ; -- sleep here + mkVP : AdV -> VP -> VP -- always sleep } ; mkImp : overload { - mkImp : VP -> Imp ; -- go there now - mkImp : V -> Imp ; -- go - mkImp : V2 -> NP -> Imp -- take it + mkImp : VP -> Imp ; -- go there now + mkImp : V -> Imp ; -- go + mkImp : V2 -> NP -> Imp -- take it } ; --2 Noun phrases and determiners mkNP : overload { mkNP : Det -> CN -> NP ; -- the old man - mkNP : Det -> N -> NP ; -- the man + mkNP : Det -> N -> NP ; -- the man mkNP : Num -> CN -> NP ; -- forty-five old men - mkNP : Num -> N -> NP ; -- forty-five men + mkNP : Num -> N -> NP ; -- forty-five men mkNP : Int -> CN -> NP ; -- 51 old men - mkNP : Int -> N -> NP ; -- 51 men + mkNP : Int -> N -> NP ; -- 51 men mkNP : Digit -> CN -> NP; -- five old men mkNP : Digit -> N -> NP ; -- five men mkNP : PN -> NP ; -- John @@ -141,29 +142,29 @@ incomplete resource Constructors = open Grammar in { mkNP : Predet -> NP -> NP ; -- all the men mkNP : NP -> V2 -> NP ; -- the number squared mkNP : NP -> Adv -> NP ; -- Paris at midnight - mkNP : Conj -> NP -> NP -> NP ; -- John and Mary walk - mkNP : DConj -> NP -> NP -> NP ; -- both John and Mary walk - mkNP : Conj -> ListNP -> NP ; -- John, Mary, and Bill walk - mkNP : DConj -> ListNP -> NP -- both John, Mary, and Bill walk + mkNP : Conj -> NP -> NP -> NP ; -- John and Mary + mkNP : DConj -> NP -> NP -> NP ; -- both John and Mary + mkNP : Conj -> ListNP -> NP ; -- John, Mary, and Bill + mkNP : DConj -> ListNP -> NP -- both John, Mary, and Bill } ; mkDet : overload { mkDet : QuantSg -> Ord -> Det ; -- this best (man) mkDet : Det ; -- the (man) - mkDet : QuantSg -> Det ; -- this (man) + mkDet : QuantSg -> Det ; -- this (man) mkDet : QuantPl -> Num -> Ord -> Det ; -- these five best (men) mkDet : QuantPl -> Det ; -- these (men) - mkDet : Quant -> Det ; -- this (man) - mkDet : Num -> Det ; -- forty-five (men) - mkDet : Int -> Det ; -- 51 (men) - mkDet : Digit -> Det ; -- five (men) - mkDet : Pron -> Det -- my (house) + mkDet : Quant -> Det ; -- this (man) + mkDet : Num -> Det ; -- forty-five (men) + mkDet : Int -> Det ; -- 51 (men) + mkDet : Digit -> Det ; -- five (men) + mkDet : Pron -> Det -- my (house) } ; - def_Det : Det ; -- the (man) - indef_Det : Det ; -- a (man) - mass_Det : Det ; -- (water) + def_Det : Det ; -- the (man) + indef_Det : Det ; -- a (man) + mass_Det : Det ; -- (water) -- More determiners are available in the Structural module @@ -172,15 +173,15 @@ incomplete resource Constructors = open Grammar in { mkNum : overload { mkNum : Num ; -- [no num] - mkNum : Int -> Num ; -- 51 + mkNum : Int -> Num ; -- 51 mkNum : Digit -> Num } ; mkOrd : overload { mkOrd : Ord ; -- [no ord] - mkOrd : Int -> Ord ; -- 51st + mkOrd : Int -> Ord ; -- 51st mkOrd : Digit -> Ord ; -- fifth - mkOrd : A -> Ord -- largest + mkOrd : A -> Ord -- largest } ; --2 Common nouns diff --git a/lib/resource-1.0/api/todoConstructors.txt b/lib/resource-1.0/api/todoConstructors.txt new file mode 100644 index 000000000..f61fde8c4 --- /dev/null +++ b/lib/resource-1.0/api/todoConstructors.txt @@ -0,0 +1,104 @@ +-- Text + TQuestMark : Phr -> Text -> Text ; -- Are you OK? ... + TExclMark : Phr -> Text -> Text ; -- John walks! ... + +-- Utt + UttImpPl : Pol -> Imp -> Utt; -- (don't) help yourselves + UttImpPol : Pol -> Imp -> Utt ; -- (don't) help (polite) + ImpPl1 : VP -> Utt ; -- let's go + +-- Cl + GenericCl : VP -> Cl ; -- one sleeps + + +-- VP + ReflV2 : V2 -> VP ; -- use itself + PassV2 : V2 -> VP ; -- be used + ProgrVP : VP -> VP ; -- be sleeping + + +-- Verb: coercions + UseVQ : VQ -> V2 ; -- ask (a question) + UseVS : VS -> V2 ; -- know (a secret) + +-- how to arrange and extend these + def_Det : Det ; -- the (man) + indef_Det : Det ; -- a (man) + mass_Det : Det ; -- (water) + +-- Num + NumNumeral : Numeral -> Num ; -- fifty-one + AdNum : AdN -> Num -> Num ; -- almost 51 + +-- Ord + OrdNumeral : Numeral -> Ord ; -- fifty-first + +-- Adjective: strange rule, not covered + UseA2 : A2 -> A ; -- divisible + +-- CAdv (in Adverb) + AdnCAdv : CAdv -> AdN ; -- more (than five) + +-- QCl + QuestIComp : IComp -> NP -> QCl ; -- where is John + +-- mkIAdv + PrepIP : Prep -> IP -> IAdv ; -- with whom + +-- mkIComp + CompIAdv : IAdv -> IComp ; -- where + +-- ListX = ListAdv, ListAP, ListNP, ListS + BaseX + ConsX + +-- RS, QS: all special cases found in S? + +-- Pol, Tense, Ant + PPos, PNeg : Pol ; -- I sleep/don't sleep + TPres : Tense ; + ASimul : Ant ; + TPast, TFut, TCond : Tense ; -- I slept/will sleep/would sleep --# notpresent + AAnter : Ant ; -- I have slept --# notpresent + + +------------------------------------------ +--- strange cats: + +SC + mkCN : CN -> SC -> CN ; -- fact that John smokes, question if he does + mkCN : N -> SC -> CN ; -- fact that John smokes, question if he does + mkAP : AP -> SC -> AP ; -- great that she won; uncertain if she did + +Slash + mkQCl : IP -> Slash -> QCl ; -- who does John love + mkRCl : RP -> Slash -> RCl -- whom John loves + mkSlash : Slash -> Adv -> Slash ; -- (whom) he sees tomorrow + +VP? + -- appears in 9 places, of which 2 are recursive + +-- Comp: already eliminated + +-------------------------------------------- +--- granted special cases + + Text - Phr - Utt + + S - Cl -- Tense Ant Pol + QS - QCl + RS - RCl + + VP - V | V2 NP | V3 NP NP ... + + NP - PN | Pron + + CN - N + + AP - A + + Det - Num | Int | Digit + + Num - Numeral | Digit | Int + + ListX - X X diff --git a/lib/resource-1.0/english/ParadigmsEng.gf b/lib/resource-1.0/english/ParadigmsEng.gf index dfa06a67c..bca681ba4 100644 --- a/lib/resource-1.0/english/ParadigmsEng.gf +++ b/lib/resource-1.0/english/ParadigmsEng.gf @@ -115,15 +115,7 @@ oper mkN3 : N -> Prep -> Prep -> N3 ; ---3 Relational common noun phrases --- --- In some cases, you may want to make a complex $CN$ into a --- relational noun (e.g. "the old town hall of"). - cnN2 : CN -> Prep -> N2 ; - cnN3 : CN -> Prep -> Prep -> N3 ; - --- --3 Proper names and noun phrases -- -- Proper names, with a regular genitive, are formed as follows @@ -346,6 +338,16 @@ oper mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ; regN2 n = mkN2 (regN n) (mkPrep "of") ; mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ; + +--3 Relational common noun phrases +-- +-- In some cases, you may want to make a complex $CN$ into a +-- relational noun (e.g. "the old town hall of"). + + cnN2 : CN -> Prep -> N2 ; + cnN3 : CN -> Prep -> Prep -> N3 ; + +-- This is obsolete. cnN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ; cnN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ;