diff --git a/lib/resource-1.0/abstract/Lexicon.gf b/lib/resource-1.0/abstract/Lexicon.gf index a453a59ac..80c7a2e24 100644 --- a/lib/resource-1.0/abstract/Lexicon.gf +++ b/lib/resource-1.0/abstract/Lexicon.gf @@ -157,6 +157,7 @@ fun important_A : A ; industry_N : N ; iron_N : N ; + john_PN : PN ; jump_V : V ; kill_V2 : V2 ; king_N : N ; @@ -186,7 +187,6 @@ fun man_N : N ; married_A2 : A2 ; meat_N : N ; - meat_N : N ; milk_N : N ; moon_N : N ; mother_N2 : N2 ; @@ -223,10 +223,13 @@ fun push_V2 : V2 ; put_V2 : V2 ; queen_N : N ; + question_N : N ; radio_N : N ; rain_N : N ; rain_V0 : V ; read_V2 : V2 ; + ready_A : A ; + reason_N : N ; red_A : A ; religion_N : N ; restaurant_N : N ; @@ -311,6 +314,7 @@ fun think_V : V ; throw_V2 : V2 ; tie_V2 : V2 ; + today_Adv : Adv ; tongue_N : N ; tooth_N : N ; train_N : N ; @@ -318,6 +322,7 @@ fun tree_N : N ; turn_V : V ; ugly_A : A ; + uncertain_A : A ; understand_V2 : V2 ; university_N : N ; village_N : N ; @@ -329,7 +334,6 @@ fun wash_V2 : V2 ; watch_V2 : V2 ; water_N : N ; - water_N : N ; wet_A : A ; white_A : A ; wide_A : A ; diff --git a/lib/resource-1.0/api/Constructors.gf b/lib/resource-1.0/api/Constructors.gf index 279cfb5ae..e3ac49b87 100644 --- a/lib/resource-1.0/api/Constructors.gf +++ b/lib/resource-1.0/api/Constructors.gf @@ -415,25 +415,40 @@ incomplete resource Constructors = open Grammar in { indefPlDet : Det ; -- 14. (houses) ---3 Quant, QuantSg, and QuantPl, quantifiers +--3 Quant, quantifiers with both sincular and plural forms --- Definite and indefinite articles have both singular and plural forms (even though the +-- Definite and indefinite articles have both singular and plural +-- forms (even though the -- plural indefinite is empty in most languages). defQuant : Quant ; -- 1. the indefQuant : Quant ; -- 2. a --- From quantifiers that can have both forms, these constructors build the singular and --- the plural forms. +-- More quantifiers are available in the $Structural$ module. + + +--3 QuantSg, singular quantifiers + +-- From quantifiers that can have both forms, this constructor +-- builds the singular form. mkQuantSg : Quant -> QuantSg ; -- 1. this - mkQuantPl : Quant -> QuantPl ; -- 1. these -- The mass noun phrase constructor is treated as a singular quantifier. massQuant : QuantSg ; -- 2. (mass terms) --- More quantifiers are available in the $Structural$ module. +-- More singular quantifiers are available in the $Structural$ module. + + +--3 QuantPl, plural quantifiers + +-- From quantifiers that can have both forms, this constructor +-- builds the plural form. + + mkQuantPl : Quant -> QuantPl ; -- 1. these + +-- More plural quantifiers are available in the $Structural$ module. --3 Num, cardinal numerals @@ -442,51 +457,52 @@ incomplete resource Constructors = open Grammar in { -- and from symbolic integers. mkNum : overload { - mkNum : Numeral -> Num ; -- twenty - mkNum : Int -> Num ; -- 51 + mkNum : Numeral -> Num ; -- 1. twenty + mkNum : Int -> Num ; -- 2. 51 -- A numeral can be modified by an adnumeral. - mkNum : AdN -> Num -> Num -- almost ten + mkNum : AdN -> Num -> Num -- 3. almost ten } ; + --3 Ord, ordinal numerals --- Just like cardinals, ordinals can be formed from number words ($Numeral$), their special case digits, +-- Just like cardinals, ordinals can be formed from number words ($Numeral$) -- and from symbolic integers. mkOrd : overload { - mkOrd : Numeral -> Ord ; -- sixtieth - mkOrd : Int -> Ord ; -- 51st + mkOrd : Numeral -> Ord ; -- 1. twentieth + mkOrd : Int -> Ord ; -- 2. 51st -- Also adjectives in the superlative form can appear on ordinal positions. - mkOrd : A -> Ord -- best + mkOrd : A -> Ord -- 3. best } ; --3 AdN, adnumerals -- Comparison adverbs can be used as adnumerals. - mkAdN : CAdv -> AdN ; -- more (than five) + mkAdN : CAdv -> AdN ; -- 1. more than --3 Numeral, number words -- Digits and some "round" numbers are here given as shorthands. - n1_Numeral : Numeral ; -- one - n2_Numeral : Numeral ; -- two - n3_Numeral : Numeral ; -- three - n4_Numeral : Numeral ; -- four - n5_Numeral : Numeral ; -- five - n6_Numeral : Numeral ; -- six - n7_Numeral : Numeral ; -- seven - n8_Numeral : Numeral ; -- eight - n9_Numeral : Numeral ; -- nine - n10_Numeral : Numeral ; -- ten - n20_Numeral : Numeral ; -- twenty - n100_Numeral : Numeral ; -- hundred - n1000_Numeral : Numeral ; -- thousand + n1_Numeral : Numeral ; -- 1. one + n2_Numeral : Numeral ; -- 2. two + n3_Numeral : Numeral ; -- 3. three + n4_Numeral : Numeral ; -- 4. four + n5_Numeral : Numeral ; -- 5. five + n6_Numeral : Numeral ; -- 6. six + n7_Numeral : Numeral ; -- 7. seven + n8_Numeral : Numeral ; -- 8. eight + n9_Numeral : Numeral ; -- 9. nine + n10_Numeral : Numeral ; -- 10. ten + n20_Numeral : Numeral ; -- 11. twenty + n100_Numeral : Numeral ; -- 12. hundred + n1000_Numeral : Numeral ; -- 13. thousand -- See $Numeral$ for the full set of constructors, or use $Int$ for other numbers. @@ -499,43 +515,45 @@ incomplete resource Constructors = open Grammar in { -- The most frequent way of forming common noun phrases is from atomic nouns $N$. - mkCN : N -> CN ; -- house + mkCN : N -> CN ; -- 1. house -- Common noun phrases can be formed from relational nouns by providing arguments. - mkCN : N2 -> NP -> CN ; -- son of the king - mkCN : N3 -> NP -> NP -> CN ; -- flight from Moscow to Paris + mkCN : N2 -> NP -> CN ; -- 2. mother of John + mkCN : N3 -> NP -> NP -> CN ; -- 3. distance from this city to Paris -- Relational nouns can also be used without their arguments. - mkCN : N2 -> CN ; -- son - mkCN : N3 -> CN ; -- flight + mkCN : N2 -> CN ; -- 4. son + mkCN : N3 -> CN ; -- 5. flight -- A common noun phrase can be modified by adjectival phrase. We give special -- cases of this, where one or both of the arguments are atomic. - mkCN : AP -> CN -> CN ; -- very big blue house - mkCN : A -> CN -> CN ; -- big blue house - mkCN : AP -> N -> CN ; -- very big house - mkCN : A -> N -> CN ; -- big house + mkCN : A -> N -> CN ; -- 6. big house + mkCN : A -> CN -> CN ; -- 7. big blue house + mkCN : AP -> N -> CN ; -- 8. very big house + mkCN : AP -> CN -> CN ; -- 9. very big blue house -- A common noun phrase can be modified by a relative clause or an adverb. - mkCN : CN -> RS -> CN ; -- big house that John loves - mkCN : N -> RS -> CN ; -- house that John loves - mkCN : CN -> Adv -> CN ; -- big house on the mountain - mkCN : N -> Adv -> CN ; -- house on the mountain + mkCN : N -> RS -> CN ; -- 10. house that John loves + mkCN : CN -> RS -> CN ; -- 11. big house that John loves + mkCN : N -> Adv -> CN ; -- 12. house in the city + mkCN : CN -> Adv -> CN ; -- 13. big house in the city --- For some nouns it makes sense to modify them by sentences, questions, or infinitives. +-- For some nouns it makes sense to modify them by sentences, +-- questions, or infinitives. But syntactically this is possible for +-- all nouns. - mkCN : CN -> S -> CN ; -- fact that John walks - mkCN : CN -> QS -> CN ; -- question if John smokes - mkCN : CN -> VP -> CN ; -- reason to smoke + mkCN : CN -> S -> CN ; -- 14. rule that John walks + mkCN : CN -> QS -> CN ; -- 15. question if John walks + mkCN : CN -> VP -> CN ; -- 16. reason to walk -- A noun can be used in apposition to a noun phrase, especially a proper name. - mkCN : CN -> NP -> CN ; -- old king John - mkCN : N -> NP -> CN -- king John + mkCN : N -> NP -> CN ; -- 17. king John + mkCN : CN -> NP -> CN -- 18. old king John } ; @@ -548,30 +566,33 @@ incomplete resource Constructors = open Grammar in { -- Adjectival phrases can be formed from atomic adjectives by using the positive form or -- the comparative with a complement - mkAP : A -> AP ; -- old - mkAP : A -> NP -> AP ; -- older than John + mkAP : A -> AP ; -- 1. old + mkAP : A -> NP -> AP ; -- 2. older than John -- Relational adjectives can be used with a complement or a reflexive - mkAP : A2 -> NP -> AP ; -- married to her - mkAP : A2 -> AP ; -- married to himself + mkAP : A2 -> NP -> AP ; -- 3. married to her + mkAP : A2 -> AP ; -- 4. married to myself --- Some adjectival phrases can take as complements sentences, questions, or infinitives. +-- Some adjectival phrases can take as complements sentences, +-- questions, or infinitives. Syntactically this is possible for +-- all adjectives. - mkAP : AP -> S -> AP ; -- great that she won - mkAP : AP -> QS -> AP ; -- uncertain if she won - mkAP : AP -> VP -> AP ; -- ready to go + mkAP : AP -> S -> AP ; -- 5. probable that John walks + mkAP : AP -> QS -> AP ; -- 6. uncertain if John walks + mkAP : AP -> VP -> AP ; -- 7. ready to go -- An adjectival phrase can be modified by an adadjective. - mkAP : AdA -> AP -> AP ; -- very big + mkAP : AdA -> A -> AP ; -- 8. very old + mkAP : AdA -> AP -> AP ; -- 9. very very old -- Conjunction can be formed from two or more adjectival phrases. - mkAP : Conj -> AP -> AP -> AP ; -- warm and big - mkAP : Conj -> ListAP -> AP ; -- warm, big, and cheap - mkAP : DConj -> AP -> AP -> AP ; -- both warm and big - mkAP : DConj -> ListAP -> AP -- both warm, big, and cheap + mkAP : Conj -> AP -> AP -> AP ; -- 10. old and big + mkAP : Conj -> ListAP -> AP ; -- 11. old, big, and warm + mkAP : DConj -> AP -> AP -> AP ; -- 12. either old or big + mkAP : DConj -> ListAP -> AP -- 13. either old, big, or warm } ; @@ -581,51 +602,55 @@ incomplete resource Constructors = open Grammar in { -- Adverbs can be formed from adjectives. - mkAdv : A -> Adv ; -- quickly + mkAdv : A -> Adv ; -- 1. warmly -- Prepositional phrases are treated as adverbs. - mkAdv : Prep -> NP -> Adv ; -- in the house + mkAdv : Prep -> NP -> Adv ; -- 2. with John -- Subordinate sentences are treated as adverbs. - mkAdv : Subj -> S -> Adv ; -- when he arrives + mkAdv : Subj -> S -> Adv ; -- 3. when John walks -- An adjectival adverb can be compared to a noun phrase or a sentence. - mkAdv : CAdv -> A -> NP -> Adv ; -- more slowly than John - mkAdv : CAdv -> A -> S -> Adv ; -- more slowly than he runs + mkAdv : CAdv -> A -> NP -> Adv ; -- 4. more warmly than John + mkAdv : CAdv -> A -> S -> Adv ; -- 5. more warmly than John walks -- Adverbs can be modified by adadjectives. - mkAdv : AdA -> Adv -> Adv ; -- very quickly + mkAdv : AdA -> Adv -> Adv ; -- 6. very warmly -- Conjunction can be formed from two or more adverbial phrases. - mkAdv : Conj -> Adv -> Adv -> Adv ; -- here and now - mkAdv : Conj -> ListAdv -> Adv ; -- here, now, and with you - mkAdv : DConj -> Adv -> Adv -> Adv ; -- both here and now - mkAdv : DConj -> ListAdv -> Adv -- both here, now, and with you + mkAdv : Conj -> Adv -> Adv -> Adv ; -- 7. here and now + mkAdv : Conj -> ListAdv -> Adv ; -- 8. with John, here and now + mkAdv : DConj -> Adv -> Adv -> Adv ; -- 9. either here or now + mkAdv : DConj -> ListAdv -> Adv -- 10. either here, now, or with John } ; + --2 Questions and relatives --3 QS, question sentences mkQS : overload { --- Just like a sentence $S$ is built from a clause $Cl$, a question sentence $QS$ is built from --- a question clause $QCl$ by fixing tense, anteriority and polarity. Any of these arguments --- can be omitted, which results in the default (present, simultaneous, and positive, respectively). +-- Just like a sentence $S$ is built from a clause $Cl$, +-- a question sentence $QS$ is built from +-- a question clause $QCl$ by fixing tense, anteriority and polarity. +-- Any of these arguments can be omitted, which results in the +-- default (present, simultaneous, and positive, respectively). - mkQS : QCl -> QS ; -- who walks - mkQS : (Tense) -> (Ant) -> (Pol) -> QCl -> QS ; -- wouldn't John have walked + mkQS : QCl -> QS ; -- 1. who walks + mkQS : (Tense) -> (Ant) -> (Pol) -> QCl -> QS ; -- 2. who wouldn't have walked --- Since 'yes-no' question clauses can be built from clauses (see below), we give a shortcus +-- Since 'yes-no' question clauses can be built from clauses (see below), +-- we give a shortcut -- for building a question sentence directly from a clause, using the defaults -- present, simultaneous, and positive. - mkQS : Cl -> QS -- does John walk + mkQS : Cl -> QS -- 3. does John walk } ; @@ -635,64 +660,73 @@ incomplete resource Constructors = open Grammar in { -- 'Yes-no' question clauses are built from 'declarative' clauses. - mkQCl : Cl -> QCl ; -- does John walk + mkQCl : Cl -> QCl ; -- 1. does John walk --- 'Wh' questions are built from interrogative pronouns in subject or object position. --- The latter uses the 'slash' category of objectless clauses (see below); we give the --- common special case with a two-place verb. +-- 'Wh' questions are built from interrogative pronouns in subject +-- or object position. The former uses a verb phrase; we don't give +-- shortcuts for verb-argument sequences as we do for clauses. +-- The latter uses the 'slash' category of objectless clauses +-- (see below); we give the common special case with a two-place verb. - mkQCl : IP -> VP -> QCl ; -- who walks - mkQCl : IP -> Slash -> QCl ; -- who does John love - mkQCl : IP -> NP -> V2 -> QCl ; -- who does John love + mkQCl : IP -> VP -> QCl ; -- 2. who walks + mkQCl : IP -> NP -> V2 -> QCl ; -- 3. whom does John love + mkQCl : IP -> Slash -> QCl ; -- 4. whom does John love today -- Adverbial 'wh' questions are built with interrogative adverbials, with the -- special case of prepositional phrases with interrogative pronouns. - mkQCl : IAdv -> Cl -> QCl ; -- why does John walk - mkQCl : Prep -> IP -> Cl -> QCl ; -- with whom does John walk + mkQCl : IAdv -> Cl -> QCl ; -- 5. why does John walk + mkQCl : Prep -> IP -> Cl -> QCl ; -- 6. with who does John walk -- An interrogative adverbial can serve as the complement of a copula. - mkQCl : IAdv -> NP -> QCl ; -- where is John + mkQCl : IAdv -> NP -> QCl ; -- 7. where is John -- Existentials are a special construction. - mkQCl : IP -> QCl -- which houses are there + mkQCl : IP -> QCl -- 8. what is there } ; --3 IP, interrogative pronouns mkIP : overload { --- In addition to the interrogative pronouns defined in the $Structural$ lexicon, they +-- Interrogative pronouns -- can be formed much like noun phrases, by using interrogative determiners. - mkIP : IDet -> N -> IP ; -- which song - mkIP : IDet -> (Num) -> (Ord) -> CN -> IP ; -- which five best songs + mkIP : IDet -> N -> IP ; -- 1. which city + mkIP : IDet -> (Num) -> (Ord) -> CN -> IP ; -- 2. which five best cities -- An interrogative pronoun can be modified by an adverb. - mkIP : IP -> Adv -> IP -- who in Europe + mkIP : IP -> Adv -> IP -- 3. who in Paris } ; +-- More interrogative pronouns and determiners can be found in $Structural$. + --3 IAdv, interrogative adverbs. -- In addition to the interrogative adverbs defined in the $Structural$ lexicon, they -- can be formed as prepositional phrases from interrogative pronouns. - mkIAdv : Prep -> IP -> IAdv ; -- in which city + mkIAdv : Prep -> IP -> IAdv ; -- 1. in which city + +-- More interrogative adverbs are given in $Structural$. --3 RS, relative sentences --- Just like a sentence $S$ is built from a clause $Cl$, a relative sentence $RS$ is built from --- a relative clause $RCl$ by fixing the tense, anteriority and polarity. Any of these arguments --- can be omitted, which results in the default (present, simultaneous, and positive, respectively). +-- Just like a sentence $S$ is built from a clause $Cl$, +-- a relative sentence $RS$ is built from +-- a relative clause $RCl$ by fixing the tense, anteriority and polarity. +-- Any of these arguments +-- can be omitted, which results in the default (present, simultaneous, +-- and positive, respectively). mkRS : overload { - mkRS : RCl -> RS ; -- who walks - mkRS : (Tense) -> (Ant) -> (Pol) -> RCl -> RS -- who wouldn't have walked + mkRS : RCl -> RS ; -- 1. that walk + mkRS : (Tense) -> (Ant) -> (Pol) -> RCl -> RS -- 2. that wouldn't have walked } ; --3 RCl, relative clauses @@ -700,27 +734,30 @@ incomplete resource Constructors = open Grammar in { mkRCl : overload { -- Relative clauses are built from relative pronouns in subject or object position. --- The latter uses the 'slash' category of objectless clauses (see below); we give the --- common special case with a two-place verb. +-- The former uses a verb phrase; we don't give +-- shortcuts for verb-argument sequences as we do for clauses. +-- The latter uses the 'slash' category of objectless clauses (see below); +-- we give the common special case with a two-place verb. - mkRCl : RP -> VP -> RCl ; -- who loves John - mkRCl : RP -> NP -> V2 -> RCl ; -- whom John loves - mkRCl : RP -> Slash -> RCl ; -- whom John wants to love + mkRCl : RP -> VP -> RCl ; -- 1. that walk + mkRCl : RP -> NP -> V2 -> RCl ; -- 2. which John loves + mkRCl : RP -> Slash -> RCl ; -- 3. which John loves today --- There is a simple 'such that' construction for forming relative clauses from clauses. +-- There is a simple 'such that' construction for forming relative +-- clauses from clauses. - mkRCl : Cl -> RCl -- such that John loves her + mkRCl : Cl -> RCl -- 4. such that John loves her } ; --3 RP, relative pronouns -- There is an atomic relative pronoun - which_RP : RP ; -- which + which_RP : RP ; -- 1. which -- A relative pronoun can be made into a kind of a prepositional phrase. - mkRP : Prep -> NP -> RP -> RP ; -- all the houses in which + mkRP : Prep -> NP -> RP -> RP ; -- 2. all the houses in which --3 Slash, objectless sentences @@ -731,19 +768,19 @@ incomplete resource Constructors = open Grammar in { -- The most common way of constructing them is by using a two-place verb -- with a subject but without an object. - mkSlash : NP -> V2 -> Slash ; -- (whom) he sees + mkSlash : NP -> V2 -> Slash ; -- 1. (whom) John loves -- The two-place verb can be separated from the subject by a verb-complement verb. - mkSlash : NP -> VV -> V2 -> Slash ; -- (whom) he wants to see + mkSlash : NP -> VV -> V2 -> Slash ; -- 2. (whom) John wants to see -- The missing object can also be the noun phrase in a prepositional phrase. - mkSlash : Cl -> Prep -> Slash ; -- (with whom) he walks + mkSlash : Cl -> Prep -> Slash ; -- 3. (with whom) John walks -- An objectless sentence can be modified by an adverb. - mkSlash : Slash -> Adv -> Slash -- (whom) he sees tomorrow + mkSlash : Slash -> Adv -> Slash -- 4. (whom) John loves today } ; @@ -755,30 +792,30 @@ incomplete resource Constructors = open Grammar in { --3 ListS, sentence lists mkListS : overload { - mkListS : S -> S -> ListS ; -- he walks, she runs - mkListS : S -> ListS -> ListS -- I sleep, he walks, she runs + mkListS : S -> S -> ListS ; -- 1. he walks, I run + mkListS : S -> ListS -> ListS -- 2. John walks, I run, you sleep } ; --3 ListAdv, adverb lists mkListAdv : overload { - mkListAdv : Adv -> Adv -> ListAdv ; -- here, now - mkListAdv : Adv -> ListAdv -> ListAdv -- to me, here, now + mkListAdv : Adv -> Adv -> ListAdv ; -- 1. here, now + mkListAdv : Adv -> ListAdv -> ListAdv -- 2. to me, here, now } ; --3 ListAP, adjectival phrase lists mkListAP : overload { - mkListAP : AP -> AP -> ListAP ; -- big, old - mkListAP : AP -> ListAP -> ListAP -- warm, big, old + mkListAP : AP -> AP -> ListAP ; -- 1. old, big + mkListAP : AP -> ListAP -> ListAP -- 2. old, big, warm } ; --3 ListNP, noun phrase lists mkListNP : overload { - mkListNP : NP -> NP -> ListNP ; -- John, Mary - mkListNP : NP -> ListNP -> ListNP -- you, John, Mary + mkListNP : NP -> NP -> ListNP ; -- 1. John, I + mkListNP : NP -> ListNP -> ListNP -- 2. John, I, that } ; @@ -800,6 +837,8 @@ incomplete resource Constructors = open Grammar in { = \ap,s -> SentAP ap (EmbedQS s) ; mkAP : AP -> VP -> AP -- great that she won = \ap,s -> SentAP ap (EmbedVP s) ; + mkAP : AdA -> A -> AP -- very uncertain + = \x,y -> AdAP x (PositA y) ; mkAP : AdA -> AP -> AP -- very uncertain = AdAP ; mkAP : Conj -> AP -> AP -> AP diff --git a/lib/resource-1.0/api/examples/Exx.gf b/lib/resource-1.0/api/examples/Exx.gf index d2060b66e..f49b45007 100644 --- a/lib/resource-1.0/api/examples/Exx.gf +++ b/lib/resource-1.0/api/examples/Exx.gf @@ -1,10 +1,11 @@ -abstract Exx = Cat-[VP] ** { +abstract Exx = Cat-[VP], Conjunction-[VP] ** { cat VP ; --- hack to circumvent missing lockfields in overload resolution fun - ex1_Text, ex2_Text, ex3_Text, ex4_Text, ex5_Text, ex6_Text, ex7_Text, ex8_Text : Text ; + ex1_Text, ex2_Text, ex3_Text, ex4_Text, ex5_Text, ex6_Text, ex7_Text, + ex8_Text : Text ; ex1_Phr, ex2_Phr, ex3_Phr, ex4_Phr, ex5_Phr, ex6_Phr : Phr ; @@ -12,24 +13,25 @@ fun ex1_Voc : Voc ; - ex1_Utt, ex2_Utt, ex3_Utt, ex4_Utt, ex5_Utt, ex6_Utt, ex7_Utt, ex8_Utt, ex8_Utt, ex9_Utt, ex10_Utt, ex11_Utt : Utt ; + ex1_Utt, ex2_Utt, ex3_Utt, ex4_Utt, ex5_Utt, ex6_Utt, ex7_Utt, ex8_Utt, ex8_Utt, + ex9_Utt, ex10_Utt, ex11_Utt : Utt ; 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, 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 ; + 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 ; ex1_VP, ex2_VP, ex3_VP, ex4_VP, ex5_VP, ex6_VP, ex7_VP, ex8_VP, ex9_VP, ex10_VP, - ex11_VP, ex12_VP, ex13_VP, ex14_VP, ex15_VP, ex16_VP, ex17_VP, ex18_VP, ex19_VP, ex20_VP, - ex21_VP, ex22_VP : VP ; + ex11_VP, ex12_VP, ex13_VP, ex14_VP, ex15_VP, ex16_VP, ex17_VP, ex18_VP, ex19_VP, + ex20_VP, ex21_VP, ex22_VP : VP ; ex1_NP, ex2_NP, ex3_NP, ex4_NP, ex5_NP, ex6_NP, ex7_NP, ex8_NP, ex9_NP, ex10_NP, - ex11_NP, ex12_NP, ex13_NP, ex14_NP, ex15_NP, ex16_NP, ex17_NP, ex18_NP, ex19_NP, ex20_NP, - ex21_NP, ex22_NP, ex23_NP : NP ; + ex11_NP, ex12_NP, ex13_NP, ex14_NP, ex15_NP, ex16_NP, ex17_NP, ex18_NP, ex19_NP, + ex20_NP, ex21_NP, ex22_NP, ex23_NP : NP ; - ex1_Det, ex2_Det, ex3_Det, ex4_Det, ex5_Det, ex6_Det, ex7_Det, ex8_Det, ex9_Det, ex10_Det, - ex11_Det, ex12_Det, ex13_Det, ex14_Det : Det ; + ex1_Det, ex2_Det, ex3_Det, ex4_Det, ex5_Det, ex6_Det, ex7_Det, ex8_Det, ex9_Det, + ex10_Det, ex11_Det, ex12_Det, ex13_Det, ex14_Det : Det ; ex1_Quant, ex2_Quant : Quant ; @@ -37,6 +39,49 @@ fun ex1_QuantPl : QuantPl ; + ex1_Num, ex2_Num, ex3_Num : Num ; + + ex1_Ord, ex2_Ord, ex3_Ord : Ord ; + + ex1_AdN : AdN ; + + ex1_Numeral, ex2_Numeral, ex3_Numeral, ex4_Numeral, ex5_Numeral, + ex6_Numeral, ex7_Numeral, ex8_Numeral, ex9_Numeral, + ex10_Numeral, ex11_Numeral, ex12_Numeral, ex13_Numeral : Numeral ; + + ex1_CN, ex2_CN, ex3_CN, ex4_CN, ex5_CN, ex6_CN, ex7_CN, ex8_CN, ex9_CN, ex10_CN, + ex11_CN, ex12_CN, ex13_CN, ex14_CN, ex15_CN, ex16_CN, ex17_CN, ex18_CN : CN ; + + ex1_AP, ex2_AP, ex3_AP, ex4_AP, ex5_AP, ex6_AP, ex7_AP, ex8_AP, ex9_AP, ex10_AP, + ex11_AP, ex12_AP, ex13_AP : AP ; + + ex1_Adv, ex2_Adv, ex3_Adv, ex4_Adv, ex5_Adv, ex6_Adv, ex7_Adv, ex8_Adv, + ex9_Adv, ex10_Adv : Adv ; + + ex1_QS, ex2_QS, ex3_QS : QS ; + + ex1_QCl, ex2_QCl, ex3_QCl, ex4_QCl, ex5_QCl, ex6_QCl, ex7_QCl, ex8_QCl : QCl ; + + ex1_IP, ex2_IP, ex3_IP : IP ; + + ex1_IAdv : IAdv ; + + ex1_RS, ex2_RS : RS ; + + ex1_RCl, ex2_RCl, ex3_RCl, ex4_RCl : RCl ; + + ex1_RP, ex2_RP : RP ; + + ex1_Slash, ex2_Slash, ex3_Slash, ex4_Slash : Slash ; + + ex1_ListS, ex2_ListS : ListS ; + + ex1_ListAdv, ex2_ListAdv : ListAdv ; + + ex1_ListAP, ex2_ListAP : ListAP ; + + ex1_ListNP, ex2_ListNP : ListNP ; + -- auxiliary to show VP's diff --git a/lib/resource-1.0/api/examples/ExxEng.gf b/lib/resource-1.0/api/examples/ExxEng.gf index 8bd0a7811..f2337c5a0 100644 --- a/lib/resource-1.0/api/examples/ExxEng.gf +++ b/lib/resource-1.0/api/examples/ExxEng.gf @@ -1,6 +1,6 @@ --# -path=.:..:alltenses:prelude -concrete ExxEng of Exx = CatEng-[VP] ** ExxI with +concrete ExxEng of Exx = CatEng-[VP], ConjunctionEng-[VP] ** ExxI with (Lang = LangEng), (Constructors = ConstructorsEng) ; diff --git a/lib/resource-1.0/api/examples/ExxFin.gf b/lib/resource-1.0/api/examples/ExxFin.gf index 551be7685..9e460da42 100644 --- a/lib/resource-1.0/api/examples/ExxFin.gf +++ b/lib/resource-1.0/api/examples/ExxFin.gf @@ -1,6 +1,6 @@ --# -path=.:..:alltenses:prelude -concrete ExxFin of Exx = CatFin-[VP] ** ExxI with +concrete ExxFin of Exx = CatFin-[VP], ConjunctionFin-[VP] ** ExxI with (Lang = LangFin), (Constructors = ConstructorsFin) ; diff --git a/lib/resource-1.0/api/examples/ExxFre.gf b/lib/resource-1.0/api/examples/ExxFre.gf index b44572b1b..56a523456 100644 --- a/lib/resource-1.0/api/examples/ExxFre.gf +++ b/lib/resource-1.0/api/examples/ExxFre.gf @@ -1,6 +1,6 @@ --# -path=.:..:alltenses:prelude -concrete ExxFre of Exx = CatFre-[VP] ** ExxI with +concrete ExxFre of Exx = CatFre-[VP], ConjunctionFre-[VP] ** ExxI with (Lang = LangFre), (Constructors = ConstructorsFre) ; diff --git a/lib/resource-1.0/api/examples/ExxGer.gf b/lib/resource-1.0/api/examples/ExxGer.gf new file mode 100644 index 000000000..617ccce6c --- /dev/null +++ b/lib/resource-1.0/api/examples/ExxGer.gf @@ -0,0 +1,7 @@ +--# -path=.:..:alltenses:prelude + +concrete ExxGer of Exx = CatGer-[VP], ConjunctionGer-[VP] ** ExxI with + (Lang = LangGer), + (Constructors = ConstructorsGer) ; + + diff --git a/lib/resource-1.0/api/examples/ExxI.gf b/lib/resource-1.0/api/examples/ExxI.gf index 5267df9ed..8b86c28f1 100644 --- a/lib/resource-1.0/api/examples/ExxI.gf +++ b/lib/resource-1.0/api/examples/ExxI.gf @@ -1,4 +1,5 @@ -incomplete concrete ExxI of Exx = Cat-[VP] ** open Lang, Constructors in { +incomplete concrete ExxI of Exx = Cat-[VP], Conjunction-[VP] ** + open Lang, Constructors in { -- examples for Constructors. @@ -139,18 +140,136 @@ incomplete concrete ExxI of Exx = Cat-[VP] ** open Lang, Constructors in { ex2_Quant = indefQuant ; ex1_QuantSg = mkQuantSg this_Quant ; + ex2_QuantSg = massQuant ; ex1_QuantPl = mkQuantSg this_Quant ; - ex2_QuantSg = massQuant ; + + ex1_Num = mkNum n20_Numeral ; +--- ex2_Num = mkNum 51 ; + ex3_Num = mkNum almost_AdN (mkNum n10_Numeral) ; + + ex1_Ord = mkOrd n20_Numeral ; +--- ex2_Ord = mkOrd 51 ; + ex3_Ord = mkOrd good_A ; + + ex1_AdN = mkAdN more_CAdv ; + + ex1_Numeral = n1_Numeral ; + ex2_Numeral = n2_Numeral ; + ex3_Numeral = n3_Numeral ; + ex4_Numeral = n4_Numeral ; + ex5_Numeral = n5_Numeral ; + ex6_Numeral = n6_Numeral ; + ex7_Numeral = n7_Numeral ; + ex8_Numeral = n8_Numeral ; + ex9_Numeral = n9_Numeral ; + ex10_Numeral = n10_Numeral ; + ex11_Numeral = n20_Numeral ; + ex12_Numeral = n100_Numeral ; + ex13_Numeral = n1000_Numeral ; + + ex1_CN = mkCN house_N ; + ex2_CN = mkCN mother_N2 john_NP ; + ex3_CN = mkCN distance_N3 (mkNP (mkDet this_Quant) city_N) (mkNP paris_PN) ; + ex4_CN = mkCN mother_N2 ; + ex5_CN = mkCN distance_N3 ; + ex6_CN = mkCN big_A house_N ; + ex7_CN = mkCN big_A (mkCN blue_A house_N) ; + ex8_CN = mkCN (mkAP very_AdA big_A) house_N ; + ex9_CN = mkCN (mkAP very_AdA big_A) (mkCN blue_A house_N) ; + ex10_CN = mkCN house_N (mkRS (mkRCl which_RP john_NP love_V2)) ; + ex11_CN = mkCN (mkCN big_A house_N) (mkRS (mkRCl which_RP john_NP love_V2)) ; + ex12_CN = mkCN house_N (mkAdv in_Prep (mkNP defSgDet city_N)) ; + ex13_CN = mkCN (mkCN big_A house_N) (mkAdv in_Prep (mkNP defSgDet city_N)) ; + ex14_CN = mkCN (mkCN rule_N) (mkS (mkCl john_NP walk_V)) ; + ex15_CN = mkCN (mkCN question_N) (mkQS (mkCl john_NP walk_V)) ; + ex16_CN = mkCN (mkCN reason_N) (mkVP walk_V) ; + ex17_CN = mkCN king_N john_NP ; + ex18_CN = mkCN (mkCN old_A king_N) john_NP ; + + ex1_AP = mkAP old_A ; + ex2_AP = mkAP old_A john_NP ; + ex3_AP = mkAP married_A2 (mkNP she_Pron) ; + ex4_AP = mkAP married_A2 ; + ex5_AP = mkAP (mkAP probable_AS) (mkS (mkCl john_NP walk_V)) ; + ex6_AP = mkAP (mkAP uncertain_A) (mkQS (mkCl john_NP walk_V)) ; + ex7_AP = mkAP (mkAP ready_A) (mkVP walk_V) ; + ex8_AP = mkAP very_AdA old_A ; + ex9_AP = mkAP very_AdA (mkAP very_AdA old_A) ; + ex10_AP = mkAP and_Conj (mkAP old_A) (mkAP big_A) ; + ex11_AP = mkAP and_Conj (mkListAP (mkAP old_A) (mkListAP (mkAP big_A) (mkAP warm_A))); + ex12_AP = mkAP either7or_DConj (mkAP old_A) (mkAP big_A) ; + ex13_AP = mkAP either7or_DConj (mkListAP (mkAP old_A) (mkListAP (mkAP big_A) (mkAP warm_A))); + + + ex1_Adv = mkAdv warm_A ; + ex2_Adv = mkAdv with_Prep john_NP ; + ex3_Adv = mkAdv when_Subj (mkS (mkCl john_NP walk_V)) ; + ex4_Adv = mkAdv more_CAdv warm_A john_NP ; + ex5_Adv = mkAdv more_CAdv warm_A (mkS (mkCl john_NP walk_V)) ; + ex6_Adv = mkAdv very_AdA (mkAdv warm_A) ; + ex7_Adv = mkAdv and_Conj here_Adv now_Adv ; + ex8_Adv = mkAdv and_Conj (mkListAdv (mkAdv with_Prep john_NP) (mkListAdv here_Adv now_Adv)) ; + ex9_Adv = mkAdv either7or_DConj here_Adv now_Adv ; + ex10_Adv = mkAdv either7or_DConj (mkListAdv (mkAdv with_Prep john_NP) (mkListAdv here_Adv now_Adv)) ; + + + + ex1_QS = mkQS (mkQCl whoSg_IP (mkVP walk_V)) ; + ex2_QS = mkQS conditionalTense anteriorAnt negativePol (mkQCl whoSg_IP (mkVP walk_V)) ; + ex3_QS = mkQS (mkCl john_NP walk_V) ; + + ex1_QCl = mkQCl (mkCl john_NP walk_V) ; + ex2_QCl = mkQCl whoSg_IP (mkVP walk_V) ; + ex3_QCl = mkQCl whoSg_IP john_NP love_V2 ; + ex4_QCl = mkQCl whoSg_IP (mkSlash (mkSlash john_NP love_V2) today_Adv) ; + ex5_QCl = mkQCl why_IAdv (mkCl john_NP walk_V) ; + ex6_QCl = mkQCl with_Prep whoSg_IP (mkCl john_NP walk_V) ; + ex7_QCl = mkQCl where_IAdv john_NP ; + ex8_QCl = mkQCl whatSg_IP ; + + ex1_IP = mkIP whichSg_IDet city_N ; + ex2_IP = mkIP whichPl_IDet (mkNum n5_Numeral) (mkOrd good_A) (mkCN city_N) ; + ex3_IP = mkIP whoSg_IP (mkAdv in_Prep (mkNP paris_PN)) ; + + ex1_IAdv = mkIAdv in_Prep (mkIP whichSg_IDet city_N) ; + + + ex1_RS = mkRS (mkRCl which_RP (mkVP walk_V)) ; + ex2_RS = mkRS conditionalTense anteriorAnt negativePol (mkRCl which_RP (mkVP walk_V)) ; + + ex1_RCl = mkRCl which_RP (mkVP walk_V) ; + ex2_RCl = mkRCl which_RP john_NP love_V2 ; + ex3_RCl = mkRCl which_RP (mkSlash (mkSlash john_NP love_V2) today_Adv) ; + ex4_RCl = mkRCl (mkCl john_NP love_V2 (mkNP she_Pron)) ; + + ex1_RP = which_RP ; + ex2_RP = mkRP in_Prep (mkNP all_Predet (mkNP defPlDet house_N)) which_RP ; + + ex1_Slash = mkSlash john_NP love_V2 ; + ex2_Slash = mkSlash john_NP want_VV see_V2 ; + ex3_Slash = mkSlash (mkCl john_NP walk_V) with_Prep ; + ex4_Slash = mkSlash (mkSlash john_NP love_V2) today_Adv ; + + + ex1_ListS = mkListS (mkS (mkCl john_NP walk_V)) (mkS (mkCl (mkNP i_Pron) run_V)) ; + ex2_ListS = mkListS (mkS (mkCl john_NP walk_V)) (mkListS (mkS (mkCl (mkNP i_Pron) run_V)) (mkS (mkCl (mkNP youSg_Pron) sleep_V))) ; + + ex1_ListAP = mkListAP (mkAP old_A) (mkAP big_A) ; + ex2_ListAP = mkListAP (mkAP old_A) (mkListAP (mkAP big_A) (mkAP warm_A)) ; + + ex1_ListAdv = mkListAdv here_Adv now_Adv ; + ex2_ListAdv = mkListAdv (mkAdv with_Prep john_NP) (mkListAdv here_Adv now_Adv) ; + + ex1_ListNP = mkListNP john_NP (mkNP i_Pron) ; + ex2_ListNP = mkListNP john_NP (mkListNP (mkNP i_Pron) that_NP) ; utt u = mkUtt u ; -- a hack to linearize VPs oper - john_PN = paris_PN ; ---- - today_Adv = here_Adv ; ---- john_NP = mkNP john_PN ; } diff --git a/lib/resource-1.0/api/examples/ExxSwe.gf b/lib/resource-1.0/api/examples/ExxSwe.gf index ce3fdc5fe..1989bb271 100644 --- a/lib/resource-1.0/api/examples/ExxSwe.gf +++ b/lib/resource-1.0/api/examples/ExxSwe.gf @@ -1,6 +1,6 @@ --# -path=.:..:alltenses:prelude -concrete ExxSwe of Exx = CatSwe-[VP] ** ExxI with +concrete ExxSwe of Exx = CatSwe-[VP], ConjunctionSwe-[VP] ** ExxI with (Lang = LangSwe), (Constructors = ConstructorsSwe) ; diff --git a/lib/resource-1.0/api/examples/Makefile b/lib/resource-1.0/api/examples/Makefile new file mode 100644 index 000000000..d04276a13 --- /dev/null +++ b/lib/resource-1.0/api/examples/Makefile @@ -0,0 +1,9 @@ +Eng: + gf -nocpu ExxEng.gf exxEng.txt +Fin: + gf -nocpu ExxFin.gf exxFin.txt +Swe: + gf -nocpu ExxSwe.gf exxSwe.txt + +gfs: + runghc mkgfs.hs diff --git a/lib/resource-1.0/english/LexiconEng.gf b/lib/resource-1.0/english/LexiconEng.gf index 82cee5b28..4c9af6354 100644 --- a/lib/resource-1.0/english/LexiconEng.gf +++ b/lib/resource-1.0/english/LexiconEng.gf @@ -355,6 +355,14 @@ lin language_N = regN "language" ; rule_N = regN "rule" ; +-- added 4/6/2007 + john_PN = regPN "John" ; + question_N = regN "question" ; + ready_A = regA "ready" ; + reason_N = regN "reason" ; + today_Adv = mkAdv "today" ; + uncertain_A = regA "uncertain" ; + oper aboutP = mkPrep "about" ; atP = mkPrep "at" ; diff --git a/lib/resource-1.0/finnish/LexiconFin.gf b/lib/resource-1.0/finnish/LexiconFin.gf index 5e176c4a2..2457ab36c 100644 --- a/lib/resource-1.0/finnish/LexiconFin.gf +++ b/lib/resource-1.0/finnish/LexiconFin.gf @@ -371,6 +371,13 @@ lin language_N = reg2N "kieli" "kieliä" ; rule_N = regN "sääntö" ; + john_PN = regPN "Jussi" ; + question_N = regN "kysymys" ; + ready_A = regA "valmis" ; + reason_N = regN "syy" ; + today_Adv = mkAdv "tänään" ; + uncertain_A = regA "epävarma" ; + oper mkOrd : N -> Ord ; mkOrd x = {s = \\n,c => x.s ! NCase n c; lock_Ord = <> } ; diff --git a/lib/resource-1.0/french/LexiconFre.gf b/lib/resource-1.0/french/LexiconFre.gf index 531953ef7..4e5fee4be 100644 --- a/lib/resource-1.0/french/LexiconFre.gf +++ b/lib/resource-1.0/french/LexiconFre.gf @@ -356,5 +356,12 @@ lin language_N = regN "langue" ; rule_N = regN "règle" ; + john_PN = regPN "Jean" ; + question_N = regN "question" ; + ready_A = regA "prêt" ; + reason_N = regGenN "raison" feminine ; + today_Adv = mkAdv "aujourd'hui" ; + uncertain_A = regA "incertain" ; + } ; diff --git a/lib/resource-1.0/german/LexiconGer.gf b/lib/resource-1.0/german/LexiconGer.gf index 55c111944..db36b530e 100644 --- a/lib/resource-1.0/german/LexiconGer.gf +++ b/lib/resource-1.0/german/LexiconGer.gf @@ -355,5 +355,12 @@ lin language_N = regN "Sprache" ; rule_N = reg2N "Regel" "Regeln" feminine ; + john_PN = regPN "Johann" ; + question_N = regN "Frage" ; + ready_A = regA "fertig" ; + reason_N = reg2N "Grund" "Gründe" masculine ; + today_Adv = mkAdv "heute" ; + uncertain_A = regA "unsicher" ; + } ; diff --git a/lib/resource-1.0/swedish/LexiconSwe.gf b/lib/resource-1.0/swedish/LexiconSwe.gf index 25efd1390..d684b11fe 100644 --- a/lib/resource-1.0/swedish/LexiconSwe.gf +++ b/lib/resource-1.0/swedish/LexiconSwe.gf @@ -355,5 +355,12 @@ lin language_N = mk2N "språk" "språk" ; rule_N = mkN "regel" "regeln" "regler" "reglerna" ; + john_PN = regPN "Johan" ; + question_N = regN "fråga" ; + ready_A = regA "färdig" ; + reason_N = regN "anledning" ; + today_Adv = mkAdv "idag" ; + uncertain_A = mk3A "osäker" "osäkert" "osäkra" ; + } ;