diff options
| author | aarne <aarne@chalmers.se> | 2010-04-09 14:37:25 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2010-04-09 14:37:25 +0000 |
| commit | d505fa5b6737b6b78fb65161cea3c2ac175494ab (patch) | |
| tree | 316a778a7869c6d264e2cb4850f032a39cdbe16b /examples/phrasebook/WordsEng.gf | |
| parent | 1903fe8bf99cf6f567669a803f4b725478309ad3 (diff) | |
generalized the Person category in Phrasebook to plurals, added some new Words
Diffstat (limited to 'examples/phrasebook/WordsEng.gf')
| -rw-r--r-- | examples/phrasebook/WordsEng.gf | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/examples/phrasebook/WordsEng.gf b/examples/phrasebook/WordsEng.gf index 1080f15fd..a50504f76 100644 --- a/examples/phrasebook/WordsEng.gf +++ b/examples/phrasebook/WordsEng.gf @@ -3,7 +3,7 @@ concrete WordsEng of Words = SentencesEng ** open SyntaxEng, ParadigmsEng, (L = LexiconEng), (P = ParadigmsEng), - IrregEng, Prelude in { + IrregEng, ExtraEng, Prelude in { lin -- kinds @@ -76,6 +76,8 @@ concrete WordsEng of Words = SentencesEng ** -- actions + AHasAge p num = mkCl p.name (mkNP <lin Numeral num : Numeral> L.year_N) ; + AHasChildren p num = mkCl p.name have_V2 (mkNP <lin Numeral num : Numeral> L.child_N) ; AHasName p name = mkCl (nameOf p) name ; AHungry p = mkCl p.name (mkA "hungry") ; AIll p = mkCl p.name (mkA "ill") ; @@ -83,6 +85,7 @@ concrete WordsEng of Words = SentencesEng ** ALike p item = mkCl p.name (mkV2 (mkV "like")) item ; ALive p co = mkCl p.name (mkVP (mkVP (mkV "live")) (SyntaxEng.mkAdv in_Prep co)) ; ALove p q = mkCl p.name (mkV2 (mkV "love")) q.name ; + AMarried p = mkCl p.name (mkA "married") ; AScared p = mkCl p.name (mkA "scared") ; ASpeak p lang = mkCl p.name (mkV2 IrregEng.speak_V) lang ; AThirsty p = mkCl p.name (mkA "thirsty") ; @@ -94,6 +97,7 @@ concrete WordsEng of Words = SentencesEng ** -- miscellaneous QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ; + QWhatAge p = mkQS (mkQCl (ICompAP (mkAP (mkA "old"))) p.name) ; PropOpen p = mkCl p.name open_Adv ; PropClosed p = mkCl p.name closed_Adv ; @@ -105,6 +109,12 @@ concrete WordsEng of Words = SentencesEng ** HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item IrregEng.cost_V)) ; ItCost item price = mkCl item (mkV2 IrregEng.cost_V) price ; + Wife = xOf sing (mkN "wife") ; + Husband = xOf sing (mkN "husband") ; + Son = xOf sing (mkN "son") ; + Daughter = xOf sing (mkN "daughter") ; + Children = xOf plur L.child_N ; + -- week days Monday = mkDay "Monday" ; @@ -137,11 +147,20 @@ concrete WordsEng of Words = SentencesEng ** open_Adv = P.mkAdv "open" ; closed_Adv = P.mkAdv "closed" ; - nameOf : {name : NP ; isPron : Bool ; poss : Det} -> NP = \p -> - case p.isPron of { - True => mkNP p.poss (mkN "name") ; - _ => mkNP (mkNP the_Det (mkN "name")) + NPPerson : Type = {name : NP ; isPron : Bool ; poss : Quant} ; + + xOf : Bool -> N -> NPPerson -> NPPerson = \n,x,p -> + let num = if_then_else Num n plNum sgNum in { + name = case p.isPron of { + True => mkNP p.poss num x ; + _ => mkNP (mkNP the_Quant num x) (SyntaxEng.mkAdv possess_Prep p.name) } ; + isPron = False ; + poss = SyntaxEng.mkQuant he_Pron -- not used because not pron + } ; + + nameOf : NPPerson -> NP = \p -> (xOf sing (mkN "name") p).name ; + sing = False ; plur = True ; } |
