From fe4bec4e58aa81e9d5b0b5a746342bdb9352802b Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Mon, 19 Nov 2018 15:23:37 +0100 Subject: [PATCH] (Ara) Improve documentation for verb constructors + add reflV --- src/arabic/IdiomAra.gf | 6 ++--- src/arabic/ParadigmsAra.gf | 53 ++++++++++++++------------------------ src/arabic/ResAra.gf | 12 ++++++++- 3 files changed, 32 insertions(+), 39 deletions(-) diff --git a/src/arabic/IdiomAra.gf b/src/arabic/IdiomAra.gf index 269d2799b..c46bbadd4 100644 --- a/src/arabic/IdiomAra.gf +++ b/src/arabic/IdiomAra.gf @@ -49,14 +49,12 @@ concrete IdiomAra of Idiom = CatAra ** open -- : VP -> VP ; -- is at home himself; is himself at home SelfAdvVP, SelfAdVVP = \vp -> vp ** { - s = \\pgn,vf => let pron : ResAra.NP = pgn2pron pgn in - vp.s ! pgn ! vf ++ refl ! Nom ++ pron.s ! Gen + s = \\pgn,vf => vp.s ! pgn ! vf ++ reflPron Nom pgn } ; -- : NP -> NP ; -- the president himself (is at home) SelfNP np = np ** { - s = let pron : ResAra.NP = np2pron np ; - in \\c => np.s ! c ++ refl ! c ++ pron.s ! Gen + s = \\c => np.s ! c ++ reflPron c (np.a.pgn) } ; } diff --git a/src/arabic/ParadigmsAra.gf b/src/arabic/ParadigmsAra.gf index 4209267b7..d3edb2b36 100644 --- a/src/arabic/ParadigmsAra.gf +++ b/src/arabic/ParadigmsAra.gf @@ -185,51 +185,33 @@ resource ParadigmsAra = open -- Overloaded operations mkV : overload { - mkV : (imperfect : Str) -> V ; + mkV : (imperfect : Str) -> V ; -- The verb in Per3 Sg Masc imperfect tense gives the most information mkV : (root : Str) -> (perf,impf : Vowel) -> V ; -- verb form I ; vowel = a|i|u mkV : (root : Str) -> VerbForm -> V ; -- FormI .. FormX (no VII, IX) ; default vowels a u for I mkV : V -> (particle : Str) -> V -- V with a non-inflecting particle/phrasal verb } ; --- The verb in the imperfect tense gives the most information + -- regV : Str -> V ; - regV : Str -> V ; + reflV : V -> V ; -- نَفْس in the proper case and with possessive suffix, e.g. نَفْسَكِ ---Verb Form I : fa`ala, fa`ila, fa`ula + v1 : Str -> Vowel -> Vowel -> V ; --Verb Form I : fa`ala, fa`ila, fa`ula - v1 : Str -> Vowel -> Vowel -> V ; + v2 : Str -> V ; --Verb Form II : fa``ala ---Verb Form II : fa``ala + v3 : Str -> V ; --Verb Form III : faa`ala - v2 : Str -> V ; + v4 : Str -> V ; --Verb Form IV : 'af`ala ---Verb Form III : faa`ala + v5 : Str -> V ; --Verb Form V : tafa``ala - v3 : Str -> V ; + v6 : Str -> V ; --Verb Form VI : tafaa`ala ---Verb Form IV : 'af`ala + v7 : Str -> V ; --Verb Form VII : infa`ala - v4 : Str -> V ; + v8 : Str -> V ; --Verb Form VIII ifta`ala ---Verb Form V : tafa``ala - - v5 : Str -> V ; - ---Verb Form VI : tafaa`ala - - v6 : Str -> V ; - ---Verb Form VII : tafaa`ala - - v7 : Str -> V ; - ---Verb Form VIII infa`ala - - v8 : Str -> V ; - --- Verb Form X 'istaf`ala - - v10 : Str -> V ; + v10 : Str -> V ; -- Verb Form X 'istaf`ala --3 Two-place verbs @@ -359,10 +341,11 @@ resource ParadigmsAra = open mkN : N -> (attr : Str) -> N -- Compound nouns = \n,attr -> n ** {s2 = \\n,s,c => attr} ; mkN : N -> N -> N -- Compound nouns - = \n1,n2 -> n1 ** {s2 = - \\n,s,c => n1.s2 ! n ! s ! c - ++ n2.s ! n ! s ! c - ++ n2.s2 ! n ! s ! c} ; + = \n1,n2 -> n1 ** { + s = \\n,_,c => n1.s ! n ! Const ! c ; + s2 = \\n,s,c => n1.s2 ! n ! s ! c + ++ n2.s ! n ! s ! c + ++ n2.s2 ! n ! s ! c} ; } ; dualN : N -> N = \n -> n ** {isDual=True} ; @@ -497,6 +480,8 @@ resource ParadigmsAra = open _ => v10sound } } in lin V (v10fun rbT) ; + reflV v = lin V (ResAra.reflV v) ; + mkFullN nsc gen spec = lin N { s = nsc; --NTable s2 = emptyNTable; diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index e97354b80..b644807d1 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -1354,8 +1354,18 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> a = np.a ** {isPron=False} -- hack, sometimes we *don't* want prodrop } ; - refl : Case => Str = \\c => "نَفْس" + caseTbl ! c ; + reflPron : Case -> PerGenNum -> Str = \c,pgn -> + let pron : NP = pgn2pron pgn + in "نَفْس" + caseTbl ! c ++ pron.s ! Gen ; + reflV : Verb -> Verb = \v -> v ** { + s = \\vf => case vf of { + VPerf _ pgn => v.s ! vf ++ reflPron Acc pgn ; + VImpf _ _ pgn => v.s ! vf ++ reflPron Acc pgn ; + VImp g n => v.s ! vf ++ reflPron Acc (Per2 g n) ; + VPPart => v.s ! vf ++ reflPron Acc (Per3 Masc Sg) ---- + } + } ; ----------------------------------------------------------------------------- -- IP, questions