diff --git a/src/persian/AdjectivePes.gf b/src/persian/AdjectivePes.gf index 5c1aa357f..111fd94a5 100644 --- a/src/persian/AdjectivePes.gf +++ b/src/persian/AdjectivePes.gf @@ -7,14 +7,14 @@ concrete AdjectivePes of Adjective = CatPes ** open ResPes, Prelude in { UseComparA a = a; ComparA a np = { - s =\\ez => a.s ! ez ++ "تر" ++ "از" ++ np.s ! NPC bEzafa ; + s =\\ez => a.s ! ez ++ "تر" ++ "از" ++ np.s ! Bare ; adv = a.adv } ; ---- $SuperlA$ belongs to determiner syntax in $Noun$. ComplA2 a np = { - s =\\ez => np.s ! NPC bEzafa ++ a.c2 ++ a.s ! ez ; + s =\\ez => np.s ! Bare ++ a.c2 ++ a.s ! ez ; adv = a.adv } ; @@ -34,15 +34,15 @@ concrete AdjectivePes of Adjective = CatPes ** open ResPes, Prelude in { } ; UseA2 a = a ; - + CAdvAP cadv ap np = { - s =\\ez => cadv.s ++ np.s ! NPC bEzafa ++ ap.s ! ez ; + s =\\ez => cadv.s ++ np.s ! Bare ++ ap.s ! ez ; adv = ap.adv }; - + AdjOrd ord = { s =\\_ => ord.s ; adv = ""}; - - + + AdvAP ap adv = {s =\\ez => ap.s ! ez ++ adv.s ; adv = ap.adv}; } diff --git a/src/persian/AdverbPes.gf b/src/persian/AdverbPes.gf index 470bc737f..cba51938c 100644 --- a/src/persian/AdverbPes.gf +++ b/src/persian/AdverbPes.gf @@ -2,16 +2,16 @@ concrete AdverbPes of Adverb = CatPes ** open ResPes, Prelude in { flags coding = utf8; lin - -- PositAdvAdj a = {s = a.s ! bEzafa } ; + -- PositAdvAdj a = {s = a.s ! Bare } ; PositAdvAdj a = {s = a.adv } ; ComparAdvAdj cadv a np = { - s = a.adv ++ cadv.p ++ cadv.s ++ np.s ! NPC bEzafa ; + s = a.adv ++ cadv.p ++ cadv.s ++ np.s ! Bare ; } ; ComparAdvAdjS cadv a s = { s = a.adv ++ cadv.p ++ cadv.s ++ s.s; } ; - PrepNP prep np = {s = prep.s ++ np.s ! NPC bEzafa } ; + PrepNP prep np = {s = prep.s ++ np.s ! Bare } ; AdAdv ada adv = { s = ada.s ++ adv.s} ; diff --git a/src/persian/CatPes.gf b/src/persian/CatPes.gf index 6f283e43e..490ae3fde 100644 --- a/src/persian/CatPes.gf +++ b/src/persian/CatPes.gf @@ -62,7 +62,7 @@ concrete CatPes of Cat = CommonX - [Adv] ** open ResPes, Prelude in { Num = {s : Str ; n : Number ; isNum : Bool} ; Card = {s : Str; n : Number} ; Ord = {s : Str; n : Number ; isNum : Bool} ; - Quant = {s: Number => Str ; a:Agr ; fromPron : Bool}; + Quant = {s: Number => Str ; a:Agr ; mod : Mod}; Art = {s : Str} ; ---- Numeral diff --git a/src/persian/ConjunctionPes.gf b/src/persian/ConjunctionPes.gf index e439848eb..1e303666f 100644 --- a/src/persian/ConjunctionPes.gf +++ b/src/persian/ConjunctionPes.gf @@ -12,12 +12,12 @@ concrete ConjunctionPes of Conjunction = ConjAdv = conjunctDistrSS ; -- ConjAdv conj advs = conjunctDistrTable Gender conj advs ; - ConjNP conj ss = ss ** conjunctDistrTable NPCase conj ss ** { + ConjNP conj ss = ss ** conjunctDistrTable Mod conj ss ** { a = conjAgr (agrP3 conj.n) ss.a ; animacy = ss.animacy ; } ; - ConjAP conj ss = conjunctDistrTable Ezafa conj ss ** {adv = ss.adv}; + ConjAP conj ss = conjunctDistrTable Mod conj ss ** {adv = ss.adv}; ConjRS conj rs = conjunctDistrTable Agr conj rs ** { c = rs.c}; ---- These fun's are generated from the list cat's. @@ -28,19 +28,19 @@ concrete ConjunctionPes of Conjunction = -- BaseAdv x y = twoTable Gender x y ; ConsAdv = consrSS comma ; -- ConsAdv xs x = consrTable Gender comma xs x ; - BaseNP x y = y ** twoTable NPCase x y ** {a = conjAgr x.a y.a ; animacy = y.animacy } ; -- check animacy + BaseNP x y = y ** twoTable Mod x y ** {a = conjAgr x.a y.a ; animacy = y.animacy } ; -- check animacy BaseRS x y = twoTable Agr x y ** {c = x.c}; - ConsNP xs x = xs ** consrTable NPCase comma xs x ** {a = conjAgr xs.a x.a ; animacy = xs.animacy } ; -- InaandB xs.animacy x.animacy} ; + ConsNP xs x = xs ** consrTable Mod comma xs x ** {a = conjAgr xs.a x.a ; animacy = xs.animacy } ; -- InaandB xs.animacy x.animacy} ; ConsRS xs x = consrTable Agr comma xs x ** { c = xs.c}; -- BaseAP x y = twoTable3 Number Gender Case x y ; -- ** {isPre = andB x.isPre y.isPre} ; - BaseAP x y = twoTable Ezafa x y ** {adv = x.adv}; - ConsAP xs x = consrTable Ezafa comma xs x ** {adv = x.adv}; -- Table3 Number Gender Case comma xs x ;-- ** {isPre = andB xs.isPre x.isPre} ; + BaseAP x y = twoTable Mod x y ** {adv = x.adv}; + ConsAP xs x = consrTable Mod comma xs x ** {adv = x.adv}; -- Table3 Number Gender Case comma xs x ;-- ** {isPre = andB xs.isPre x.isPre} ; lincat [S] = {s1,s2 : Str} ; [Adv] = {s1,s2 : Str} ; - [NP] = {s1,s2 : NPCase => Str ; a : Agr ; animacy : Animacy ; hasAdj : Bool} ; - [AP] = {s1,s2 : Ezafa => Str ; adv : Str} ; + [NP] = {s1,s2 : Mod => Str ; a : Agr ; animacy : Animacy ; hasAdj : Bool} ; + [AP] = {s1,s2 : Mod => Str ; adv : Str} ; [RS] = {s1,s2 : Agr => Str }; } diff --git a/src/persian/ExtendPes.gf b/src/persian/ExtendPes.gf index 9f657e541..29e9d1f19 100644 --- a/src/persian/ExtendPes.gf +++ b/src/persian/ExtendPes.gf @@ -9,9 +9,9 @@ concrete ExtendPes of Extend = lin -- NP -> Quant ; -- this man's - GenNP np = np ** { - s = \\num => np.s ! NPC bEzafa ; -- the possessed will get aEzafa, possesser is just unmarked; https://sites.la.utexas.edu/persian_online_resources/language-specific-grammar/ezfe/ - fromPron = True -- not necessarily from Pron, but it should come after the noun, and if fromPron=True, then DetCN places determiner after cn. + GenNP np = np ** { + s = \\num => np.s ! Bare ; -- the possessed will get Ezafe, possesser is just unmarked; https://sites.la.utexas.edu/persian_online_resources/language-specific-grammar/ezfe/ + mod = Ezafe -- not necessarily from Pron, but it should come after the noun, and if mod=True, then DetCN places determiner after cn. } ; -} \ No newline at end of file +} diff --git a/src/persian/ExtraPes.gf b/src/persian/ExtraPes.gf index f7eb54f9e..dd45ba6b3 100644 --- a/src/persian/ExtraPes.gf +++ b/src/persian/ExtraPes.gf @@ -4,7 +4,7 @@ concrete ExtraPes of ExtraPesAbs = CatPes ** flags coding = utf8; lin - GenNP np = {s = \\_ => np.s ! NPC aEzafa ; a = np.a ; fromPron = True} ; -- changed from fromPron=False for Phrasebook + GenNP np = {s = \\_ => np.s ! Ezafe ; a = np.a ; mod = True} ; -- changed from mod=False for Phrasebook -- each_Det = mkDet "هر کwی" "هر کwی" "هر کwی" "هر کwی" Sg ; -- have_V = mkV "رکh-ن"; diff --git a/src/persian/IdiomPes.gf b/src/persian/IdiomPes.gf index c2efb6bf9..41273de11 100644 --- a/src/persian/IdiomPes.gf +++ b/src/persian/IdiomPes.gf @@ -9,7 +9,7 @@ lin GenericCl vp = mkSClause "آدم" (agrP3 Sg) vp ; CleftNP np rs = - let cl = mkSClause (np.s ! NPC bEzafa) (np.a) (predAux auxBe); + let cl = mkSClause (np.s ! Bare) (np.a) (predAux auxBe); in {s = \\t,p,o => cl.s ! t ! p ! o ++ rs.s ! np.a }; @@ -17,7 +17,7 @@ lin ExistNP np = mkSClause " " (agrP3 (fromAgr np.a).n) - (insertObj (\\_ => np.s ! NPC bEzafa) (predAux auxBe)) ; + (insertObj (\\_ => np.s ! Bare) (predAux auxBe)) ; ExistIP ip = let cl = mkSClause ( ip.s ) (agrP3 ip.n) (predAux auxBe); @@ -32,7 +32,7 @@ lin ProgrVP vp = predProg vp ; ImpPl1 vp = {s = "بیایید" ++ vp.s ! VVForm (agrP1 Pl)} ; - ImpP3 np vp = {s = "بگذارید" ++ np.s!NPC bEzafa ++ vp.s ! VVForm np.a}; + ImpP3 np vp = {s = "بگذارید" ++ np.s!Bare ++ vp.s ! VVForm np.a}; } diff --git a/src/persian/MorphoPes.gf b/src/persian/MorphoPes.gf index 730dc3245..391c5c402 100644 --- a/src/persian/MorphoPes.gf +++ b/src/persian/MorphoPes.gf @@ -24,7 +24,7 @@ oper ---- Nouns param Animacy = Animate | Inanimate ; - Ezafa = bEzafa | aEzafa | enClic ; + Mod = Bare | Ezafe | Clitic | Poss ; Agr = Ag Number Person ; ------------------------------------------ @@ -50,12 +50,25 @@ oper agrP1 : Number -> Agr = \n -> Ag n P1 ; ------------------------- --- Ezafa construction +-- Ezafe construction ------------------------ oper - mkEzafa : Str -> Str = \str -> - --let kasre = "ِ" in -- TODO: Eventually use this + +mkPossStem : Str -> Str = \str -> + + case str of { +_+ "اه" => str ; +_+ "او" => str ; +_+ "وه" => str ; +_+ ("ا"|"و") => str + "ی" ; +_+ "ه" => zwnj str "ا" ; +_ => str } ; + + + + mkEzafe : Str -> Str = \str -> + --let kasre = "ِ" in -- TODO: Eventually use this let kasre = "" in case str of { st + "اه" => str + kasre ; @@ -76,22 +89,20 @@ oper _ => str + "ی" -- any other case: just a single ی } ; - Noun = {s : Ezafa => Number => Str ; animacy : Animacy ; definitness : Bool } ; - mkN : (x1,x2 : Str) -> Animacy -> Noun = \sg,pl,ani -> { - s = table { - bEzafa => table { Sg => sg ; - Pl => pl - } ; - aEzafa => table { Sg => mkEzafa sg ; - Pl => mkEzafa pl - } ; - enClic => table { Sg => mkEnclic sg ; - Pl => mkEnclic pl - } - }; - animacy = ani ; - definitness = True - } ; + Noun = {s : Number => Mod => Str ; animacy : Animacy} ; + mkN : (x1,x2 : Str) -> Animacy -> Noun = \sg,pl,ani -> { + s = table { + Sg => table {Bare => sg ; + Ezafe => mkEzafe sg ; + Clitic => mkEnclic sg ; + Poss => mkPossStem sg } ; + Pl => table {Bare => pl ; + Ezafe => mkEzafe pl ; + Clitic => mkEnclic pl ; + Poss => mkPossStem pl } + } ; + animacy = ani + } ; -- masculine nouns end with alif, choTi_hay, ain Translitration: (a, h, e) -- Arabic nouns ends with h. also taken as Masc @@ -99,29 +110,30 @@ oper --------------------- --Determiners -------------------- -Determiner : Type = {s : Str ; n :Number ; isNum : Bool ; fromPron : Bool} ; +Determiner : Type = {s : Str ; n :Number ; isNum : Bool ; mod : Mod} ; makeDet : Str -> Number -> Bool -> Determiner = \str,n,b -> { s = str; isNum = b; - fromPron = False ; + mod = Bare ; n = n }; - makeQuant : Str -> Str -> {s : Number => Str ; a : Agr; fromPron : Bool } = \sg,pl -> { + makeQuant : Str -> Str -> {s : Number => Str ; a : Agr; mod : Mod } = \sg,pl -> { s = table {Sg => sg ; Pl => pl} ; - fromPron = False ; + mod = Bare ; a = agrP3 Sg }; --------------------------- -- Adjectives -------------------------- - Adjective : Type = {s : Ezafa => Str ; adv : Str} ; + Adjective : Type = {s : Mod => Str ; adv : Str} ; mkAdj : Str -> Str -> Adjective = \adj,adv -> { - s = table { bEzafa => adj; - aEzafa => mkEzafa adj ; - enClic => mkEnclic adj + s = table { Bare => adj; + Ezafe => mkEzafe adj ; + Clitic => mkEnclic adj ; + Poss => mkPossStem adj } ; adv = adv }; diff --git a/src/persian/NounPes.gf b/src/persian/NounPes.gf index abb8c070a..8ee0d75e5 100644 --- a/src/persian/NounPes.gf +++ b/src/persian/NounPes.gf @@ -3,12 +3,12 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in { flags optimize=all_subs ; lin - DetCN det cn = cn ** {s = \\npc => - case of { - => det.s ++ cn.s ! ez ! det.n ; -- det is not from Pron, retain NPForm. - => cn.s ! aEzafa ! det.n ++ det.s ; -- det is from Pron, cn is in aEzafa. - => det.s ++ cn.s ! ez ! Sg ; -- noun modified by a number is invariably singular - => cn.s ! aEzafa ! Sg ++ det.s + DetCN det cn = cn ** {s = \\mod => + case of { + => det.s ++ cn.s ! det.n ! mod ; -- det is not from Pron, retain NPForm. + => cn.s ! det.n ! X ++ det.s ; -- det is from Pron, cn is in Ezafe. + => det.s ++ cn.s ! Sg ! mod ; -- noun modified by a number is invariably singular + => cn.s ! Sg ! X ++ det.s } ; a = agrP3 det.n ; } ; @@ -29,20 +29,20 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in { } ; AdvNP np adv = np ** { - s = \\ez => np.s ! NPC aEzafa ++ adv.s + s = \\ez => np.s ! Ezafe ++ adv.s } ; DetQuantOrd quant num ord = { s = quant.s ! num.n ++ num.s ++ ord.s ; isNum = orB num.isNum ord.isNum ; - fromPron = quant.fromPron ; + mod = quant.mod ; n = num.n } ; DetQuant quant num = { s = quant.s ! num.n ++ num.s; isNum = num.isNum; - fromPron = quant.fromPron ; + mod = quant.mod ; n = num.n } ; @@ -53,7 +53,7 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in { animacy = Inanimate } ; - PossPron p = {s = \\_ => p.ps ; a = p.a ; fromPron = True} ; + PossPron p = {s = \\_ => BIND ++ p.ps ; a = p.a ; mod = Poss} ; NumSg = {s = [] ; n = Sg ; isNum = False} ; NumPl = {s = [] ; n = Pl ; isNum = False} ; @@ -68,17 +68,14 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in { -- to here AdNum adn num = num ** {s = adn.s ++ num.s} ; - OrdSuperl a = {s = a.s ! bEzafa ++ taryn; n = Sg ; isNum=False} ; -- check the form of adjective + OrdSuperl a = {s = a.s ! Bare ++ taryn; n = Sg ; isNum=False} ; -- check the form of adjective - DefArt = {s = \\_ => [] ; a = defaultAgr ; fromPron = False} ; - IndefArt = {s = table { Sg => IndefArticle ; Pl => []} ; a =defaultAgr ; fromPron = False} ; + DefArt = {s = \\_ => [] ; a = defaultAgr ; mod = Bare} ; + IndefArt = {s = table { Sg => IndefArticle ; Pl => []} ; a =defaultAgr ; mod = Bare} ; - MassNP cn = cn ** {s =\\c => case c of { - NPC bEzafa => cn.s ! bEzafa ! Sg ; - NPC aEzafa => cn.s ! aEzafa ! Sg ; - NPC enClic => cn.s ! enClic ! Sg - }; - a = agrP3 Sg ; + MassNP cn = cn ** { + s = cn.s ! Sg ; + a = agrP3 Sg } ; UseN n = n ** {hasAdj=False}; @@ -95,29 +92,29 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in { } ; ComplN2 f x = f ** { - s = \\ez,n => f.s ! ez ! n ++ f.c ++ x.s ! NPC ez ; + s = \\n,ez => f.s ! n ! Ezafe ++ f.c ++ x.s ! ez ; definitness = True ; hasAdj = False ; }; ComplN3 f x = f ** { - s = \\ez,n => f.s ! ez ! n ++ f.c2 ++ x.s ! NPC ez ; + s = \\n,ez => f.s ! n ! Ezafe ++ f.c2 ++ x.s ! ez ; c = f.c3; definitness = True; } ; AdjCN ap cn = cn ** { - s = \\ez,n => cn.s ! aEzafa ! n ++ ap.s ! ez ; -- check the form of adjective and also cn.s!ez!n changed from cn.s!aEzafa!n to have correct enclicitic form other wise it creats wrong enclictic form of old man + s = \\n,ez => cn.s! n! Ezafe ++ ap.s ! ez ; -- check the form of adjective and also cn.s!ez!n changed from cn.s!Ezafe!n to have correct enclicitic form other wise it creats wrong enclictic form of old man hasAdj = True } ; RelCN cn rs = cn ** { - s = \\ez,n => cn.s ! enClic ! n ++ rs.s ! agrP3 n ; + s = \\n,ez => cn.s ! n! Clitic ++ rs.s ! agrP3 n ; } ; - AdvCN cn ad = cn ** {s = \\ez,n => cn.s ! aEzafa ! n ++ ad.s} ; + AdvCN cn ad = cn ** {s = \\n,ez => cn.s ! n ! Ezafe ++ ad.s} ; - SentCN cn sc = cn ** {s = \\ez,n => cn.s ! ez ! n ++ sc.s} ; + SentCN cn sc = cn ** {s = \\n,ez => cn.s ! n ! ez ++ sc.s} ; - ApposCN cn np = cn ** {s = \\ez,n => cn.s ! ez ! n ++ np.s ! NPC aEzafa ; definitness = True} ; -- ezafa form of city to be used + ApposCN cn np = cn ** {s = \\n,ez => cn.s ! n ! ez ++ np.s ! Ezafe ; definitness = True} ; -- ezafa form of city to be used } diff --git a/src/persian/ParadigmsPes.gf b/src/persian/ParadigmsPes.gf index ca8901c4c..41df8c836 100644 --- a/src/persian/ParadigmsPes.gf +++ b/src/persian/ParadigmsPes.gf @@ -195,8 +195,8 @@ oper -- Personal Pronouns - personalPN : Str -> Number -> Person -> Pron -- Hidden from public API, confusing naming. /IL - = \str,nn,p -> lin Pron {s = str ; a = Ag nn p ; ps = str}; + personalPron : (nom:Str) -> (poss:Str) -> Number -> Person -> Pron -- Hidden from public API, confusing naming. /IL + = \nom,poss,nn,p -> lin Pron {s = nom ; a = Ag nn p ; ps = poss}; {- -- Demonstrative Pronouns demoPN : Str -> Str -> Str -> Quant = diff --git a/src/persian/PhrasePes.gf b/src/persian/PhrasePes.gf index d372aceea..603875762 100644 --- a/src/persian/PhrasePes.gf +++ b/src/persian/PhrasePes.gf @@ -11,17 +11,17 @@ concrete PhrasePes of Phrase = CatPes ** open Prelude, ResPes in { UttIP ip = {s = ip.s } ; --- Acc also UttIAdv iadv = iadv ; - UttNP np = {s = np.s ! NPC bEzafa} ; + UttNP np = {s = np.s ! Bare} ; UttVP vp = {s = vp.ad ++ vp.comp ! Ag Sg P3 ++ vp.obj.s ++ vp.inf ++ vp.vComp ! Ag Sg P3 ++ vp.embComp} ; UttAdv adv = {s = adv.s } ; - UttCN cn = {s = cn.s ! bEzafa ! Sg }; + UttCN cn = {s = cn.s ! Sg ! Bare }; UttCard n = n ; - UttAP ap = {s = ap.s ! bEzafa} ; + UttAP ap = {s = ap.s ! Bare} ; NoPConj = {s = []} ; PConjConj conj = {s = conj.s2} ; --- NoVoc = {s = []} ; - VocNP np = {s = np.s ! NPC bEzafa} ; + VocNP np = {s = np.s ! Bare} ; } diff --git a/src/persian/QuestionPes.gf b/src/persian/QuestionPes.gf index 1e3bd8707..7c0141bb4 100644 --- a/src/persian/QuestionPes.gf +++ b/src/persian/QuestionPes.gf @@ -32,7 +32,7 @@ concrete QuestionPes of Question = CatPes ** open ResPes, Prelude in { }; QuestIComp icomp np = - let cl = mkSClause (np.s ! NPC bEzafa ++ icomp.s) np.a (predAux auxBe); + let cl = mkSClause (np.s ! Bare ++ icomp.s) np.a (predAux auxBe); in { s = \\t,p,qf => case qf of { QDir => cl.s ! t ! p ! ODir; @@ -48,7 +48,9 @@ concrete QuestionPes of Question = CatPes ** open ResPes, Prelude in { } ; IdetCN idet cn = { - s = case idet.isNum of {False => idet.s ++ cn.s ! bEzafa ! idet.n ; True => idet.s ++ cn.s ! bEzafa ! Sg} ; + s = case idet.isNum of { + False => idet.s ++ cn.s ! idet.n ! Bare ; + True => idet.s ++ cn.s ! Sg ! Bare} ; n = idet.n; } ; diff --git a/src/persian/RelativePes.gf b/src/persian/RelativePes.gf index dc76d0aeb..935751140 100644 --- a/src/persian/RelativePes.gf +++ b/src/persian/RelativePes.gf @@ -6,19 +6,19 @@ concrete RelativePes of Relative = CatPes ** open ResPes in { lin RelCl cl = { - s = \\t,p,o,agr => "که" ++ cl.s ! t ! p ! o ; - }; + s = \\t,p,o,agr => "که" ++ cl.s ! t ! p ! o ; + }; -- RelVP and RelSlash slows the linking process a lot this is why it is commented for test purposes RelVP rp vp = { - s = \\t,p,o,ag => - let + s = \\t,p,o,ag => + let agr = case rp.a of { RNoAg => ag ; RAg a => a } ; cl = mkSClause (rp.s) agr vp; - + -- cl = case t of { -- VPImpPast => mkSClause (rp.s ! (giveNumber agr) ! Obl) agr vp; -- _ => mkSClause (rp.s ! (giveNumber agr) ! Dir) agr vp @@ -27,22 +27,22 @@ concrete RelativePes of Relative = CatPes ** open ResPes in { cl.s ! t ! p ! ODir ; -- c = Dir } ; - + ---- Pied piping: "ت wهعه we رe لْْکنگ". Stranding and empty ----- relative are defined in $ExtraHin.gf$ ("تهت we رe لْْکنگ ت", +---- relative are defined in $ExtraHin.gf$ ("تهت we رe لْْکنگ ت", ---- "we رe لْْکنگ ت"). -- RelSlash rp slash = { - s = \\t,p,o,agr => rp.s ++ slash.c2.s ++ slash.subj ++ slash.vp ! t ! p ! o ;--case t of { ---- AR 18/8/2017 is this the right place of subj? + s = \\t,p,o,agr => rp.s ++ slash.c2.s ++ slash.subj ++ slash.vp ! t ! p ! o ;--case t of { ---- AR 18/8/2017 is this the right place of subj? -- VPImpPast => rp.s ! (giveNumber agr) Obl ++ slash.c2.s ++ slash.s ! t ! p ! o ; --- _ => rp.s ! (giveNumber agr) Dir ++ slash.c2.s ++ slash.s ! t ! p ! o +-- _ => rp.s ! (giveNumber agr) Dir ++ slash.c2.s ++ slash.s ! t ! p ! o -- }; -- c = Dir } ; FunRP p np rp = { - s = np.s ! NPC enClic ++ rp.s ++ p.s ++ getPron np.animacy (fromAgr np.a).n ; -- need to make a special form of relative np by addY + s = np.s ! Clitic ++ rp.s ++ p.s ++ getPron np.animacy (fromAgr np.a).n ; -- need to make a special form of relative np by addY a = RAg np.a } ; @@ -50,5 +50,5 @@ concrete RelativePes of Relative = CatPes ** open ResPes in { s = "که" ; a = RNoAg } ; - + } diff --git a/src/persian/ResPes.gf b/src/persian/ResPes.gf index bd8ce30bb..4df0e412c 100644 --- a/src/persian/ResPes.gf +++ b/src/persian/ResPes.gf @@ -14,7 +14,6 @@ resource ResPes = MorphoPes ** open Prelude,Predef in { Order = ODir | OQuest ; PMood = Del | Imper | PCond ; - NPCase = NPC Ezafa ; CardOrd = NCard | NOrd ; RAgr = RNoAg | RAg Agr ; -- RCase = RC Number Case ; @@ -26,7 +25,7 @@ resource ResPes = MorphoPes ** open Prelude,Predef in { Compl : Type = {s : Str ; ra : Str ; c : VType} ; CN : Type = Noun ** {hasAdj : Bool} ; -- for getting the right form when NP/CN is a predicate - NP : Type = {s : NPCase => Str ; a : Agr ; animacy : Animacy ; hasAdj : Bool} ; + NP : Type = {s : Mod => Str ; a : Agr ; animacy : Animacy ; hasAdj : Bool} ; VPHSlash : Type = VPH ** {c2 : Compl} ; oper @@ -191,8 +190,8 @@ oper conjThat : Str = "که" ; {- checkPron : NP -> Str -> Str = \np,str -> case (np.isPron) of { - True => np.s ! NPC Obl; - False => np.s ! NPC Obl ++ str} ; + True => np.s ! Obl; + False => np.s ! Obl ++ str} ; insertEmbCompl : VPH -> Str -> VPH = \vp,emb -> vp ** { embComp = vp.embComp ++ emb; @@ -248,7 +247,7 @@ oper quest = table { ODir => []; OQuest => "آیا" } ; - subj = np.s ! NPC bEzafa ; + subj = np.s ! Bare ; vp = \\vt,b,ord => let vps = clTable vp ! np.a ! vt ! b in vp.ad ++ vp.comp ! np.a ++ vp.obj.s ++ vps ++ vp.vComp ! np.a ++ vp.embComp @@ -361,8 +360,8 @@ taryn = "ترین" ; ----------------------------- -- Noun Phrase ----------------------------- -{-toNP : Str -> Str = \pn, npc -> case npc of { - NPC c => pn ! c ; +{-toNP : Str -> Str = \pn, -> case of { + c => pn ! c ; NPObj => pn ! Dir ; NPErg => pn ! Obl } ; diff --git a/src/persian/StructuralPes.gf b/src/persian/StructuralPes.gf index 47852fefc..f63704ed9 100644 --- a/src/persian/StructuralPes.gf +++ b/src/persian/StructuralPes.gf @@ -32,7 +32,7 @@ concrete StructuralPes of Structural = CatPes ** -- first_Ord = {s = "اولین" ; n = Sg} ; --DEPRECATED for_Prep = ss "برای" ; from_Prep = ss "از" ; - he_Pron = personalPN "او" Sg P3 ; + he_Pron = personalPron "او" "ش" Sg P3 ; here_Adv = ss "اینجا" ; here7to_Adv = ss "اینجا" ; here7from_Adv = ss "اینجا" ; @@ -41,9 +41,9 @@ concrete StructuralPes of Structural = CatPes ** how8much_IAdv = ss "چقدر" ; if_Subj = ss "اگر" ; in8front_Prep = ss "جلوی" ; - i_Pron = personalPN "من" Sg P1; + i_Pron = personalPron "من" "م" Sg P1; in_Prep = ss "در" ; - it_Pron = personalPN "آن" Sg P3; + it_Pron = personalPron "آن" "ش" Sg P3; less_CAdv = {s = "کمتر" ; p = ""} ; many_Det = mkDet ["تعداد زیادی"] Pl True; -- check more_CAdv = {s = "بیشتر" ; p = "" } ; @@ -75,7 +75,7 @@ concrete StructuralPes of Structural = CatPes ** please_Voc = ss "لطفاً" ; possess_Prep = ss "" ; -- will be handeled in Ezafeh quite_Adv = ss "کاملاً" ; - she_Pron = personalPN "او" Sg P3 ; + she_Pron = personalPron "او" "ش" Sg P3 ; so_AdA = ss "بسیار" ; -- somebody_NP = MassNP (UseN (MorphoPnb.mkN11 "کwی" )); someSg_Det = mkDet "مقداری" Sg True ; @@ -88,7 +88,7 @@ concrete StructuralPes of Structural = CatPes ** there7to_Adv = ss "آنجا" ; there7from_Adv = ss "آنجا" ; therefore_PConj = ss ["به همین دلیل"] ; - they_Pron = personalPN ["آن ها"] Pl P3 ; + they_Pron = personalPron "آن ها" "شان" Pl P3 ; this_Quant = mkQuant "این" "این" ; through_Prep = ss ["از طریق"] ; too_AdA = ss "خیلی" ; @@ -96,7 +96,7 @@ concrete StructuralPes of Structural = CatPes ** under_Prep = ss "زیر" ** {lock_Prep = <>}; very_AdA = ss "خیلی" ; want_VV = mkV "خواستن" "خواه" ** { isAux = False} ; - we_Pron = personalPN "ما" Pl P1 ; + we_Pron = personalPron "ما" "مان" Pl P1 ; whatSg_IP = {s = ["چه چیزی"] ; n = Sg } ; whatPl_IP = {s = ["چه چیزهایی"] ; n = Pl } ; when_IAdv = ss "کی" ; @@ -112,9 +112,9 @@ concrete StructuralPes of Structural = CatPes ** with_Prep = ss "با"; -- yes_Phr = ss "بله" ; yes_Utt = ss "بله" ; - youSg_Pron = personalPN "تو" Sg P2 ; - youPl_Pron = personalPN "شما" Pl P2 ; - youPol_Pron = personalPN "شما" Pl P2 ; + youSg_Pron = personalPron "تو" "ت" Sg P2 ; + youPl_Pron = personalPron "شما" "تان" Pl P2 ; + youPol_Pron = personalPron "شما" "تان" Pl P2 ; -- no_Quant = demoPN "هیچ" ; not_Predet = {s="نه"} ; if_then_Conj = sd2 "اگر" "آنگاه" ** {n = Sg} ; diff --git a/src/persian/SymbolPes.gf b/src/persian/SymbolPes.gf index 2e7b1ee1e..28d18e005 100644 --- a/src/persian/SymbolPes.gf +++ b/src/persian/SymbolPes.gf @@ -11,15 +11,15 @@ concrete SymbolPes of Symbol = CatPes ** open Prelude, ResPes in { FloatPN i = {s = i.s ; animacy = Inanimate} ; NumPN i = {s = i.s ; animacy = Inanimate} ; CNIntNP cn i = cn ** { - s = \\ez => cn.s ! aEzafa ! Sg ++ i.s ; + s = \\ez => cn.s ! Sg ! Ezafe ++ i.s ; a = agrP3 Sg } ; CNSymbNP det cn xs = cn ** { - s = \\ez => det.s ++ cn.s ! aEzafa ! det.n ++ xs.s ; + s = \\ez => det.s ++ cn.s ! det.n ! Ezafe ++ xs.s ; a = agrP3 det.n } ; CNNumNP cn i = cn ** { - s = \\ez => cn.s ! aEzafa ! Sg ++ i.s ; + s = \\ez => cn.s ! Sg ! Ezafe ++ i.s ; a = agrP3 Sg } ; diff --git a/src/persian/VerbPes.gf b/src/persian/VerbPes.gf index eacd0aca2..0620c9ea8 100644 --- a/src/persian/VerbPes.gf +++ b/src/persian/VerbPes.gf @@ -7,28 +7,28 @@ concrete VerbPes of Verb = CatPes ** open ResPes,Prelude in { UseV v = predV v ; SlashV2a v = predV v ** {c2 = {s = v.c2.s ; ra = v.c2.ra ; c = VTrans}} ; Slash2V3 v np = - insertObjc (\\_ => np.s ! NPC bEzafa ++ v.c2 ) (predV v ** {c2 = {s = [] ; ra = v.c3 ; c = VTrans}}) ; + insertObjc (\\_ => np.s ! Bare ++ v.c2 ) (predV v ** {c2 = {s = [] ; ra = v.c3 ; c = VTrans}}) ; Slash3V3 v np = - insertObjc (\\_ => v.c3 ++ np.s ! NPC bEzafa) (predV v ** {c2 = {s = [] ; ra = v.c2 ; c = VTrans}}) ; + insertObjc (\\_ => v.c3 ++ np.s ! Bare) (predV v ** {c2 = {s = [] ; ra = v.c2 ; c = VTrans}}) ; ComplVV v vp = insertVV (infVV v.isAux vp).s (predV v) ; ComplVS v s = insertObj2 (conjThat ++ s.s) (predV v) ; ComplVQ v q = insertObj2 (conjThat ++ q.s ! QIndir) (predV v) ; - ComplVA v ap = insertObj (\\_ => ap.s ! bEzafa) (predV v) ; -- check form of adjective + ComplVA v ap = insertObj (\\_ => ap.s ! Bare) (predV v) ; -- check form of adjective SlashV2V v vp = insertVV (infVV v.isAux vp).s (predV v) **{c2 = {s = v.c1 ; ra = [] ; c = VTransPost}} ; SlashV2S v s = insertObjc2 (conjThat ++ s.s) (predV v ** {c2 = {s = v.c2.s ;ra = [] ; c = VTransPost}}) ; SlashV2Q v q = insertObjc2 ( q.s ! QIndir) (predV v ** {c2 = {s = v.c2.s ; ra = [] ;c = VTransPost}}) ; - SlashV2A v ap = insertObjc3 ( ap.s ! bEzafa) (predV v ** {c2 = {s = [] ; ra = v.c2.ra ;c = VTransPost}}) ; ---- paint it red , check form of adjective + SlashV2A v ap = insertObjc3 ( ap.s ! Bare) (predV v ** {c2 = {s = [] ; ra = v.c2.ra ;c = VTransPost}}) ; ---- paint it red , check form of adjective - ComplSlash vp np = insertObjPre (\\_ => np.s ! NPC bEzafa ) vp ; + ComplSlash vp np = insertObjPre (\\_ => np.s ! Bare ) vp ; SlashVV vv vp = -- insertObj (infVV vv.isAux vp).s (predV vv) ** insertVV (infVV vv.isAux vp).s (predV vv) ** {c2 = vp.c2} ; SlashV2VNP vv np vp = - insertObjPre (\\_ => np.s ! NPC bEzafa ) + insertObjPre (\\_ => np.s ! Bare ) -- (insertObjc (infVV vv.isAux vp).s (predVc vv)) ** (insertVVc (infVV vv.isAux vp).s (predVc vv)) ** {c2 = vp.c2} ; @@ -40,21 +40,22 @@ concrete VerbPes of Verb = CatPes ** open ResPes,Prelude in { AdVVP adv vp = insertAdV adv.s vp ; ReflVP v = insertObjPre (\\a => reflPron ! a) v ; PassV2 v = predV v ; -- need to be fixed - CompAP ap ={s = \\_ => ap.s ! bEzafa} ; -- check form of adjective + CompAP ap ={s = \\_ => ap.s ! Bare} ; -- check form of adjective CompAdv adv = {s = \\_ => adv.s } ; -- see https://sites.la.utexas.edu/persian_online_resources/nouns/noun-in-a-predicative-position/ CompCN cn = { - s = \\a => cn.s ! case cn.hasAdj of { - False => bEzafa ; - True => enClic } - ! giveNumber a + s = \\a => cn.s ! giveNumber a + ! case cn.hasAdj of { + False => Bare ; + True => Clitic } + } ; CompNP np = { s = \\a => np.s ! case np.hasAdj of { - False => NPC bEzafa ; - True => NPC enClic } + False => Bare ; + True => Clitic } } ; } diff --git a/src/persian/src/AdjectivePes.gf b/src/persian/src/AdjectivePes.gf index 6355d4170..aba0657a9 100644 --- a/src/persian/src/AdjectivePes.gf +++ b/src/persian/src/AdjectivePes.gf @@ -7,14 +7,14 @@ concrete AdjectivePes of Adjective = CatPes ** open ResPes, Prelude in { UseComparA a = a; ComparA a np = { - s =\\ez => a.s ! ez ++ "tr" ++ "Az" ++ np.s ! NPC bEzafa ; + s =\\ez => a.s ! ez ++ "tr" ++ "Az" ++ np.s ! Bare ; adv = a.adv } ; ---- $SuperlA$ belongs to determiner syntax in $Noun$. ComplA2 a np = { - s =\\ez => np.s ! NPC bEzafa ++ a.c2 ++ a.s ! ez ; + s =\\ez => np.s ! Bare ++ a.c2 ++ a.s ! ez ; adv = a.adv } ; @@ -36,7 +36,7 @@ concrete AdjectivePes of Adjective = CatPes ** open ResPes, Prelude in { UseA2 a = a ; CAdvAP cadv ap np = { - s =\\ez => cadv.s ++ np.s ! NPC bEzafa ++ ap.s ! ez ; + s =\\ez => cadv.s ++ np.s ! Bare ++ ap.s ! ez ; adv = ap.adv }; diff --git a/src/persian/src/AdverbPes.gf b/src/persian/src/AdverbPes.gf index 97796c636..31c285f84 100644 --- a/src/persian/src/AdverbPes.gf +++ b/src/persian/src/AdverbPes.gf @@ -2,16 +2,16 @@ concrete AdverbPes of Adverb = CatPes ** open ResPes, Prelude in { flags coding = utf8; lin - -- PositAdvAdj a = {s = a.s ! bEzafa } ; + -- PositAdvAdj a = {s = a.s ! Bare } ; PositAdvAdj a = {s = a.adv } ; ComparAdvAdj cadv a np = { - s = a.adv ++ cadv.p ++ cadv.s ++ np.s ! NPC bEzafa ; + s = a.adv ++ cadv.p ++ cadv.s ++ np.s ! Bare ; } ; ComparAdvAdjS cadv a s = { s = a.adv ++ cadv.p ++ cadv.s ++ s.s; } ; - PrepNP prep np = {s = prep.s ++ np.s ! NPC bEzafa } ; + PrepNP prep np = {s = prep.s ++ np.s ! Bare } ; AdAdv ada adv = { s = ada.s ++ adv.s} ; diff --git a/src/persian/src/IdiomPes.gf b/src/persian/src/IdiomPes.gf index d4cc69977..8464328d4 100644 --- a/src/persian/src/IdiomPes.gf +++ b/src/persian/src/IdiomPes.gf @@ -9,7 +9,7 @@ concrete IdiomPes of Idiom = CatPes ** open Prelude,Predef, ResPes in { GenericCl vp = mkSClause "A:dm" (agrPesP3 Sg) vp ; CleftNP np rs = - let cl = mkSClause (np.s ! NPC bEzafa) (np.a) (predAux auxBe); + let cl = mkSClause (np.s ! Bare) (np.a) (predAux auxBe); in {s = \\t,p,o => cl.s ! t ! p ! o ++ rs.s ! np.a }; @@ -17,7 +17,7 @@ concrete IdiomPes of Idiom = CatPes ** open Prelude,Predef, ResPes in { ExistNP np = mkSClause " " (agrPesP3 (fromAgr np.a).n) - (insertObj (\\_ => np.s ! NPC bEzafa) (predAux auxBe)) ; + (insertObj (\\_ => np.s ! Bare) (predAux auxBe)) ; ExistIP ip = let cl = mkSClause ( ip.s ) (agrPesP3 ip.n) (predAux auxBe); @@ -33,7 +33,7 @@ concrete IdiomPes of Idiom = CatPes ** open Prelude,Predef, ResPes in { ImpPl1 vp = {s = "byAyyd" ++ (vp.s ! VVForm (agrPesP1 Pl)).inf} ; - ImpP3 np vp = {s = "bgWAryd" ++ np.s!NPC bEzafa ++ (vp.s ! VVForm (AgPes (fromAgr np.a).n (fromAgr np.a).p)).inf}; + ImpP3 np vp = {s = "bgWAryd" ++ np.s!Bare ++ (vp.s ! VVForm (AgPes (fromAgr np.a).n (fromAgr np.a).p)).inf}; } diff --git a/src/persian/src/MorphoPes.gf b/src/persian/src/MorphoPes.gf index f2820af1f..9070e50a3 100644 --- a/src/persian/src/MorphoPes.gf +++ b/src/persian/src/MorphoPes.gf @@ -20,10 +20,10 @@ oper mkN : (x1,x2 : Str) -> Animacy -> Noun = \sg,pl,ani -> { s = table { - bEzafa => table { Sg => sg ; + Bare => table { Sg => sg ; Pl => pl } ; - aEzafa => table { Sg => mkEzafa sg ; + Ezafe => table { Sg => mkEzafa sg ; Pl => mkEzafa pl } ; enClic => table { Sg => mkEnclic sg ; @@ -483,23 +483,23 @@ addBh str = --Determiners -------------------- - makeDet : Str -> Number -> Bool -> {s: Str ; n : Number ; isNum : Bool ; fromPron : Bool} =\str,n,b -> { + makeDet : Str -> Number -> Bool -> {s: Str ; n : Number ; isNum : Bool ; mod : Bool} =\str,n,b -> { s = str; isNum = b; - fromPron = False ; + mod = False ; n = n }; - makeQuant : Str -> Str -> {s : Number => Str ; a : AgrPes ; fromPron : Bool } = \sg,pl -> { + makeQuant : Str -> Str -> {s : Number => Str ; a : AgrPes ; mod : Bool } = \sg,pl -> { s = table {Sg => sg ; Pl => pl} ; - fromPron = False ; + mod = False ; a = agrPesP3 Sg }; --------------------------- -- Adjectives -------------------------- mkAdj : Str -> Str -> Adjective = \adj,adv -> { - s = table { bEzafa => adj; - aEzafa => mkEzafa adj ; + s = table { Bare => adj; + Ezafe => mkEzafa adj ; enClic => mkEnclic adj } ; adv = adv diff --git a/src/persian/src/ParadigmsPes.gf b/src/persian/src/ParadigmsPes.gf index 47f9d82e1..e3eedbbd3 100644 --- a/src/persian/src/ParadigmsPes.gf +++ b/src/persian/src/ParadigmsPes.gf @@ -57,7 +57,7 @@ oper -- Personal Pronouns - personalPN : Str -> Number -> PPerson -> Pron = + personalPron : Str -> Number -> PPerson -> Pron = \str,nn,p -> {s = str ; a = AgPes nn p ; ps = str ; lock_Pron = <>}; {- -- Demonstration Pronouns diff --git a/src/persian/src/RelativePes.gf b/src/persian/src/RelativePes.gf index 774bdae7d..a30102c89 100644 --- a/src/persian/src/RelativePes.gf +++ b/src/persian/src/RelativePes.gf @@ -42,7 +42,7 @@ concrete RelativePes of Relative = CatPes ** open ResPes in { } ; FunRP p np rp = { - s = np.s ! NPC enClic ++ rp.s ++ p.s ++ getPron np.animacy (fromAgr np.a).n ; -- need to make a special form of relative np by addY + s = np.s ! enClic ++ rp.s ++ p.s ++ getPron np.animacy (fromAgr np.a).n ; -- need to make a special form of relative np by addY a = RAg np.a } ; diff --git a/src/persian/src/ResPes.gf b/src/persian/src/ResPes.gf index f2a113238..53cf10a76 100644 --- a/src/persian/src/ResPes.gf +++ b/src/persian/src/ResPes.gf @@ -32,8 +32,8 @@ resource ResPes = ParamX ** open Prelude,Predef in { InfrAspect = InfrPerf | InfrImperf ; AgrPes = AgPes Number PPerson; - Ezafa = bEzafa | aEzafa | enClic; - NPCase = NPC Ezafa ; + Ezafa = Bare | Ezafe | enClic; + NPCase = Ezafa ; CardOrd = NCard | NOrd ; RAgr = RNoAg | RAg AgrPes ; -- RCase = RC Number Case ; @@ -53,7 +53,7 @@ resource ResPes = ParamX ** open Prelude,Predef in { Adjective = {s:Ezafa => Str ; adv : Str} ; NP : Type = {s : NPCase => Str ; a : AgrPes ; animacy : Animacy } ; - Determiner = {s : Str ; n :Number ; isNum : Bool ; fromPron : Bool} ; + Determiner = {s : Str ; n :Number ; isNum : Bool ; mod : Bool} ; VPHSlash = VPH ** {c2 : Compl} ; oper @@ -260,8 +260,8 @@ oper conjThat : Str = "kh" ; {- checkPron : NP -> Str -> Str = \np,str -> case (np.isPron) of { - True => np.s ! NPC Obl; - False => np.s ! NPC Obl ++ str} ; + True => np.s ! Obl; + False => np.s ! Obl ++ str} ; insertEmbCompl : VPH -> Str -> VPH = \vp,emb -> { s = vp.s ; @@ -292,7 +292,7 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; mkClause : NP -> VPH -> Clause = \np,vp -> { s = \\vt,b,ord => let - subj = np.s ! NPC bEzafa; + subj = np.s ! Bare; agr = np.a ; n = (fromAgr agr).n; p = (fromAgr agr).p; @@ -795,7 +795,7 @@ addBh2 str1 = -- Noun Phrase ----------------------------- {-toNP : Str -> Str = \pn, npc -> case npc of { - NPC c => pn ! c ; + c => pn ! c ; NPObj => pn ! Dir ; NPErg => pn ! Obl } ; diff --git a/src/persian/src/StructuralPes.gf b/src/persian/src/StructuralPes.gf index 0f5ebc230..15073e25e 100644 --- a/src/persian/src/StructuralPes.gf +++ b/src/persian/src/StructuralPes.gf @@ -31,7 +31,7 @@ concrete StructuralPes of Structural = CatPes ** -- first_Ord = {s = "Avlyn" ; n = Sg} ; --DEPRECATED for_Prep = ss "brAy" ; from_Prep = ss "Az" ; - he_Pron = personalPN "Av" Sg PPers3 ; + he_Pron = personalPron "Av" Sg PPers3 ; here_Adv = ss "AynjA" ; here7to_Adv = ss "AynjA" ; here7from_Adv = ss "AynjA" ; @@ -40,9 +40,9 @@ concrete StructuralPes of Structural = CatPes ** how8much_IAdv = ss "c^qdr" ; if_Subj = ss "Agr" ; in8front_Prep = ss "jlvy" ; - i_Pron = personalPN "mn" Sg PPers1; + i_Pron = personalPron "mn" Sg PPers1; in_Prep = ss "dr" ; - it_Pron = personalPN "A:n" Sg PPers3; + it_Pron = personalPron "A:n" Sg PPers3; less_CAdv = {s = "kmtr" ; p = ""} ; many_Det = mkDet ["tcdAd zyAdy"] Pl True; -- check more_CAdv = {s = "byCtr" ; p = "" } ; @@ -73,7 +73,7 @@ concrete StructuralPes of Structural = CatPes ** please_Voc = ss "lTfAa." ; possess_Prep = ss "" ; -- will be handeled in Ezafeh quite_Adv = ss "kAmlAa." ; - she_Pron = personalPN "Av" Sg PPers3 ; + she_Pron = personalPron "Av" Sg PPers3 ; so_AdA = ss "bsyAr" ; -- somebody_NP = MassNP (UseN (MorphoPnb.mkN11 "kwy" )); someSg_Det = mkDet "mqdAry" Sg True ; @@ -86,7 +86,7 @@ concrete StructuralPes of Structural = CatPes ** there7to_Adv = ss "A:njA" ; there7from_Adv = ss "A:njA" ; therefore_PConj = ss ["bh hmyn dlyl"] ; - they_Pron = personalPN ["A:n hA"] Pl PPers3 ; + they_Pron = personalPron ["A:n hA"] Pl PPers3 ; this_Quant = mkQuant "Ayn" "Ayn" ; through_Prep = ss ["Az Tryq"] ; too_AdA = ss "Kyly" ; @@ -94,7 +94,7 @@ concrete StructuralPes of Structural = CatPes ** under_Prep = ss "zyr" ** {lock_Prep = <>}; very_AdA = ss "Kyly" ; want_VV = mkV "KvAstn" "KvAh" ** { isAux = False} ; - we_Pron = personalPN "mA" Pl PPers1 ; + we_Pron = personalPron "mA" Pl PPers1 ; whatSg_IP = {s = ["c^h c^yzy"] ; n = Sg } ; whatPl_IP = {s = ["c^h c^yzhAyy"] ; n = Pl } ; when_IAdv = ss "ky" ; @@ -110,9 +110,9 @@ concrete StructuralPes of Structural = CatPes ** with_Prep = ss "bA"; -- yes_Phr = ss "blh" ; yes_Utt = ss "blh" ; - youSg_Pron = personalPN "tv" Sg PPers2 ; - youPl_Pron = personalPN "CmA" Pl PPers2 ; - youPol_Pron = personalPN "CmA" Pl PPers2 ; + youSg_Pron = personalPron "tv" Sg PPers2 ; + youPl_Pron = personalPron "CmA" Pl PPers2 ; + youPol_Pron = personalPron "CmA" Pl PPers2 ; -- no_Quant = demoPN "hyc^" ; not_Predet = {s="nh"} ; if_then_Conj = sd2 "Agr" "A:ngAh" ** {n = Sg} ;