diff --git a/lib/resource-1.0/api/Constructors.gf b/lib/resource-1.0/api/Constructors.gf index bf24513d6..c6988fa9e 100644 --- a/lib/resource-1.0/api/Constructors.gf +++ b/lib/resource-1.0/api/Constructors.gf @@ -64,23 +64,23 @@ incomplete resource Constructors = open Grammar in { oper mkText : overload { - mkText : Phr -> Text ; -- But John walks. - mkText : Phr -> (Punct) -> (Text) -> Text ; -- John walks? Yes. + mkText : Phr -> Text ; -- 1. But John walks. + mkText : Phr -> (Punct) -> (Text) -> Text ; -- 2. John walks? Yes. -- A text can also be directly built from utterances, which in turn can -- be directly built from sentences, present-tense clauses, questions, or -- positive imperatives. - mkText : Utt -> Text ; -- John. - mkText : S -> Text ; -- John walked. - mkText : Cl -> Text ; -- John walks. - mkText : QS -> Text ; -- Did John walk? - mkText : Imp -> Text -- Walk! + mkText : Utt -> Text ; -- 3. John. + mkText : S -> Text ; -- 4. John walked. + mkText : Cl -> Text ; -- 5. John walks. + mkText : QS -> Text ; -- 6. Did John walk? + mkText : Imp -> Text -- 7. Walk! } ; -- A text can also be empty. - emptyText : Text ; -- [empty text] + emptyText : Text ; -- 8. [empty text] --3 Punct: punctuation marks @@ -97,17 +97,17 @@ incomplete resource Constructors = open Grammar in { -- and a vocative, both of which are by default empty. mkPhr : overload { - mkPhr : Utt -> Phr ; -- why - mkPhr : (PConj) -> Utt -> (Voc) -> Phr ; -- but why John + mkPhr : Utt -> Phr ; -- 1. why + mkPhr : (PConj) -> Utt -> (Voc) -> Phr ; -- 2. but why John -- A phrase can also be directly built by a sentence, a present-tense -- clause, a question, or a positive singular imperative. - mkPhr : S -> Phr ; -- John walked - mkPhr : Cl -> Phr ; -- John walks - mkPhr : QS -> Phr ; -- did John walk - mkPhr : Imp -> Phr -- walk + mkPhr : S -> Phr ; -- 3. John walked + mkPhr : Cl -> Phr ; -- 4. John walks + mkPhr : QS -> Phr ; -- 5. did John walk + mkPhr : Imp -> Phr -- 6. walk } ; --3 PConj, phrasal conjunctions @@ -115,43 +115,43 @@ incomplete resource Constructors = open Grammar in { -- Any conjunction can be used as a phrasal conjunction. -- More phrasal conjunctions are defined in $Structural$. - mkPConj : Conj -> PConj ; -- and + mkPConj : Conj -> PConj ; -- 1. and --3 Voc, vocatives -- Any noun phrase can be turned into a vocative. -- More vocatives are defined in $Structural$. - mkVoc : NP -> Voc ; -- John + mkVoc : NP -> Voc ; -- 1. John --3 Utt, utterances -- Utterances are formed from sentences, clauses, questions, and positive singular imperatives. mkUtt : overload { - mkUtt : S -> Utt ; -- John walked - mkUtt : Cl -> Utt ; -- John walks - mkUtt : QS -> Utt ; -- did John walk - mkUtt : Imp -> Utt ; -- love yourself + mkUtt : S -> Utt ; -- 1. John walked + mkUtt : Cl -> Utt ; -- 2. John walks + mkUtt : QS -> Utt ; -- 3. did John walk + mkUtt : Imp -> Utt ; -- 4. love yourself -- Imperatives can also vary in $ImpForm$ (number/politeness) and -- polarity. - mkUtt : (ImpForm) -> (Pol) -> Imp -> Utt ; -- don't love yourselves + mkUtt : (ImpForm) -> (Pol) -> Imp -> Utt ; -- 5. don't love yourselves -- Utterances can also be formed from interrogative phrases and -- interrogative adverbials, noun phrases, adverbs, and verb phrases. - mkUtt : IP -> Utt ; -- who - mkUtt : IAdv -> Utt ; -- why - mkUtt : NP -> Utt ; -- John - mkUtt : Adv -> Utt ; -- here - mkUtt : VP -> Utt -- to walk + mkUtt : IP -> Utt ; -- 6. who + mkUtt : IAdv -> Utt ; -- 7. why + mkUtt : NP -> Utt ; -- 8. John + mkUtt : Adv -> Utt ; -- 9. here + mkUtt : VP -> Utt -- 10. to walk } ; -- The plural first-person imperative is a special construction. - lets_Utt : VP -> Utt ; -- let's walk + lets_Utt : VP -> Utt ; -- 11. let's walk --2 Auxiliary parameters for phrases and sentences @@ -202,20 +202,20 @@ incomplete resource Constructors = open Grammar in { -- A sentence has a fixed tense, anteriority and polarity. mkS : overload { - mkS : Cl -> S ; -- John walks - mkS : (Tense) -> (Ant) -> (Pol) -> Cl -> S ; -- John wouldn't have walked + mkS : Cl -> S ; -- 1. John walks + mkS : (Tense) -> (Ant) -> (Pol) -> Cl -> S ; -- 2. John wouldn't have walked -- Sentences can be combined with conjunctions. This can apply to a pair -- of sentences, but also to a list of more than two. - mkS : Conj -> S -> S -> S ; -- John walks and I run - mkS : Conj -> ListS -> S ; -- John walks, I run and you sleep - mkS : DConj -> S -> S -> S ; -- either John walk or I run - mkS : DConj -> ListS -> S ; -- either John walks, I run or you sleep + mkS : Conj -> S -> S -> S ; -- 3. John walks and I run + mkS : Conj -> ListS -> S ; -- 4. John walks, I run and you sleep + mkS : DConj -> S -> S -> S ; -- 5. either John walk or I run + mkS : DConj -> ListS -> S ; -- 6. either John walks, I run or you sleep -- A sentence can be prefixed by an adverb. - mkS : Adv -> S -> S -- today, John will walk + mkS : Adv -> S -> S -- 7. today, John walks } ; --3 Cl, clauses @@ -225,42 +225,49 @@ incomplete resource Constructors = open Grammar in { -- with a verb and appropriate arguments. mkCl : overload { - mkCl : NP -> V -> Cl ; -- John walks - mkCl : NP -> V2 -> NP -> Cl ; -- John loves her - mkCl : NP -> V3 -> NP -> NP -> Cl ; -- John sends it to her - mkCl : NP -> AP -> Cl ; -- John is nice and warm - mkCl : NP -> A -> Cl ; -- John is nice - mkCl : NP -> A -> NP -> Cl ; -- John is nicer than Mary - mkCl : NP -> A2 -> NP -> Cl ; -- John is married to Mary - mkCl : NP -> NP -> Cl ; -- John is the man - mkCl : NP -> CN -> Cl ; -- John is an old man - mkCl : NP -> N -> Cl ; -- John is a man - mkCl : NP -> Adv -> Cl ; -- John is here + mkCl : NP -> V -> Cl ; -- 1. John walks + mkCl : NP -> V2 -> NP -> Cl ; -- 2. John loves her + mkCl : NP -> V3 -> NP -> NP -> Cl ; -- 3. John sends it to her + mkCl : NP -> VV -> VP -> Cl ; -- 4. John wants to walk + mkCl : NP -> VS -> S -> Cl ; -- 5. John says that it is good + mkCl : NP -> VQ -> QS -> Cl ; -- 6. John wonders if it is good + mkCl : NP -> VA -> AP -> Cl ; -- 7. John becomes old + mkCl : NP -> V2A ->NP -> AP -> Cl ; -- 8. John paints it red + mkCl : NP -> AP -> Cl ; -- 9. John is very old + mkCl : NP -> A -> Cl ; -- 10. John is old + mkCl : NP -> A -> NP -> Cl ; -- 11. John is older than her + mkCl : NP -> A2 -> NP -> Cl ; -- 12. John is married to her + mkCl : NP -> N -> Cl ; -- 13. John is a man + mkCl : NP -> CN -> Cl ; -- 14. John is an old man + mkCl : NP -> NP -> Cl ; -- 15. John is the man + mkCl : NP -> Adv -> Cl ; -- 16. John is here -- As the general rule, a clause can be built from a subject noun phrase and -- a verb phrase. - mkCl : NP -> VP -> Cl ; -- John wants to walk + mkCl : NP -> VP -> Cl ; -- 17. John walks here -- Subjectless verb phrases are used for impersonal actions. - mkCl : V -> Cl ; -- it rains - mkCl : VP -> Cl ; -- it is getting warm + mkCl : V -> Cl ; -- 18. it rains + mkCl : VP -> Cl ; -- 19. it is raining -- Existentials are a special form of clauses. - mkCl : NP -> Cl ; -- there is a house + mkCl : N -> Cl ; -- 20. there is a house + mkCl : CN -> Cl ; -- 21. there is an old houses + mkCl : NP -> Cl ; -- 22. there are five houses -- There are also special forms in which a noun phrase or an adverb is -- emphasized. - mkCl : NP -> RS -> Cl ; -- it is John who walks - mkCl : Adv -> S -> Cl -- it is here John walks + mkCl : NP -> RS -> Cl ; -- 23. it is John that walks + mkCl : Adv -> S -> Cl -- 24. it is here John walks } ; -- Generic clauses are one with an impersonal subject. - genericCl : VP -> Cl ; -- one walks + genericCl : VP -> Cl ; -- 25. one walks --2 Verb phrases and imperatives @@ -339,10 +346,12 @@ incomplete resource Constructors = open Grammar in { mkNP : QuantSg -> N -> NP ; -- this man mkNP : QuantPl -> CN -> NP ; -- these old men mkNP : QuantPl -> N -> NP ; -- these men - mkNP : Num -> CN -> NP ; -- forty-five old men - mkNP : Num -> N -> NP ; -- forty-five men + mkNP : Numeral -> CN -> NP ; -- forty-five old men + mkNP : Numeral -> N -> NP ; -- forty-five men mkNP : Int -> CN -> NP ; -- 45 old men mkNP : Int -> N -> NP ; -- 45 men + mkNP : Num -> CN -> NP ; -- almost forty-five old men + mkNP : Num -> N -> NP ; -- almost forty-five men mkNP : Pron -> CN -> NP; -- my old man mkNP : Pron -> N -> NP ; -- my man @@ -834,12 +843,25 @@ incomplete resource Constructors = open Grammar in { = \s,v,o -> PredVP s (ComplV2 v o); mkCl : NP -> V3 -> NP -> NP -> Cl = \s,v,o,i -> PredVP s (ComplV3 v o i); + + mkCl : NP -> VV -> VP -> Cl = \s,v,vp -> PredVP s (ComplVV v vp) ; + mkCl : NP -> VS -> S -> Cl = \s,v,p -> PredVP s (ComplVS v p) ; + mkCl : NP -> VQ -> QS -> Cl = \s,v,q -> PredVP s (ComplVQ v q) ; + mkCl : NP -> VA -> AP -> Cl = \s,v,q -> PredVP s (ComplVA v q) ; + mkCl : NP -> V2A ->NP -> AP -> Cl = \s,v,n,q -> PredVP s (ComplV2A v n q) ; + + + mkCl : VP -> Cl -- it rains = ImpersCl ; mkCl : NP -> RS -> Cl -- it is you who did it = CleftNP ; mkCl : Adv -> S -> Cl -- it is yesterday she arrived = CleftAdv ; + mkCl : N -> Cl -- there is a house + = \y -> ExistNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) (UseN y)) ; + mkCl : CN -> Cl -- there is a house + = \y -> ExistNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) y) ; mkCl : NP -> Cl -- there is a house = ExistNP ; mkCl : NP -> AP -> Cl -- John is nice and warm @@ -882,6 +904,10 @@ incomplete resource Constructors = open Grammar in { mkNP : Pron -> CN -> NP = \p,n -> DetCN (DetSg (SgQuant (PossPron p)) NoOrd) n ; mkNP : Pron -> N -> NP = \p,n -> DetCN (DetSg (SgQuant (PossPron p)) NoOrd) (UseN n) ; + mkNP : Numeral -> CN -> NP -- 51 old men + = \d,n -> DetCN (DetPl (PlQuant IndefArt) (NumNumeral d) NoOrd) n ; + mkNP : Numeral -> N -> NP -- 51 men + = \d,n -> DetCN (DetPl (PlQuant IndefArt) (NumNumeral d) NoOrd) (UseN n) ; mkNP : Int -> CN -> NP -- 51 old men = \d,n -> DetCN (DetPl (PlQuant IndefArt) (NumInt d) NoOrd) n ; mkNP : Int -> N -> NP -- 51 men diff --git a/lib/resource-1.0/api/examples/Exx.gf b/lib/resource-1.0/api/examples/Exx.gf index 4c1535be4..853241f53 100644 --- a/lib/resource-1.0/api/examples/Exx.gf +++ b/lib/resource-1.0/api/examples/Exx.gf @@ -14,8 +14,9 @@ fun ex1_S, ex2_S, ex3_S, ex4_S, ex5_S, ex6_S, ex7_S : S ; - ex1_Cl, ex2_Cl, ex3_Cl, ex4_Cl, ex5_Cl, ex6_Cl, ex7_Cl, ex8_Cl, ex8_Cl, ex10_Cl, - ex11_Cl, ex12_Cl, ex13_Cl, ex14_Cl, ex15_Cl, ex16_Cl, ex17_Cl, ex18_Cl : Cl ; + ex1_Cl, ex2_Cl, ex3_Cl, ex4_Cl, ex5_Cl, ex6_Cl, ex7_Cl, ex8_Cl, ex9_Cl, ex10_Cl, + ex11_Cl, ex12_Cl, ex13_Cl, ex14_Cl, ex15_Cl, ex16_Cl, ex17_Cl, ex18_Cl, ex19_Cl, ex20_Cl, + ex21_Cl, ex22_Cl, ex23_Cl, ex24_Cl, ex25_Cl : Cl ; } diff --git a/lib/resource-1.0/api/examples/ExxI.gf b/lib/resource-1.0/api/examples/ExxI.gf index 2e4bc0444..1c96b6d2c 100644 --- a/lib/resource-1.0/api/examples/ExxI.gf +++ b/lib/resource-1.0/api/examples/ExxI.gf @@ -41,10 +41,37 @@ incomplete concrete ExxI of Exx = Cat ** open Lang, Constructors in { ex4_S = mkS and_Conj (mkListS (mkS (mkCl john_NP walk_V)) (mkListS (mkS (mkCl (mkNP i_Pron) run_V)) (mkS (mkCl (mkNP youSg_Pron) sleep_V)))) ; ex5_S = mkS either7or_DConj (mkS (mkCl john_NP walk_V)) (mkS (mkCl (mkNP i_Pron) run_V)) ; ex6_S = mkS either7or_DConj (mkListS (mkS (mkCl john_NP walk_V)) (mkListS (mkS (mkCl (mkNP i_Pron) run_V)) (mkS (mkCl (mkNP youSg_Pron) sleep_V)))) ; + ex7_S = mkS today_Adv (mkS futureTense (mkCl john_NP walk_V)) ; - + ex1_Cl = mkCl john_NP walk_V ; + ex2_Cl = mkCl john_NP love_V2 (mkNP she_Pron) ; + ex3_Cl = mkCl john_NP send_V3 (mkNP it_Pron) (mkNP she_Pron) ; + ex4_Cl = mkCl john_NP want_VV (mkVP walk_V) ; + ex5_Cl = mkCl john_NP say_VS (mkS (mkCl (mkNP it_Pron) good_A)) ; + ex6_Cl = mkCl john_NP wonder_VQ (mkQS (mkCl (mkNP it_Pron) good_A)) ; + ex7_Cl = mkCl john_NP become_VA (mkAP old_A) ; + ex8_Cl = mkCl john_NP paint_V2A (mkNP it_Pron) (mkAP red_A) ; + ex9_Cl = mkCl john_NP (mkAP very_AdA (mkAP old_A)) ; + ex10_Cl = mkCl john_NP old_A ; + ex11_Cl = mkCl john_NP old_A (mkNP she_Pron) ; + ex12_Cl = mkCl john_NP married_A2 (mkNP she_Pron) ; + ex13_Cl = mkCl john_NP man_N ; + ex14_Cl = mkCl john_NP (mkCN old_A man_N) ; + ex15_Cl = mkCl john_NP (mkNP defSgDet man_N) ; + ex16_Cl = mkCl john_NP here_Adv ; + ex17_Cl = mkCl john_NP (mkVP (mkVP walk_V) here_Adv) ; + ex18_Cl = mkCl rain_V0 ; + ex19_Cl = mkCl (progressiveVP (mkVP rain_V0)) ; + ex20_Cl = mkCl house_N ; + ex21_Cl = mkCl (mkCN old_A house_N) ; + ex22_Cl = mkCl (mkNP n5_Numeral house_N) ; + ex23_Cl = mkCl john_NP (mkRS (mkRCl which_RP (mkVP walk_V))) ; + ex24_Cl = mkCl here_Adv (mkS (mkCl john_NP walk_V)) ; + ex25_Cl = mkCl (mkVP walk_V) ; oper john_PN = paris_PN ; ---- + today_Adv = here_Adv ; ---- + john_NP = mkNP john_PN ; }