1
0
forked from GitHub/gf-rgl

(Ara) Add paradigm for broken plural adjectives

This commit is contained in:
Inari Listenmaa
2018-10-17 17:17:52 +02:00
parent 069a02c441
commit e051829637

View File

@@ -107,19 +107,21 @@ resource ParadigmsAra = open
mkA = overload { mkA = overload {
mkA : (root,patt : Str) -> A mkA : (root,patt : Str) -> A
= sndA ; = \r,p -> lin A (sndA r p);
mkA : (root : Str) -> A -- forms adjectives with positive form aFCal mkA : (root : Str) -> A -- forms adjectives with positive form aFCal
= clrA ; = \r -> lin A (clrA r);
mkA : (posit,compar,plur : Str) -> A mkA : (root,sg,pl : Str) -> A
= degrA ; = \r,s,p -> lin A (brkA r s p) ;
-- mkA : (posit,compar,plur : Str) -> A
-- = degrA ;
} ; } ;
--Takes a root string and a pattern string --Takes a root string and a pattern string
sndA : (root,patt : Str) -> A ; sndA : (root,patt : Str) -> Adj ;
--Takes a root string only --Takes a root string only
clrA : (root : Str) -> A ; -- forms adjectives of type aFCal clrA : (root : Str) -> Adj ; -- forms adjectives of type aFCal
--3 Two-place adjectives --3 Two-place adjectives
-- --
@@ -405,8 +407,14 @@ resource ParadigmsAra = open
sdfN = sdfN =
\root,sg,gen,spec -> \root,sg,gen,spec ->
let { kalima = mkWord sg root; let { kalimaStr = mkWord sg root;
} in mkFullN (sndf kalima) gen spec; kalimaRaw = sndf kalimaStr;
kalima : NTable = \\n,d,c => case root of {
_ + #hamza + _
=> rectifyHmz (kalimaRaw ! n ! d ! c);
_ => kalimaRaw ! n ! d ! c
};
} in mkFullN kalima gen spec;
sdmN = sdmN =
\root,sg,gen,spec -> \root,sg,gen,spec ->
@@ -478,6 +486,19 @@ resource ParadigmsAra = open
d = det d = det
}); });
brkA : (root,sg,pl : Str) -> Adj = \root,sg,pl ->
let jadId = mkWord sg root ;
jadIda = jadId + "َة" ;
judud = mkWord pl root ;
akbar = mkWord "أَفعَل" root ;
mascTbl = reg jadId judud ;
femTbl = reg jadIda judud ;
in { s = table {
APosit Masc n d c => mascTbl ! n ! d ! c ;
APosit Fem n d c => femTbl ! n ! d ! c ;
AComp d c => indeclN akbar ! d ! c }
} ;
degrA : (posit,compar,plur : Str) -> A degrA : (posit,compar,plur : Str) -> A
= \posit,compar,plur -> lin A {s = clr posit compar plur} ; = \posit,compar,plur -> lin A {s = clr posit compar plur} ;
@@ -487,20 +508,18 @@ resource ParadigmsAra = open
case root of { case root of {
_ + #hamza + _ => rectifyHmz(raw.s ! af); _ + #hamza + _ => rectifyHmz(raw.s ! af);
_ => raw.s ! af _ => raw.s ! af
}; }
lock_A = <>
}; };
sndA' : Str -> Str -> A = sndA' : Str -> Str -> Adj =
\root,pat -> \root,pat ->
let { kabIr = mkWord pat root; let { kabIr = mkWord pat root;
akbar = mkWord "أَفعَل" root akbar = mkWord "أَفعَل" root
} in { } in {
s = table { s = table {
APosit g n d c => (positAdj kabIr) ! g ! n ! d ! c ; APosit g n d c => positAdj kabIr ! g ! n ! d ! c ;
AComp d c => (indeclN akbar) ! d ! c AComp d c => indeclN akbar ! d ! c
}; }
lock_A = <>
}; };
clrA root = clrA root =
@@ -509,7 +528,6 @@ resource ParadigmsAra = open
Humr = mkWord "فُعل" root Humr = mkWord "فُعل" root
} in { } in {
s = clr eaHmar HamrA' Humr; s = clr eaHmar HamrA' Humr;
lock_A = <>
}; };
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ; mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;