diff --git a/lib/src/abstract/Construction.gf b/lib/src/abstract/Construction.gf index f26554a79..e35d47edd 100644 --- a/lib/src/abstract/Construction.gf +++ b/lib/src/abstract/Construction.gf @@ -13,10 +13,6 @@ abstract Construction = Cat ** { -- The first examples are from the MOLTO Phrasebook -cat - Weekday ; - Month ; - fun hungry_VP : VP ; -- x is hungry / x a faim (Fre) thirsty_VP : VP ; -- x is thirsty / x a soif (Fre) @@ -38,14 +34,30 @@ fun n_units_AP : Card -> CN -> A -> AP ; -- x inches long +-- time expressions + +cat + Weekday ; + Month ; + Monthday ; + Year ; + +fun -- weekdayN : Weekday -> N ; --weekdays are already as nouns in Dict -- monthN : Month -> N --months are already as nouns in Dict - weekdayPunctualAdv : Weekday -> Adv ; - weekdayHabitualAdv : Weekday -> Adv ; - weekdayLastAdv : Weekday -> Adv ; - weekdayNextAdv : Weekday -> Adv ; + weekdayPunctualAdv : Weekday -> Adv ; -- on Monday + weekdayHabitualAdv : Weekday -> Adv ; -- on Mondays + weekdayLastAdv : Weekday -> Adv ; -- last Monday + weekdayNextAdv : Weekday -> Adv ; -- next Monday - monthAdv : Month -> Adv ; + monthAdv : Month -> Adv ; -- in June + yearAdv : Year -> Adv ; -- in 1976 + dayMonthAdv : Monthday -> Month -> Adv ; -- on 17 May + monthYearAdv : Month -> Year -> Adv ; -- in May 2013 + dayMonthYearAdv : Monthday -> Month -> Year -> Adv ; -- on 17 May 2013 + + intYear : Int -> Year ; + intMonthday : Int -> Monthday ; monday_Weekday, tuesday_Weekday, wednesday_Weekday, thursday_Weekday, friday_Weekday, sunday_Weekday : Weekday ; diff --git a/lib/src/english/ConstructionEng.gf b/lib/src/english/ConstructionEng.gf index 46f7b4bdf..f6fcd149d 100644 --- a/lib/src/english/ConstructionEng.gf +++ b/lib/src/english/ConstructionEng.gf @@ -1,7 +1,7 @@ --# -path=.:../abstract concrete ConstructionEng of Construction = CatEng ** - open SyntaxEng, ParadigmsEng, (L = LexiconEng), (E = ExtraEng), (G = GrammarEng), Prelude in { + open SyntaxEng, SymbolicEng, ParadigmsEng, (L = LexiconEng), (E = ExtraEng), (G = GrammarEng), (R = ResEng), Prelude in { lin @@ -26,7 +26,24 @@ lin lincat Weekday = N ; + Monthday = NP ; + Month = N ; + Year = NP ; lin + weekdayPunctualAdv w = SyntaxEng.mkAdv on_Prep (mkNP w) ; -- on Sunday + weekdayHabitualAdv w = SyntaxEng.mkAdv on_Prep (mkNP aPl_Det w) ; -- on Sundays + weekdayNextAdv w = SyntaxEng.mkAdv (mkPrep "next") (mkNP w) ; -- next Sunday + weekdayLastAdv w = SyntaxEng.mkAdv (mkPrep "last") (mkNP w) ; -- last Sunday + + monthAdv m = SyntaxEng.mkAdv in_Prep (mkNP m) ; + yearAdv y = SyntaxEng.mkAdv in_Prep y ; + dayMonthAdv d m = ParadigmsEng.mkAdv ("on" ++ d.s ! R.NPAcc ++ m.s ! R.Sg ! R.Nom) ; -- on 17 May + monthYearAdv m y = SyntaxEng.mkAdv in_Prep (mkNP (mkCN m y)) ; -- in May 2012 + dayMonthYearAdv d m y = ParadigmsEng.mkAdv ("on" ++ d.s ! R.NPAcc ++ m.s ! R.Sg ! R.Nom ++ y.s ! R.NPAcc) ; -- on 17 May 2013 + + intYear = symb ; + intMonthday = symb ; + monday_Weekday = mkN "Monday" ; tuesday_Weekday = mkN "Tuesday" ; wednesday_Weekday = mkN "Wednesday" ; @@ -35,10 +52,17 @@ lin saturday_Weekday = mkN "Saturday" ; sunday_Weekday = mkN "Sunday" ; - weekdayPunctualAdv w = SyntaxEng.mkAdv on_Prep (mkNP w) ; -- on Sunday - weekdayHabitualAdv w = SyntaxEng.mkAdv on_Prep (mkNP aPl_Det w) ; -- on Sundays - weekdayNextAdv w = SyntaxEng.mkAdv (mkPrep "next") (mkNP w) ; -- next Sunday - weekdayLastAdv w = SyntaxEng.mkAdv (mkPrep "last") (mkNP w) ; -- last Sunday + january_Month = mkN "January" ; + february_Month = mkN "February" ; + march_Month = mkN "March" ; + april_Month = mkN "April" ; + may_Month = mkN "May" ; + june_Month = mkN "June" ; + july_Month = mkN "July" ; + august_Month = mkN "August" ; + september_Month = mkN "September" ; + october_Month = mkN "October" ; + november_Month = mkN "November" ; + december_Month = mkN "December" ; - } diff --git a/lib/src/finnish/ConstructionFin.gf b/lib/src/finnish/ConstructionFin.gf index 653b2d80b..892b67a48 100644 --- a/lib/src/finnish/ConstructionFin.gf +++ b/lib/src/finnish/ConstructionFin.gf @@ -1,7 +1,7 @@ --# -path=alltenses:.:../abstract concrete ConstructionFin of Construction = CatFin ** - open SyntaxFin, ParadigmsFin, (L = LexiconFin), (E = ExtraFin) in { + open SyntaxFin, SymbolicFin, ParadigmsFin, (L = LexiconFin), (E = ExtraFin), (R = ResFin), Prelude in { lin hungry_VP = mkVP have_V2 (lin NP (mkNP (ParadigmsFin.mkN "nälkä"))) ; @@ -24,7 +24,10 @@ lin n_units_AP card cn a = mkAP (lin AdA (mkUtt (lin NP (mkNP (lin CN cn))))) (lin A a) ; lincat - Weekday = {name : NP ; noun : CN ; point : SyntaxFin.Adv ; habitual : SyntaxFin.Adv} ; + Weekday = {noun : N ; habitual : SyntaxFin.Adv} ; + Monthday = NP ; + Month = N ; + Year = NP ; lin monday_Weekday = mkWeekday "maanantai" ; tuesday_Weekday = mkWeekday "tiistaisi" ; @@ -34,23 +37,45 @@ lin saturday_Weekday = mkWeekday"lauantai" ; sunday_Weekday = mkWeekday "sunnuntai" ; - weekdayPunctualAdv w = w.point ; + weekdayPunctualAdv w = lin Adv {s = pointWeekday w} ; weekdayHabitualAdv w = w.habitual ; - weekdayLastAdv w = ParadigmsFin.mkAdv ("viime" ++ w.point.s) ; - weekdayNextAdv w = ParadigmsFin.mkAdv ("ensi" ++ w.point.s) ; + weekdayLastAdv w = ParadigmsFin.mkAdv ("viime" ++ pointWeekday w) ; + weekdayNextAdv w = ParadigmsFin.mkAdv ("ensi" ++ pointWeekday w) ; + + monthAdv m = SyntaxFin.mkAdv in_Prep (mkNP m) ; + yearAdv y = SyntaxFin.mkAdv (prePrep nominative "vuonna") y ; + dayMonthAdv d m = ParadigmsFin.mkAdv (d.s ! R.NPCase R.Nom ++ BIND ++ "." ++ m.s ! R.NCase R.Sg R.Part) ; + monthYearAdv m y = SyntaxFin.mkAdv in_Prep (mkNP (mkNP m) (SyntaxFin.mkAdv (casePrep nominative) y)) ; + dayMonthYearAdv d m y = + ParadigmsFin.mkAdv (d.s ! R.NPCase R.Nom ++ BIND ++ "." ++ m.s ! R.NCase R.Sg R.Part ++ y.s ! R.NPCase R.Nom) ; + + intYear = symb ; + intMonthday = symb ; + + january_Month = mkN "tammikuu" ; + february_Month = mkN "helmikuu" ; + march_Month = mkN "maaliskuu" ; + april_Month = mkN "huhtikuu" ; + may_Month = mkN "toukokuu" ; + june_Month = mkN "kesäkuu" ; + july_Month = mkN "heinäkuu" ; + august_Month = mkN "elokuu" ; + september_Month = mkN "syyskuu" ; + october_Month = mkN "lokakuu" ; + november_Month = mkN "marraskuu" ; + december_Month = mkN "joulukuu" ; oper mkWeekday : Str -> Weekday = \d -> - let day = mkN d - in lin Weekday { - name = mkNP day ; - noun = mkCN day ; - point = SyntaxFin.mkAdv (casePrep essive) (mkNP day) ; + noun = mkN d ; habitual = case d of { _ + "i" => ParadigmsFin.mkAdv (d + "sin") ; -- tiistaisin _ => ParadigmsFin.mkAdv (d + "isin") -- keskiviikkoisin } } ; + + pointWeekday : Weekday -> Str = \w -> (SyntaxFin.mkAdv (casePrep essive) (mkNP w.noun)).s ; + } diff --git a/lib/src/french/ConstructionFre.gf b/lib/src/french/ConstructionFre.gf index 52e95fe5a..625b79bc1 100644 --- a/lib/src/french/ConstructionFre.gf +++ b/lib/src/french/ConstructionFre.gf @@ -1,7 +1,9 @@ --# -path=alltenses:.:../abstract concrete ConstructionFre of Construction = CatFre ** - open SyntaxFre, ParadigmsFre, (L = LexiconFre), (E = ExtraFre), (I = IrregFre), Prelude in { + open SyntaxFre, SymbolicFre, ParadigmsFre, + (L = LexiconFre), (E = ExtraFre), (I = IrregFre), (R = ResFre), (C = CommonRomance), + Prelude in { lin @@ -24,4 +26,48 @@ lin n_units_AP card cn a = mkAP (lin AdA (mkUtt (mkNP (lin CN cn)))) (lin A a) ; +lincat + Weekday = N ; + Monthday = NP ; + Month = N ; + Year = NP ; +oper + noPrep : Prep = mkPrep [] ; + +lin + monday_Weekday = mkN "lundi" ; + tuesday_Weekday = mkN "mardi" ; + wednesday_Weekday = mkN "mercredi" ; + thursday_Weekday = mkN "jeudi" ; + friday_Weekday = mkN "vendredi" ; + saturday_Weekday = mkN "samedi" ; + sunday_Weekday = mkN "dimanche" masculine ; + + weekdayPunctualAdv w = lin Adv {s = w.s ! C.Sg} ; -- lundi + weekdayHabitualAdv w = SyntaxFre.mkAdv noPrep (mkNP the_Det w) ; -- le lundi + weekdayLastAdv w = SyntaxFre.mkAdv noPrep (mkNP the_Det (mkCN (mkA "dernier") w)) ; -- le lundi dernier + weekdayNextAdv w = SyntaxFre.mkAdv noPrep (mkNP the_Det (mkCN (mkA "prochain") w)) ; -- le lundi prochain + + monthAdv m = lin Adv {s = "en" ++ m.s ! C.Sg} ; -- en mai + yearAdv y = SyntaxFre.mkAdv (mkPrep "en") y ; + dayMonthAdv d m = ParadigmsFre.mkAdv ("le" ++ (d.s ! R.Nom).comp ++ m.s ! C.Sg) ; -- le 17 mai ---- le 1 mai should be le 1er mai + monthYearAdv m y = lin Adv {s = "en" ++ m.s ! C.Sg ++ (y.s ! R.Nom).comp} ; -- en mai 2012 + dayMonthYearAdv d m y = ParadigmsFre.mkAdv ("le" ++ (d.s ! R.Nom).comp ++ m.s ! C.Sg ++ (y.s ! R.Nom).comp) ; -- le 17 mai 2013 + + intYear = symb ; + intMonthday = symb ; + + january_Month = mkN "janvier" ; + february_Month = mkN "février" ; + march_Month = mkN "mars" ; + april_Month = mkN "avril" ; + may_Month = mkN "mai" ; + june_Month = mkN "juin" ; + july_Month = mkN "juillet" ; + august_Month = mkN "août" ; + september_Month = mkN "septembre" ; + october_Month = mkN "octobre" ; + november_Month = mkN "novembre" ; + december_Month = mkN "décembre" ; + } diff --git a/lib/src/german/ConstructionGer.gf b/lib/src/german/ConstructionGer.gf index 632f2b01a..ebb8c2ce5 100644 --- a/lib/src/german/ConstructionGer.gf +++ b/lib/src/german/ConstructionGer.gf @@ -1,7 +1,8 @@ --# -path=.:../abstract concrete ConstructionGer of Construction = CatGer ** - open SyntaxGer, ParadigmsGer, (L = LexiconGer), (E = ExtraGer), (G = GrammarGer), (I = IrregGer), Prelude in { + open SyntaxGer, SymbolicGer, ParadigmsGer, + (L = LexiconGer), (E = ExtraGer), (G = GrammarGer), (I = IrregGer), (R = ResGer), Prelude in { lin @@ -25,5 +26,48 @@ lin is_wrong_VP = mkVP have_V2 (mkNP (ParadigmsGer.mkN "Unrecht")) ; n_units_AP card cn a = mkAP (lin AdA (mkUtt (mkNP (lin CN cn)))) (lin A a) ; + + + +lincat + Weekday = N ; + Monthday = NP ; + Month = N ; + Year = NP ; +lin + monday_Weekday = mkN "Montag" ; + tuesday_Weekday = mkN "Dienstag" ; + wednesday_Weekday = mkN "Mittwoch" ; + thursday_Weekday = mkN "Donnerstag" ; + friday_Weekday = mkN "Freitag" ; + saturday_Weekday = mkN "Samstag" ; + sunday_Weekday = mkN "Sonntag" ; + + weekdayPunctualAdv w = SyntaxGer.mkAdv anDat_Prep (mkNP the_Det w) ; -- am Montag + weekdayHabitualAdv w = SyntaxGer.mkAdv (mkPrep "" accusative) (mkNP every_Det w) ; ---- jeden Montag + weekdayLastAdv w = SyntaxGer.mkAdv (mkPrep "am letzten" dative) (mkNP w) ; -- letzten Montag ---- + weekdayNextAdv w = SyntaxGer.mkAdv (mkPrep "am nächsten" dative) (mkNP w) ; -- nächsten Montag ---- + + monthAdv m = SyntaxGer.mkAdv inDat_Prep (mkNP the_Det m) ; + yearAdv y = SyntaxGer.mkAdv (mkPrep "im Jahr" dative) y ; ---- + dayMonthAdv d m = ParadigmsGer.mkAdv ("am" ++ d.s ! dative ++ BIND ++ "." ++ m.s ! R.Sg ! R.Nom) ; -- am 17 Mai + monthYearAdv m y = SyntaxGer.mkAdv inDat_Prep (mkNP the_Det (mkCN m y)) ; -- im Mai 2012 + dayMonthYearAdv d m y = ParadigmsGer.mkAdv ("am" ++ d.s ! dative ++ BIND ++ "." ++ m.s ! R.Sg ! R.Nom ++ y.s ! accusative) ; -- am 17 Mai 2013 + + intYear = symb ; + intMonthday = symb ; + january_Month = mkN "Januar" ; + february_Month = mkN "Februar" ; + march_Month = mkN "März" ; + april_Month = mkN "April" ; + may_Month = mkN "Mai" ; + june_Month = mkN "Juni" ; + july_Month = mkN "Juli" ; + august_Month = mkN "August" ; + september_Month = mkN "September" ; + october_Month = mkN "Oktober" ; + november_Month = mkN "November" ; + december_Month = mkN "Dezember" ; + } diff --git a/lib/src/swedish/ConstructionSwe.gf b/lib/src/swedish/ConstructionSwe.gf index 02ff2e471..c725b5db7 100644 --- a/lib/src/swedish/ConstructionSwe.gf +++ b/lib/src/swedish/ConstructionSwe.gf @@ -1,7 +1,7 @@ --# -path=.:../abstract concrete ConstructionSwe of Construction = CatSwe ** - open SyntaxSwe, ParadigmsSwe, (L = LexiconSwe), (E = ExtraSwe), (G = GrammarSwe), Prelude in { + open SyntaxSwe, SymbolicSwe, ParadigmsSwe, (L = LexiconSwe), (E = ExtraSwe), (G = GrammarSwe), (R = ResSwe), (C = CommonScand), Prelude in { lin @@ -26,6 +26,9 @@ lin lincat Weekday = N ; + Monthday = NP ; + Month = N ; + Year = NP ; lin monday_Weekday = mkN "måndag" ; tuesday_Weekday = mkN "tisdag" ; @@ -38,7 +41,28 @@ lin weekdayPunctualAdv w = SyntaxSwe.mkAdv on_Prep (mkNP w) ; -- på söndag weekdayHabitualAdv w = SyntaxSwe.mkAdv on_Prep (mkNP aPl_Det w) ; -- på söndagar weekdayLastAdv w = SyntaxSwe.mkAdv in_Prep (mkNP (E.GenNP (mkNP w))) ; -- i söndags - weekdayNextAdv w = SyntaxSwe.mkAdv (mkPrep "nästa") (mkNP w) ; -- nästa söndag --- can mean a week later than English "next Sunday" + weekdayNextAdv w = SyntaxSwe.mkAdv (mkPrep "nästa") (mkNP w) ; -- nästa söndag --- can mean a week later than Swelish "next Sunday" + monthAdv m = SyntaxSwe.mkAdv in_Prep (mkNP m) ; + yearAdv y = SyntaxSwe.mkAdv (mkPrep "år") y ; + dayMonthAdv d m = ParadigmsSwe.mkAdv ("den" ++ d.s ! C.NPAcc ++ m.s ! C.Sg ! C.Indef ! C.Nom) ; -- den 17 maj + monthYearAdv m y = SyntaxSwe.mkAdv in_Prep (mkNP (mkCN m y)) ; -- i maj 2012 + dayMonthYearAdv d m y = ParadigmsSwe.mkAdv ("den" ++ d.s ! C.NPAcc ++ m.s ! C.Sg ! C.Indef ! C.Nom ++ y.s ! C.NPAcc) ; -- den 17 maj 2013 + + intYear = symb ; + intMonthday = symb ; + january_Month = mkN "januari" ; + february_Month = mkN "februari" ; + march_Month = mkN "mars" ; + april_Month = mkN "april" ; + may_Month = mkN "maj" ; + june_Month = mkN "juni" ; + july_Month = mkN "juli" ; + august_Month = mkN "augusti" ; + september_Month = mkN "september" ; + october_Month = mkN "oktober" ; + november_Month = mkN "november" ; + december_Month = mkN "december" ; + }