diff --git a/examples/phrasebook/SentencesFin.gf b/examples/phrasebook/SentencesFin.gf index 68644d1bf..1fcbb7b9b 100644 --- a/examples/phrasebook/SentencesFin.gf +++ b/examples/phrasebook/SentencesFin.gf @@ -1,6 +1,7 @@ concrete SentencesFin of Sentences = NumeralFin ** SentencesI - [Is, IsMass, NameNN, ObjMass, IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale, + NPPlace, CNPlace, placeNP, mkCNPlace, mkCNPlacePl, GObjectPlease ] with (Syntax = SyntaxFin), @@ -10,6 +11,18 @@ concrete SentencesFin of Sentences = NumeralFin ** SentencesI - flags optimize = noexpand ; + oper + NPPlace = {name : NP ; at : Adv ; to : Adv ; from : Adv} ; + CNPlace = {name : CN ; at : Prep ; to : Prep ; from : Prep ; isPl : Bool} ; + + placeNP : Det -> CNPlace -> NPPlace = \det,kind -> + let name : NP = mkNP det kind.name in { + name = name ; + at = mkAdv kind.at name ; + to = mkAdv kind.to name ; + from = mkAdv kind.from name + } ; + lin Is item prop = mkCl item (V.UseComp (CompPartAP prop)) ; -- tämä pizza on herkullista IsMass mass prop = mkCl (mkNP a_Det mass) (V.UseComp (CompPartAP prop)) ; -- pizza on herkullista diff --git a/examples/phrasebook/WordsDut.gf b/examples/phrasebook/WordsDut.gf index 5bbfe45f4..7c4037141 100644 --- a/examples/phrasebook/WordsDut.gf +++ b/examples/phrasebook/WordsDut.gf @@ -221,10 +221,10 @@ ik ga te voet/ ik ga lopend -- transports HowFar place = mkQS (mkQCl far_IAdv place.name) ; -- hoe ver is de dierentuin - HowFarFrom x y = mkQS (mkQCl far_IAdv (mkNP y.name (SyntaxDut.mkAdv from_Prep x.name))) ; + HowFarFrom x y = mkQS (mkQCl far_IAdv (mkNP y.name (SyntaxDut.mkAdv van_Prep x.name))) ; -- how far is the center from the hotel ? hoever is het centrum van het hotel HowFarFromBy x y t = - mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxDut.mkAdv from_Prep x.name)) t)) ; + mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxDut.mkAdv van_Prep x.name)) t)) ; --hoelang duurt het om van het vliegveld naar het hotel te gaan per taxi HowFarBy y t = mkQS (mkQCl far_IAdv (mkNP y.name t)) ; --hoe ver is het museum per bus @@ -265,6 +265,7 @@ ik ga te voet/ ik ga lopend mkSuperl : A -> Det = \a -> SyntaxDut.mkDet the_Art (SyntaxDut.mkOrd a) ; + van_Prep = P.mkPrep "van" ; {- HowFarFrom : how far is the center from the hotel ? hoe ver is het centrum van het hotel diff --git a/examples/phrasebook/WordsFin.gf b/examples/phrasebook/WordsFin.gf index 9f6fe16e3..e8dcfe9be 100644 --- a/examples/phrasebook/WordsFin.gf +++ b/examples/phrasebook/WordsFin.gf @@ -60,7 +60,7 @@ concrete WordsFin of Words = SentencesFin ** School = mkPlace (mkN "koulu") lla ; CitRestaurant cit = { - name = mkCN cit (mkN "ravintola") ; at = casePrep inessive ; to = casePrep illative; isPl = False + name = mkCN cit (mkN "ravintola") ; at = casePrep inessive ; to = casePrep illative; from = casePrep elative ; isPl = False } ; Parking = mkPlace (mkN "pysäköinti" (mkN "alue")) lla ; Supermarket = mkPlace (mkN "supermarket") ssa ; @@ -198,10 +198,10 @@ concrete WordsFin of Words = SentencesFin ** HowFar place = mkQS (mkQCl far_IAdv place.name) ; HowFarFrom x y = - mkQS (mkQCl far_IAdv (mkCl y.name (SyntaxFin.mkAdv from_Prep x.name))) ; + mkQS (mkQCl far_IAdv (mkCl y.name x.from)) ; HowFarFromBy x y t = mkQS (mkQCl far_IAdv (mkCl y.name - (mkVP (mkVP (SyntaxFin.mkAdv from_Prep x.name)) t))) ; + (mkVP (mkVP x.from) t))) ; HowFarBy place t = mkQS (mkQCl far_IAdv (mkCl place.name t)) ; -- mkQS (mkQCl (mkIAdv far_IAdv t) y.name) ; @@ -242,10 +242,11 @@ concrete WordsFin of Words = SentencesFin ** habitual = ParadigmsFin.mkAdv s } ; - mkPlace : N -> Bool -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,e -> { + mkPlace : N -> Bool -> {name : CN ; at : Prep ; to : Prep; from : Prep ; isPl : Bool} = \p,e -> { name = mkCN p ; at = casePrep (if_then_else Case e adessive inessive) ; -- True: external to = casePrep (if_then_else Case e allative illative) ; + from = casePrep (if_then_else Case e ablative elative) ; isPl = False } ; ssa = False ; diff --git a/examples/phrasebook/WordsGer.gf b/examples/phrasebook/WordsGer.gf index 80455db00..b3b732cc4 100644 --- a/examples/phrasebook/WordsGer.gf +++ b/examples/phrasebook/WordsGer.gf @@ -208,9 +208,9 @@ CitRestaurant cit = mkCNPlace (mkCN cit (mkN "Restaurant" "Restaurants" neuter) HowFar place = mkQS (mkQCl far_IAdv place.name) ; - HowFarFrom x y = mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxGer.mkAdv from_Prep x.name)) (ParadigmsGer.mkAdv "entfernt"))) ; + HowFarFrom x y = mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxGer.mkAdv von_Prep x.name)) (ParadigmsGer.mkAdv "entfernt"))) ; HowFarFromBy x y t = - mkQS (mkQCl far_IAdv (mkCl (mkVP (SyntaxGer.mkAdv zu_Prep (mkNP (mkNP y.name (SyntaxGer.mkAdv from_Prep x.name)) t))))) ; + mkQS (mkQCl far_IAdv (mkCl (mkVP (SyntaxGer.mkAdv zu_Prep (mkNP (mkNP y.name (SyntaxGer.mkAdv von_Prep x.name)) t))))) ; HowFarBy y t = mkQS (mkQCl far_IAdv (mkCl (mkVP (SyntaxGer.mkAdv zu_Prep (mkNP y.name t))))) ; WhichTranspPlace trans place =