diff --git a/examples/phrasebook/SentencesGer.gf b/examples/phrasebook/SentencesGer.gf index e33f0f0c6..47359fc82 100644 --- a/examples/phrasebook/SentencesGer.gf +++ b/examples/phrasebook/SentencesGer.gf @@ -1,5 +1,8 @@ concrete SentencesGer of Sentences = NumeralGer ** SentencesI - - [PYesToNo,SHaveNo,SHaveNoMass] with + [PYesToNo,SHaveNo,SHaveNoMass, + Proposition, Action, Is, IsMass, SProp, SPropNot, QProp, + AHaveCurr, ACitizen, ABePlace, AKnowSentence, AKnowPerson, AKnowQuestion + ] with (Syntax = SyntaxGer), (Symbolic = SymbolicGer), (Lexicon = LexiconGer) ** open Prelude, SyntaxGer in { @@ -9,4 +12,25 @@ concrete SentencesGer of Sentences = NumeralGer ** SentencesI - SHaveNo p k = mkS (mkCl p.name have_V2 (mkNP no_Quant plNum k)) ; SHaveNoMass p k = mkS (mkCl p.name have_V2 (mkNP no_Quant k)) ; + lincat + Proposition, Action = Prop ; + oper + Prop = {pos : Cl ; neg : S} ; -- x F y ; x F nicht/kein y + mkProp : Cl -> S -> Prop = \pos,neg -> {pos = pos ; neg = neg} ; + prop : Cl -> Prop = \cl -> mkProp cl (mkS negativePol cl) ; + lin + Is i q = prop (mkCl i q) ; + IsMass m q = prop (mkCl (mkNP m) q) ; + SProp p = mkS p.pos ; + SPropNot p = p.neg ; + QProp p = mkQS (mkQCl p.pos) ; + + AHaveCurr p curr = prop (mkCl p.name have_V2 (mkNP aPl_Det curr)) ; + ACitizen p n = prop (mkCl p.name n) ; + ABePlace p place = prop (mkCl p.name place.at) ; + + AKnowSentence p s = prop (mkCl p.name Lexicon.know_VS s) ; + AKnowQuestion p s = prop (mkCl p.name Lexicon.know_VQ s) ; + AKnowPerson p q = prop (mkCl p.name Lexicon.know_V2 q.name) ; + } diff --git a/examples/phrasebook/WordsGer.gf b/examples/phrasebook/WordsGer.gf index 35fb3db1a..f19074e1c 100644 --- a/examples/phrasebook/WordsGer.gf +++ b/examples/phrasebook/WordsGer.gf @@ -109,45 +109,45 @@ CitRestaurant cit = mkCNPlace (mkCN cit (mkN "Restaurant" "Restaurants" neuter) -- actions - AHasAge p num = mkCl p.name (mkNP num L.year_N) ; - AHasName p name = mkCl p.name (mkV2 heißen_V) name ; - AHungry p = mkCl p.name (mkA "hungrig") ; - AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ; - AHasRoom p num = mkCl p.name have_V2 + AHasAge p num = prop (mkCl p.name (mkNP num L.year_N)) ; + AHasName p name = prop (mkCl p.name (mkV2 heißen_V) name) ; + AHungry p = prop (mkCl p.name (mkA "hungrig")) ; + AHasChildren p num = prop (mkCl p.name have_V2 (mkNP num L.child_N)) ; + AHasRoom p num = prop (mkCl p.name have_V2 (mkNP (mkNP a_Det (mkN "Zimmer" "Zimmer" neuter)) - (SyntaxGer.mkAdv for_Prep (mkNP num (mkN "Persone")))) ; - AHasTable p num = mkCl p.name have_V2 + (SyntaxGer.mkAdv for_Prep (mkNP num (mkN "Persone"))))) ; + AHasTable p num = prop (mkCl p.name have_V2 (mkNP (mkNP a_Det (mkN "Tisch")) - (SyntaxGer.mkAdv for_Prep (mkNP num (mkN "Persone")))) ; - AIll p = mkCl p.name (mkA "krank") ; - AKnow p = mkCl p.name wissen_V ; - ALike p item = mkCl p.name (mkV2 mögen_V) item; - ALive p co = mkCl p.name (mkVP (mkVP (mkV "wohnen")) (SyntaxGer.mkAdv in_Prep co)) ; - ALove p q = mkCl p.name (mkV2 (mkV "lieben")) q.name ; - AMarried p = mkCl p.name (mkA "verheiratet") ; - AReady p = mkCl p.name (mkA "bereit") ; - AScared p = mkCl p.name have_V2 (mkNP (mkN "Angst" "Angsten" feminine)) ; - ASpeak p lang = mkCl p.name (mkV2 sprechen_V) lang ; - AThirsty p = mkCl p.name (mkA "durstig") ; - ATired p = mkCl p.name (mkA "müde") ; - AUnderstand p = mkCl p.name (fixprefixV "ver" stehen_V) ; - AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ; - AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ; + (SyntaxGer.mkAdv for_Prep (mkNP num (mkN "Persone"))))) ; + AIll p = prop (mkCl p.name (mkA "krank")) ; + AKnow p = prop (mkCl p.name wissen_V) ; + ALike p item = prop (mkCl p.name (mkV2 mögen_V) item) ; + ALive p co = prop (mkCl p.name (mkVP (mkVP (mkV "wohnen")) (SyntaxGer.mkAdv in_Prep co))) ; + ALove p q = prop (mkCl p.name (mkV2 (mkV "lieben")) q.name) ; + AMarried p = prop (mkCl p.name (mkA "verheiratet")) ; + AReady p = prop (mkCl p.name (mkA "bereit")) ; + AScared p = prop (mkCl p.name have_V2 (mkNP (mkN "Angst" "Angsten" feminine))) ; + ASpeak p lang = prop (mkCl p.name (mkV2 sprechen_V) lang) ; + AThirsty p = prop (mkCl p.name (mkA "durstig")) ; + ATired p = prop (mkCl p.name (mkA "müde")) ; + AUnderstand p = prop (mkCl p.name (fixprefixV "ver" stehen_V)) ; + AWant p obj = prop (mkCl p.name want_VV (mkVP have_V2 obj)) ; + AWantGo p place = prop (mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to)) ; -- miscellaneous QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name heißen_V)) ; QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ; - PropOpen p = mkCl p.name open_Adv ; - PropClosed p = mkCl p.name closed_Adv ; - PropOpenDate p d = mkCl p.name (mkVP (mkVP d) open_Adv) ; - PropClosedDate p d = mkCl p.name (mkVP (mkVP d) closed_Adv) ; - PropOpenDay p d = mkCl p.name (mkVP (mkVP d.habitual) open_Adv) ; - PropClosedDay p d = mkCl p.name (mkVP (mkVP d.habitual) closed_Adv) ; + PropOpen p = prop (mkCl p.name open_Adv) ; + PropClosed p = prop (mkCl p.name closed_Adv) ; + PropOpenDate p d = prop (mkCl p.name (mkVP (mkVP d) open_Adv)) ; + PropClosedDate p d = prop (mkCl p.name (mkVP (mkVP d) closed_Adv)) ; + PropOpenDay p d = prop (mkCl p.name (mkVP (mkVP d.habitual) open_Adv)) ; + PropClosedDay p d = prop (mkCl p.name (mkVP (mkVP d.habitual) closed_Adv)) ; HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosten"))) ; - ItCost item price = mkCl item (mkV2 (mkV "kosten")) price ; + ItCost item price = prop (mkCl item (mkV2 (mkV "kosten")) price) ; -- Building phrases from strings is complicated: the solution is to use -- mkText : Text -> Text -> Text ;