From c8b5e03e6ae697c77a4a169ea0632644f5ca6a9e Mon Sep 17 00:00:00 2001 From: inari Date: Thu, 19 Jun 2014 10:02:23 +0000 Subject: [PATCH] fixed negation in PhrasebookDut --- examples/phrasebook/SentencesDut.gf | 47 +++++++++++++++++++-- examples/phrasebook/WordsDut.gf | 65 ++++++++++++++++------------- 2 files changed, 78 insertions(+), 34 deletions(-) diff --git a/examples/phrasebook/SentencesDut.gf b/examples/phrasebook/SentencesDut.gf index d97bf2e35..acad8d77e 100644 --- a/examples/phrasebook/SentencesDut.gf +++ b/examples/phrasebook/SentencesDut.gf @@ -1,13 +1,52 @@ concrete SentencesDut of Sentences = NumeralDut ** SentencesI - - [SHaveNo,SHaveNoMass] + [SHaveNo,SHaveNoMass, + Proposition,Action, Is, IsMass, SProp, SPropNot, QProp, + AHaveCurr, ACitizen, ABePlace, AKnowSentence, AKnowPerson, AKnowQuestion, +-- Nationality, Language, + QDoHave, QWhereDoVerbPhrase, QModVerbPhrase, QWhereModVerbPhrase, SHave, SHaveNo, + ADoVerbPhrase, AModVerbPhrase, ADoVerbPhrasePlace, AModVerbPhrasePlace] with (Syntax = SyntaxDut), (Symbolic = SymbolicDut), (Lexicon = LexiconDut) ** open Prelude, SyntaxDut in { - lin - 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 niet/geen 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) ; + + lincat + Nationality = {lang : CN ; country : NP ; prop : A} ; + Language = CN ; -- kein Deutsch + +-- the new things + lin + ADoVerbPhrase p vp = prop (mkCl p.name vp) ; + AModVerbPhrase m p vp = prop (mkCl p.name (mkVP m vp)) ; + ADoVerbPhrasePlace p vp x = prop (mkCl p.name (mkVP vp x.at)) ; + AModVerbPhrasePlace m p vp x = prop (mkCl p.name (mkVP m (mkVP vp x.at))) ; + +-- the old things +-- lin +-- 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)) ; } diff --git a/examples/phrasebook/WordsDut.gf b/examples/phrasebook/WordsDut.gf index cd7e7f472..7746e0fe4 100644 --- a/examples/phrasebook/WordsDut.gf +++ b/examples/phrasebook/WordsDut.gf @@ -3,7 +3,7 @@ concrete WordsDut of Words = SentencesDut ** - open SyntaxDut, (P = ParadigmsDut), (I = IrregDut), (L = LexiconDut), ExtraDut, Prelude in { + open SyntaxDut, (P = ParadigmsDut), (I = IrregDut), (L = LexiconDut), (R=ResDut), ExtraDut, Prelude in { lin @@ -133,45 +133,50 @@ ik ga te voet/ ik ga lopend -- actions - AHasAge p num = mkCl p.name (mkNP num L.year_N) ; -- ik ben ... jaar - AHasName p name = mkCl p.name (P.mkV2 I.heten_V) name ; -- ik heet ... - AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ; -- ik heb ... kinderen - AHasRoom p num = mkCl p.name have_V2 + AHasAge p num = prop (mkCl p.name (mkNP num L.year_N)) ; -- ik ben ... jaar + AHasName p name = prop (mkCl p.name (P.mkV2 I.heten_V) name) ; -- ik heet ... + AHasChildren p num = prop (mkCl p.name have_V2 (mkNP num L.child_N)) ; -- ik heb ... kinderen + AHasRoom p num = prop (mkCl p.name have_V2 (mkNP (mkNP a_Det (P.mkN "kamer")) - (SyntaxDut.mkAdv for_Prep (mkNP num (P.mkN "persoon")))) ; -- ik heb een ... persoons kamer/ ik heb een kamer voor ... personen - AHasTable p num = mkCl p.name have_V2 + (SyntaxDut.mkAdv for_Prep (mkNP num (P.mkN "persoon"))))) ; -- ik heb een ... persoons kamer/ ik heb een kamer voor ... personen + AHasTable p num = prop (mkCl p.name have_V2 (mkNP (mkNP a_Det (P.mkN "tafel")) - (SyntaxDut.mkAdv for_Prep (mkNP num (P.mkN "persoon")))) ; - AHungry p = mkCl p.name have_V2 (mkNP (P.mkN "honger")) ; -- to have - AIll p = mkCl p.name (P.mkA "ziek") ; -- to be ? - AKnow p = mkCl p.name I.weten_V ; -- ik weet het. - ALike p item = mkCl p.name (P.mkV2 I.houden_V P.van_Prep) item ; -- lekker - ALive p co = mkCl p.name (mkVP (mkVP (P.mkV "wonen")) (SyntaxDut.mkAdv in_Prep co)) ; -- woon - ALove p q = mkCl p.name (P.mkV2 (P.mkV "lief" P.hebben_V)) q.name ; -- houden van - AMarried p = mkCl p.name (P.mkA "getrouwd") ; -- ik ben getrouwd - AReady p = mkCl p.name (P.mkA "klaar") ; -- ik ben klaar - AScared p = mkCl p.name (P.mkA "bang") ; -- ik ben bang - ASpeak p lang = mkCl p.name (P.mkV2 I.spreken_V) lang ; -- ik spreek .../ ik versta ... - AThirsty p = mkCl p.name have_V2 (mkNP (P.mkN "dorst")) ; -- ik heb dorst - ATired p = mkCl p.name (P.mkA "moe") ; -- ik ben moe - AUnderstand p = mkCl p.name (P.mkV "verstaan" "verstond" "verstonden" "verstaan") ; - AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ; -- ik wil - AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ; -- ik wil naar ... + (SyntaxDut.mkAdv for_Prep (mkNP num (P.mkN "persoon"))))) ; + AHungry p = mkProp (mkCl p.name have_V2 (mkNP (P.mkN "honger"))) + (mkS (mkCl p.name have_V2 (mkNP no_Quant (P.mkN "honger")))) ; -- to have + AIll p = prop (mkCl p.name (P.mkA "ziek")) ; -- to be ? + AKnow p = prop (mkCl p.name I.weten_V) ; -- ik weet het. + ALike p item = prop (mkCl p.name (P.mkV2 I.houden_V P.van_Prep) item) ; -- lekker + ALive p co = prop (mkCl p.name (mkVP (mkVP (P.mkV "wonen")) (SyntaxDut.mkAdv in_Prep co))) ; -- woon + ALove p q = prop (mkCl p.name L.love_V2 q.name) ; -- houden van + AMarried p = prop (mkCl p.name (P.mkA "getrouwd")) ; -- ik ben getrouwd + AReady p = prop (mkCl p.name (P.mkA "klaar")) ; -- ik ben klaar + AScared p = prop (mkCl p.name (P.mkA "bang")) ; -- ik ben bang + ASpeak p lang = + let no_Predet = R.mkPredet "geen" "geen" ; --using Predet instead of Quant, because lang is NP + in mkProp (mkCl p.name (P.mkV2 I.spreken_V) lang) + (mkS (mkCl p.name (P.mkV2 I.spreken_V) (mkNP no_Predet lang))); -- ik spreek .../ ik spreek geen ... + AThirsty p = mkProp (mkCl p.name have_V2 (mkNP (P.mkN "dorst"))) + (mkS (mkCl p.name have_V2 (mkNP no_Quant (P.mkN "dorst")))) ; --ik heb dorst / ik heb geen dorst + ATired p = prop (mkCl p.name (P.mkA "moe")) ; -- ik ben moe + AUnderstand p = prop (mkCl p.name (P.mkV "verstaan" "verstond" "verstonden" "verstaan")) ; + AWant p obj = prop (mkCl p.name want_VV (mkVP have_V2 obj)) ; -- ik wil + AWantGo p place = prop (mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to)) ; -- ik wil naar ... -- miscellaneous QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name I.heten_V)) ; --hoe heet je QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ; HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (P.mkV "kosten"))) ; --hoeveel kost... - ItCost item price = mkCl item (P.mkV2 (P.mkV "kosten")) price ; --..item.. kost ..price.. + ItCost item price = prop (mkCl item (P.mkV2 (P.mkV "kosten")) price) ; --..item.. kost ..price.. - PropOpen p = mkCl p.name open_A ; - PropClosed p = mkCl p.name closed_A ; - PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ; --de winkel is geopend op vrijdag(s) + PropOpen p = prop (mkCl p.name open_A) ; + PropClosed p = prop (mkCl p.name closed_A) ; + PropOpenDate p d = prop (mkCl p.name (mkVP (mkVP open_A) d)) ; --de winkel is geopend op vrijdag(s) --normaal gesproken ga ik op vrijdag ..action../vrijdags ga ik ..action.. - PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ; -- gesloten - PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ; - PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ; + PropClosedDate p d = prop (mkCl p.name (mkVP (mkVP closed_A) d)) ; -- gesloten + PropOpenDay p d = prop (mkCl p.name (mkVP (mkVP open_A) d.habitual)) ; + PropClosedDay p d = prop (mkCl p.name (mkVP (mkVP closed_A) d.habitual)) ; -- Building phrases from strings is complicated: the solution is to use -- mkText : Text -> Text -> Text ;