1
0
forked from GitHub/gf-rgl

(Pes) Add premodifier APs

This commit is contained in:
Inari Listenmaa
2019-03-14 13:36:02 +01:00
parent 76cbfa31a7
commit 58400060ad
8 changed files with 57 additions and 45 deletions

View File

@@ -3,46 +3,51 @@ concrete AdjectivePes of Adjective = CatPes ** open ResPes, Prelude in {
flags coding = utf8; flags coding = utf8;
lin lin
PositA a = a ; PositA a = a ;
UseComparA a = a; UseComparA a = a ;
ComparA a np = { ComparA a np = a ** {
s =\\ez => a.s ! ez ++ "تر" ++ "از" ++ np.s ! Bare ; s = \\m => a.s ! m ++ "تر" ++ "از" ++ np.s ! Bare ;
adv = a.adv adv = a.adv ++ "تر" ++ "از" ++ np.s ! Bare ;
} ; } ;
---- $SuperlA$ belongs to determiner syntax in $Noun$. ---- $SuperlA$ belongs to determiner syntax in $Noun$.
ComplA2 a np = { ComplA2 a np = a ** {
s =\\ez => np.s ! Bare ++ a.c2 ++ a.s ! ez ; s = \\m => np.s ! Bare ++ a.c2 ++ a.s ! m ;
adv = a.adv adv = np.s ! Bare ++ a.c2 ++ a.adv
} ; } ;
ReflA2 a = { ReflA2 a = a ** {
s =\\ez => a.s ! ez ++ "" ; -- need to be fixed s = \\m => a.s ! m ++ reflPron ! defaultAgr ; ---- need to be fixed
adv = a.adv adv = a.adv ++ reflPron ! defaultAgr
} ; } ;
SentAP ap sc = { SentAP ap sc = ap ** {
s =\\ez => ap.s! ez ++ sc.s ; s = \\m => ap.s ! m ++ sc.s ;
adv = ap.adv adv = ap.adv ++ sc.s
} ; } ;
AdAP ada ap = { AdAP ada ap = ap ** {
s =\\ez => ada.s ++ ap.s ! ez ; s = \\m => ada.s ++ ap.s ! m ;
adv = ap.adv adv = ada.s ++ ap.adv ;
} ; } ;
UseA2 a = a ; UseA2 a = a ;
CAdvAP cadv ap np = { CAdvAP cadv ap np = ap ** {
s =\\ez => cadv.s ++ np.s ! Bare ++ ap.s ! ez ; s = \\m => cadv.s ++ np.s ! Bare ++ ap.s ! m ;
adv = ap.adv adv = cadv.s ++ ap.adv
}; } ;
AdjOrd ord = { s =\\_ => ord.s ; adv = ""}; AdjOrd ord = {
s = \\_ => ord.s ;
adv = ord.s ;
isPre = ord.isPre
} ;
AdvAP ap adv = ap ** {
s = \\m => ap.s ! m ++ adv.s ;
AdvAP ap adv = {s =\\ez => ap.s ! ez ++ adv.s ; adv = ap.adv}; adv = ap.adv ++ adv.s
} ;
} }

View File

@@ -58,7 +58,7 @@ concrete CatPes of Cat = CommonX ** open ResPes, Prelude in {
Predet = {s : Str} ; Predet = {s : Str} ;
Num = {s : Str ; n : Number ; isNum : Bool} ; Num = {s : Str ; n : Number ; isNum : Bool} ;
Card = {s : Str; n : Number} ; Card = {s : Str; n : Number} ;
Ord = {s : Str; n : Number ; isNum : Bool} ; Ord = {s : Str; n : Number ; isNum,isPre : Bool} ;
Quant = ResPes.Quant ; Quant = ResPes.Quant ;
---- Numeral ---- Numeral

View File

@@ -17,7 +17,7 @@ concrete ConjunctionPes of Conjunction =
animacy = ss.animacy ; animacy = ss.animacy ;
} ; } ;
ConjAP conj ss = conjunctDistrTable Mod conj ss ** {adv = ss.adv}; ConjAP conj ss = ss ** conjunctDistrTable Mod conj ss ; -- Adv isn't changed
ConjRS conj rs = conjunctDistrTable Agr conj rs ** { c = rs.c}; ConjRS conj rs = conjunctDistrTable Agr conj rs ** { c = rs.c};
---- These fun's are generated from the list cat's. ---- These fun's are generated from the list cat's.
@@ -32,15 +32,14 @@ concrete ConjunctionPes of Conjunction =
BaseRS x y = twoTable Agr x y ** {c = x.c}; BaseRS x y = twoTable Agr x y ** {c = x.c};
ConsNP xs x = xs ** consrTable Mod 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}; 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 = y ** twoTable Mod x y ;
BaseAP x y = twoTable Mod x y ** {adv = x.adv}; ConsAP xs x = xs ** consrTable Mod comma xs x ; -- Table3 Number Gender Case comma xs x ;-- ** {isPre = andB xs.isPre x.isPre} ;
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 lincat
[S] = {s1,s2 : VVForm => Str} ; [S] = {s1,s2 : VVForm => Str} ;
[Adv] = {s1,s2 : Str} ; [Adv] = {s1,s2 : Str} ;
[NP] = {s1,s2 : Mod => Str ; a : Agr ; animacy : Animacy ; hasAdj : Bool; compl:Str} ; [NP] = {s1,s2 : Mod => Str ; a : Agr ; animacy : Animacy ; hasAdj : Bool; compl:Str} ;
[AP] = {s1,s2 : Mod => Str ; adv : Str} ; [AP] = {s1,s2 : Mod => Str ; adv : Str ; isPre : Bool} ;
[RS] = {s1,s2 : Agr => Str }; [RS] = {s1,s2 : Agr => Str };
} }

View File

@@ -132,7 +132,7 @@ concrete LexiconPes of Lexicon = CatPes **
new_A = mkA "نو" "تازه"; new_A = mkA "نو" "تازه";
newspaper_N = mkN01 "روزنامه" inanimate; newspaper_N = mkN01 "روزنامه" inanimate;
oil_N = mkN "نفت" "نفت" inanimate; -- also "روغن" oil_N = mkN "نفت" "نفت" inanimate; -- also "روغن"
old_A = mkA "پیر" "پیرانه"; old_A = preA "پیر" "پیرانه" ;
open_V2 = mkV2 (compoundV "باز" doVerb) "را"; open_V2 = mkV2 (compoundV "باز" doVerb) "را";
paint_V2A = mkV2 (compoundV "رنگ" doVerb) "را" ; paint_V2A = mkV2 (compoundV "رنگ" doVerb) "را" ;
paper_N = mkN01 "کاغذ" inanimate; paper_N = mkN01 "کاغذ" inanimate;

View File

@@ -147,7 +147,11 @@ oper
--------------------------- ---------------------------
-- Adjectives -- Adjectives
-------------------------- --------------------------
Adjective : Type = {s : Mod => Str ; adv : Str} ; Adjective : Type = {
s : Mod => Str ;
adv : Str ;
isPre : Bool
} ;
mkAdj : Str -> Str -> Adjective = \adj,adv -> { mkAdj : Str -> Str -> Adjective = \adj,adv -> {
s = table { Bare => adj; s = table { Bare => adj;
@@ -155,7 +159,7 @@ oper
Clitic => mkEnclic adj ; Clitic => mkEnclic adj ;
Poss => mkPossStem adj Poss => mkPossStem adj
} ; } ;
adv = adv adv = adv ; isPre = False
}; };
------------------------------------------------------------------ ------------------------------------------------------------------

View File

@@ -77,14 +77,14 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
NumCard n = n ** {isNum = True} ; NumCard n = n ** {isNum = True} ;
NumDigits n = n ** {s = n.s ! NCard; isNum = True} ; NumDigits n = n ** {s = n.s ! NCard; isNum = True} ;
OrdDigits n = n ** {s = n.s ! NOrd ; isNum = True} ; OrdDigits n = n ** {s = n.s ! NOrd ; isNum = True ; isPre=False} ;
NumNumeral n = n ** {s = n.s ! NCard; isNum = True} ; NumNumeral n = n ** {s = n.s ! NCard; isNum = True} ;
OrdNumeral n = n ** {s = n.s ! NOrd ; isNum = True} ; OrdNumeral n = n ** {s = n.s ! NOrd ; isNum = True ; isPre=False} ;
-- to here -- to here
AdNum adn num = num ** {s = adn.s ++ num.s} ; AdNum adn num = num ** {s = adn.s ++ num.s} ;
OrdSuperl a = {s = a.s ! Bare ++ taryn; n = Sg ; isNum=False} ; -- check the form of adjective OrdSuperl a = {s = a.s ! Bare ++ taryn; n = Sg ; isNum=False ; isPre = True} ; -- check the form of adjective
DefArt = {s = \\_,_ => [] ; mod = Bare} ; DefArt = {s = \\_,_ => [] ; mod = Bare} ;
IndefArt = {s = table {Sg => \\_ => IndefArticle ; Pl => \\_ => []} ; mod = Bare} ; IndefArt = {s = table {Sg => \\_ => IndefArticle ; Pl => \\_ => []} ; mod = Bare} ;
@@ -121,7 +121,9 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
} ; } ;
AdjCN ap cn = cn ** { AdjCN ap cn = cn ** {
s = \\n,ez => cn.s ! n ! Ezafe ++ ap.s ! ez ; s = \\n,m => case ap.isPre of {
True => ap.s ! Bare ++ cn.s ! n ! m ; -- TODO check mod of ap
False => cn.s ! n ! Ezafe ++ ap.s ! m } ;
hasAdj = True hasAdj = True
} ; } ;

View File

@@ -282,6 +282,8 @@ oper
= \a,c -> lin A2 (mkAdj a a ** {c2 = c}) = \a,c -> lin A2 (mkAdj a a ** {c2 = c})
} ; } ;
preA : (adj,adv : Str) -> A = \adj,adv ->
lin A ((mkAdj adj adv) ** {isPre=True}) ;
{- {-
-- Demonstrative Pronouns -- Demonstrative Pronouns

View File

@@ -28,7 +28,7 @@ concrete SymbolPes of Symbol = CatPes ** open Prelude, ResPes in {
SymbS sy = {s = \\_ => sy.s} ; SymbS sy = {s = \\_ => sy.s} ;
SymbNum sy = { s = sy.s ; n = Pl } ; SymbNum sy = { s = sy.s ; n = Pl } ;
SymbOrd sy = { s = sy.s ++ "wN" ; n = Pl; isNum=False} ; SymbOrd sy = { s = sy.s ++ "wN" ; n = Pl; isNum,isPre=False} ;
lincat lincat