From b50a4172c3b36eb9806d5214393e7e2b99247f7d Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Mon, 18 Feb 2019 13:58:11 +0100 Subject: [PATCH] (Pes) Add Construction (#178) --- src/persian/AllPes.gf | 2 +- src/persian/ConstructionPes.gf | 79 ++++++++++++++++++++++++++++++++++ src/persian/LangPes.gf | 11 ++--- 3 files changed, 84 insertions(+), 8 deletions(-) create mode 100644 src/persian/ConstructionPes.gf diff --git a/src/persian/AllPes.gf b/src/persian/AllPes.gf index c2173af98..564204828 100644 --- a/src/persian/AllPes.gf +++ b/src/persian/AllPes.gf @@ -1,4 +1,4 @@ ---# -path=.:../abstract:../common:../prelude +--# -path=.:alltenses:prelude:../api:../common concrete AllPes of AllPesAbs = LangPes, diff --git a/src/persian/ConstructionPes.gf b/src/persian/ConstructionPes.gf new file mode 100644 index 000000000..503b44efa --- /dev/null +++ b/src/persian/ConstructionPes.gf @@ -0,0 +1,79 @@ +--# -path=.:abstract:prelude:api:common +concrete ConstructionPes of Construction = CatPes ** open + Prelude, + ParadigmsPes, + (P=ParadigmsPes), + SyntaxPes, + (S=SyntaxPes), + SymbolicPes, + StructuralPes, + (E=ExtendPes), + (R=ResPes), + (L=LexiconPes) in { + +lincat + Timeunit = N ; + Weekday = N ; + Monthday = NP ; + Month = N ; + Year = NP ; + Language = N ; + + +lin + weekdayN w = w ; + monthN m = m ; + + -- weekdayPN w = mkPN w ; + -- monthPN m = mkPN m ; + + timeunitAdv n time = + let n_card : Card = n ; + n_hours_NP : NP = mkNP n_card time ; + in S.mkAdv during_Prep n_hours_NP ; ---- /IL + + weekdayPunctualAdv w = lin Adv (S.mkUtt (mkNP w)) ; -- on Sunday + -- TODO + weekdayHabitualAdv, -- on Sundays + weekdayNextAdv, -- next Sunday + weekdayLastAdv = weekdayPunctualAdv ; -- last Sunday + + monthAdv january = + let january_NP : NP = mkNP january ; + in S.mkAdv in_Prep january_NP ; + + yearAdv y = S.mkAdv in_Prep y ; + + intYear = symb ; + intMonthday = symb ; + + languageCN l = mkCN l ; + languageNP l = mkNP l ; + + InLanguage l = S.mkAdv in_Prep (mkNP l) ; + + -- arabic_Language, + english_Language = mkLanguage "انگلیسی" ; + finnish_Language = mkLanguage "فنلاند" ; + swedish_Language = mkLanguage "سوئدی" ; + + -- : Card -> CN -> A -> AP + n_units_AP card cn a = + let ap = mkAP a in ap ** { + s = \\ez => + ap.s ! ez + ++ (mkUtt (mkNP card cn)).s ---- just guessing /IL + } ; + + hungry_VP = mkVP (mkA "گرسنه") ; + thirsty_VP = mkVP (mkA "تشنه") ; + have_name_Cl p n = mkCl (mkNP (E.GenNP p) L.name_N) n ; + what_name_QCl p = mkQCl what_IAdv (mkNP (E.GenNP p) L.name_N) ; + + how_old_QCl p = mkQCl howMuchAge_IAdv (mkNP (mkNP (E.GenNP p)) (P.mkAdv "سال")) ; + +oper + howMuchAge_IAdv = lin IAdv {s = "چند"} ; + what_IAdv = lin IAdv {s = "چه چیزی"} ; + mkLanguage : Str -> N = mkN ; +} diff --git a/src/persian/LangPes.gf b/src/persian/LangPes.gf index b7cdf26ab..24976f435 100644 --- a/src/persian/LangPes.gf +++ b/src/persian/LangPes.gf @@ -1,10 +1,7 @@ ---# -path=.:../abstract:../common +--# -path=.:alltenses:prelude:../api:../common -concrete LangPes of Lang = +concrete LangPes of Lang = GrammarPes ,LexiconPes - ** { - -flags startcat = Phr ; unlexer=unwords ; lexer=words ; - -} + ,ConstructionPes + ** {} ;