mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-10 11:42:51 -06:00
Hebrew RGL files added
This commit is contained in:
420
lib/src/hebrew/ParadigmsHeb.gf
Normal file
420
lib/src/hebrew/ParadigmsHeb.gf
Normal file
@@ -0,0 +1,420 @@
|
||||
--# -path=.:../abstract:../../prelude:../common
|
||||
|
||||
resource ParadigmsHeb = open
|
||||
Predef,
|
||||
Prelude,
|
||||
MorphoHeb,
|
||||
ResHeb,
|
||||
CatHeb
|
||||
in {
|
||||
|
||||
flags optimize = noexpand; coding=utf8 ;
|
||||
|
||||
oper
|
||||
|
||||
mkNoun : (bait,batim,batimD : Str) -> Gender -> Noun = \bait,batim,batimD,g -> {
|
||||
s = table {
|
||||
Sg => table{Indef => bait ; Def => defH bait};
|
||||
Pl => table{Indef => batim ; Def => defH batim} ;
|
||||
Dl => table{Indef => batimD ; Def => defH batimD}
|
||||
} ;
|
||||
g=g ;
|
||||
};
|
||||
|
||||
-- For some nouns it is not possible to infer the gender from the pefix,
|
||||
-- depending on the gender, a noun can either end with yM or wt.
|
||||
|
||||
regNoun2 : Str -> Gender -> Noun = \root,g ->
|
||||
case root of {
|
||||
heret + c@? => table {
|
||||
Masc => mkNoun root (heret + replaceLastLet (c) + "yM" ) ("") g;
|
||||
Fem => mkNoun root (heret + replaceLastLet (c) + "wt") ("") g
|
||||
} ! g
|
||||
} ;
|
||||
|
||||
-- For regular nouns, it is possible to infer the gender from the pefix.
|
||||
|
||||
regNoun : Str -> Noun =
|
||||
\root -> case root of {
|
||||
malc + "h" => mkNoun root (malc + "wt") ("") Fem ;
|
||||
mecon + "yt" => mkNoun root (mecon + "ywt") ("") Fem ; -- (it -> iyot)
|
||||
khan + "wt" => mkNoun root (khan + "ywt") ("") Fem; -- (ut -> uyot)
|
||||
tsalakh + "t" => mkNoun root (tsalakh + "wt") ("") Fem ; -- (at -> ot)
|
||||
_ => mkNoun root (root + "yM") ("") Masc
|
||||
} ;
|
||||
|
||||
mkN = overload {
|
||||
mkN : (root: Str) -> Noun = regNoun ;
|
||||
mkN : (kaf : Str) -> Gender-> Noun = regNoun2 ;
|
||||
mkN : (bait, batim : Str) -> Gender -> Noun = \bait,batim -> mkNoun bait batim "";
|
||||
mkN : (regel, raglayim, raglaim : Str) -> Gender -> Noun = mkNoun ;
|
||||
} ;
|
||||
|
||||
mkProperNoun : Str -> Gender -> PN = \str,gen ->
|
||||
{
|
||||
s = \\_ => str ;
|
||||
g = gen ;
|
||||
lock_PN = <>
|
||||
} ;
|
||||
|
||||
mkPron : (s,a,d : Str) -> Gender -> Number -> Person -> Pron =
|
||||
\s,a,d,g,n,p -> {
|
||||
s =
|
||||
table {
|
||||
Nom => {obj = s} ;
|
||||
Acc => {obj = a} ;
|
||||
Dat => {obj = []}
|
||||
};
|
||||
isDef = False ;
|
||||
sp = Indef ;
|
||||
a = Ag g n p ;
|
||||
lock_Pron = <>
|
||||
} ;
|
||||
|
||||
mkPrep : Str -> Bool -> Prep = \prepstr,ispre ->
|
||||
{
|
||||
s = prepstr;
|
||||
isPre = ispre ; lock_Prep = <>
|
||||
} ;
|
||||
|
||||
|
||||
mkPN = overload {
|
||||
mkPN : Str -> Gender -> PN
|
||||
= mkProperNoun ;
|
||||
} ;
|
||||
|
||||
|
||||
regA : Str -> Adj = \root
|
||||
-> case root of {
|
||||
kaTan + c@? => mkAdj root (kaTan + replaceLastLet (c) + "h") (kaTan +
|
||||
replaceLastLet (c) + "yM") (kaTan + replaceLastLet (c) + "wt")
|
||||
};
|
||||
|
||||
regA2 : Str -> Adj = \bwleT
|
||||
-> mkAdj bwleT ( bwleT + "t") ( bwleT + "yM" ) (bwleT + "wt" );
|
||||
|
||||
mkAdj : (_,_,_,_ : Str) -> Adj = \tov,tova,tovim,tovot -> {
|
||||
s = table {
|
||||
Sg => table {
|
||||
Indef => table { Masc => tov ; Fem => tova } ;
|
||||
Def => table { Masc => defH tov ; Fem => defH tova }
|
||||
} ;
|
||||
_ => table {
|
||||
Indef => table {Masc => tovim ; Fem => tovot } ;
|
||||
Def => table { Masc => defH tovim ; Fem => defH tovot }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
mkAdv = overload {
|
||||
mkAdv : Str -> Adv = \s -> {s = s ; lock_Adv = <>} ;
|
||||
} ;
|
||||
|
||||
|
||||
dirV2: Verb -> Verb2 =\v ->
|
||||
{
|
||||
s = v.s ;
|
||||
c = Acc
|
||||
} ;
|
||||
|
||||
|
||||
mkVPaal : Str -> Verb = \v ->
|
||||
let root = getRoot v
|
||||
in {s = table {
|
||||
Perf => table {
|
||||
Vp1Sg => appPattern root C1aC2aC3ti ;
|
||||
Vp1Pl => appPattern root C1aC2aC3nu ;
|
||||
|
||||
Vp2Sg Masc => appPattern root C1aC2aC3ta ;
|
||||
Vp2Sg Fem => appPattern root C1aC2aC3t ;
|
||||
Vp2Pl Masc => appPattern root C1aC2aC3tem ;
|
||||
Vp2Pl Fem => appPattern root C1aC2aC3ten ;
|
||||
|
||||
Vp3Sg Masc => appPattern root C1aC2aC3 ;
|
||||
Vp3Sg Fem => appPattern root C1aC2aC3a ;
|
||||
Vp3Pl Masc => appPattern root C1aC2aC3u ;
|
||||
Vp3Pl Fem => appPattern root C1aC2aC3u
|
||||
} ;
|
||||
|
||||
Part => table {
|
||||
Vp1Sg => appPattern root C1oC2eC3 ;
|
||||
Vp1Pl => appPattern root C1oC2C3im ;
|
||||
|
||||
Vp2Sg Masc => appPattern root C1oC2eC3 ;
|
||||
Vp2Sg Fem => appPattern root C1oC2eC3et ;
|
||||
Vp2Pl Masc => appPattern root C1oC2C3im ;
|
||||
Vp2Pl Fem => appPattern root C1oC2C3ot ;
|
||||
|
||||
Vp3Sg Masc => appPattern root C1oC2eC3;
|
||||
Vp3Sg Fem => appPattern root C1oC2eC3et ;
|
||||
Vp3Pl Masc => appPattern root C1oC2C3im ;
|
||||
Vp3Pl Fem => appPattern root C1oC2C3ot
|
||||
} ;
|
||||
|
||||
Imperf => table {
|
||||
Vp1Sg => appPattern root eC1C2oC3 ;
|
||||
Vp1Pl => appPattern root niC1C2oC3 ;
|
||||
|
||||
Vp2Sg Masc => appPattern root tiC1C2oC3 ;
|
||||
Vp2Sg Fem => appPattern root tiC1C2eC3i ;
|
||||
Vp2Pl Masc => appPattern root tiC1C2eC3o ;
|
||||
Vp2Pl Fem => appPattern root tiC1C2eC3o ;
|
||||
|
||||
Vp3Sg Masc => appPattern root yiC1C2oC3 ;
|
||||
Vp3Sg Fem => appPattern root tiC1C2oC3 ;
|
||||
Vp3Pl Masc => appPattern root yiC1C2eC3u ;
|
||||
Vp3Pl Fem => appPattern root yiC1C2eC3u
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
mkVHifhil : Str -> Verb = \v ->
|
||||
let root = getRoot v
|
||||
in {s = table {
|
||||
Perf => table {
|
||||
Vp1Sg => appPattern root hiC1C2aC3ti ;
|
||||
Vp1Pl => appPattern root hiC1C2aC3nu ;
|
||||
|
||||
Vp2Sg Masc => appPattern root hiC1C2aC3ta ;
|
||||
Vp2Sg Fem => appPattern root hiC1C2aC3t ;
|
||||
Vp2Pl Masc => appPattern root hiC1C2aC3tem ;
|
||||
Vp2Pl Fem => appPattern root hiC1C2aC3ten ;
|
||||
|
||||
Vp3Sg Masc => appPattern root hiC1C2iC3 ;
|
||||
Vp3Sg Fem => appPattern root hiC1C2iC3a ;
|
||||
Vp3Pl Masc => appPattern root hiC1C2iC3u ;
|
||||
Vp3Pl Fem => appPattern root hiC1C2iC3u
|
||||
} ;
|
||||
|
||||
Part => table {
|
||||
Vp1Sg => appPattern root C1oC2eC3 ;
|
||||
Vp1Pl => appPattern root C1oC2C3im ;
|
||||
|
||||
Vp2Sg Masc => appPattern root C1oC2eC3 ;
|
||||
Vp2Sg Fem => appPattern root C1oC2eC3et ;
|
||||
Vp2Pl Masc => appPattern root C1oC2C3im ;
|
||||
Vp2Pl Fem => appPattern root C1oC2C3ot ;
|
||||
|
||||
Vp3Sg Masc => appPattern root C1oC2eC3;
|
||||
Vp3Sg Fem => appPattern root C1oC2eC3et ;
|
||||
Vp3Pl Masc => appPattern root C1oC2C3im ;
|
||||
Vp3Pl Fem => appPattern root C1oC2C3ot
|
||||
};
|
||||
Imperf => table {
|
||||
Vp1Sg => appPattern root eC1C2oC3 ;
|
||||
Vp1Pl => appPattern root niC1C2oC3 ;
|
||||
|
||||
Vp2Sg Masc => appPattern root tiC1C2oC3 ;
|
||||
Vp2Sg Fem => appPattern root tiC1C2eC3i ;
|
||||
Vp2Pl Masc => appPattern root tiC1C2eC3o ;
|
||||
Vp2Pl Fem => appPattern root tiC1C2eC3o ;
|
||||
|
||||
Vp3Sg Masc => appPattern root yiC1C2oC3 ;
|
||||
Vp3Sg Fem => appPattern root tiC1C2oC3 ;
|
||||
Vp3Pl Masc => appPattern root yiC1C2eC3u ;
|
||||
Vp3Pl Fem => appPattern root yiC1C2eC3u
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
mkVHifhil2 : Str -> Verb = \v ->
|
||||
let root = getRoot v
|
||||
in {s = table {
|
||||
Perf => table {
|
||||
Vp1Sg => appPattern2 root hiC1C2aC3ti ;
|
||||
Vp1Pl => appPattern2 root hiC1C2aC3nu ;
|
||||
|
||||
Vp2Sg Masc => appPattern2 root hiC1C2aC3ta ;
|
||||
Vp2Sg Fem => appPattern2 root hiC1C2aC3t ;
|
||||
Vp2Pl Masc => appPattern2 root hiC1C2aC3tem ;
|
||||
Vp2Pl Fem => appPattern2 root hiC1C2aC3ten ;
|
||||
|
||||
Vp3Sg Masc => appPattern2 root hiC1C2iC3 ;
|
||||
Vp3Sg Fem => appPattern2 root hiC1C2iC3a ;
|
||||
Vp3Pl Masc => appPattern2 root hiC1C2iC3u ;
|
||||
Vp3Pl Fem => appPattern2 root hiC1C2iC3u
|
||||
} ;
|
||||
|
||||
Part => table {
|
||||
Vp1Sg => appPattern2 root C1oC2eC3 ;
|
||||
Vp1Pl => appPattern2 root C1oC2C3im ;
|
||||
|
||||
Vp2Sg Masc => appPattern2 root C1oC2eC3 ;
|
||||
Vp2Sg Fem => appPattern2 root C1oC2eC3et ;
|
||||
Vp2Pl Masc => appPattern2 root C1oC2C3im ;
|
||||
Vp2Pl Fem => appPattern2 root C1oC2C3ot ;
|
||||
|
||||
Vp3Sg Masc => appPattern2 root C1oC2eC3;
|
||||
Vp3Sg Fem => appPattern2 root C1oC2eC3et ;
|
||||
Vp3Pl Masc => appPattern2 root C1oC2C3im ;
|
||||
Vp3Pl Fem => appPattern2 root C1oC2C3ot
|
||||
} ;
|
||||
Imperf => table {
|
||||
Vp1Sg => appPattern2 root eC1C2oC3 ;
|
||||
Vp1Pl => appPattern2 root niC1C2oC3 ;
|
||||
|
||||
Vp2Sg Masc => appPattern2 root tiC1C2oC3 ;
|
||||
Vp2Sg Fem => appPattern2 root tiC1C2eC3i ;
|
||||
Vp2Pl Masc => appPattern2 root tiC1C2eC3o ;
|
||||
Vp2Pl Fem => appPattern2 root tiC1C2eC3o ;
|
||||
|
||||
Vp3Sg Masc => appPattern2 root yiC1C2oC3 ;
|
||||
Vp3Sg Fem => appPattern2 root tiC1C2oC3 ;
|
||||
Vp3Pl Masc => appPattern2 root yiC1C2eC3u ;
|
||||
Vp3Pl Fem => appPattern2 root yiC1C2eC3u
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
mkVHitpael : Str -> Verb = \v ->
|
||||
let root = getRoot v
|
||||
in {s = table {
|
||||
Perf => table {
|
||||
Vp1Sg => appPattern root hitC1C2aC3ti ;
|
||||
Vp1Pl => appPattern root hitC1C2aC3nu ;
|
||||
|
||||
Vp2Sg Masc => appPattern root hitC1C2aC3ta ;
|
||||
Vp2Sg Fem => appPattern root hitC1C2aC3t ;
|
||||
Vp2Pl Masc => appPattern root hitC1C2aC3tem ;
|
||||
Vp2Pl Fem => appPattern root hitC1C2aC3ten ;
|
||||
|
||||
Vp3Sg Masc => appPattern root hitC1C2iC3 ;
|
||||
Vp3Sg Fem => appPattern root hitC1C2iC3a ;
|
||||
Vp3Pl Masc => appPattern root hitC1C2iC3u ;
|
||||
Vp3Pl Fem => appPattern root hitC1C2iC3u
|
||||
} ;
|
||||
|
||||
Part => table {
|
||||
Vp1Sg => appPattern root C1oC2eC3 ;
|
||||
Vp1Pl => appPattern root C1oC2C3im ;
|
||||
|
||||
Vp2Sg Masc => appPattern root C1oC2eC3 ;
|
||||
Vp2Sg Fem => appPattern root C1oC2eC3et ;
|
||||
Vp2Pl Masc => appPattern root C1oC2C3im ;
|
||||
Vp2Pl Fem => appPattern root C1oC2C3ot ;
|
||||
|
||||
Vp3Sg Masc => appPattern root C1oC2eC3;
|
||||
Vp3Sg Fem => appPattern root C1oC2eC3et ;
|
||||
Vp3Pl Masc => appPattern root C1oC2C3im ;
|
||||
Vp3Pl Fem => appPattern root C1oC2C3ot
|
||||
};
|
||||
|
||||
Imperf => table {
|
||||
Vp1Sg => appPattern root tiC1C2oC3 ;
|
||||
Vp1Pl => appPattern root tiC1C2oC3 ;
|
||||
|
||||
Vp2Sg Masc => appPattern root titC1C2C3 ;
|
||||
Vp2Sg Fem => appPattern root titC1C2C3i ;
|
||||
Vp2Pl Masc => appPattern root titC1C2C3o ;
|
||||
Vp2Pl Fem => appPattern root titC1C2C3nah ;
|
||||
|
||||
Vp3Sg Masc => appPattern root yitC1C2C3 ;
|
||||
Vp3Sg Fem => appPattern root titC1C2C3 ;
|
||||
Vp3Pl Masc => appPattern root yitC1C2C3u ;
|
||||
Vp3Pl Fem => appPattern root titC1C2C3nah
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
mkVHufal : Str -> Verb = \v ->
|
||||
let root = getRoot v
|
||||
in {s = table {
|
||||
Perf => table {
|
||||
Vp1Sg => appPattern root hiC1C2aC3ti ;
|
||||
Vp1Pl => appPattern root hiC1C2aC3nu ;
|
||||
|
||||
Vp2Sg Masc => appPattern root hiC1C2aC3ta ;
|
||||
Vp2Sg Fem => appPattern root hiC1C2aC3t ;
|
||||
Vp2Pl Masc => appPattern root hiC1C2aC3tem ;
|
||||
Vp2Pl Fem => appPattern root hiC1C2aC3ten ;
|
||||
|
||||
Vp3Sg Masc => appPattern root hoC1C2C3 ;
|
||||
Vp3Sg Fem => appPattern root hoC1C2C3a ;
|
||||
Vp3Pl Masc => appPattern root hoC1C2C3u ;
|
||||
Vp3Pl Fem => appPattern root hoC1C2C3u
|
||||
} ;
|
||||
|
||||
Part => table {
|
||||
Vp1Sg => appPattern root C1oC2eC3 ;
|
||||
Vp1Pl => appPattern root C1oC2C3im ;
|
||||
|
||||
Vp2Sg Masc => appPattern root C1oC2eC3 ;
|
||||
Vp2Sg Fem => appPattern root C1oC2eC3et ;
|
||||
Vp2Pl Masc => appPattern root C1oC2C3im ;
|
||||
Vp2Pl Fem => appPattern root C1oC2C3ot ;
|
||||
|
||||
Vp3Sg Masc => appPattern root C1oC2eC3;
|
||||
Vp3Sg Fem => appPattern root C1oC2eC3et ;
|
||||
Vp3Pl Masc => appPattern root C1oC2C3im ;
|
||||
Vp3Pl Fem => appPattern root C1oC2C3ot
|
||||
} ;
|
||||
|
||||
Imperf => table {
|
||||
Vp1Sg => appPattern root eC1C2C3 ;
|
||||
Vp1Pl => appPattern root niC1C2C3 ;
|
||||
|
||||
Vp2Sg Masc => appPattern root taC1C2aC3 ;
|
||||
Vp2Sg Fem => appPattern root taC1C2eC3i ;
|
||||
Vp2Pl Masc => appPattern root taC1C2eC3o ;
|
||||
Vp2Pl Fem => appPattern root taC1C2aC3nah ;
|
||||
|
||||
Vp3Sg Masc => appPattern root yaC1C2aC3 ;
|
||||
Vp3Sg Fem => appPattern root taC1C2aC3 ;
|
||||
Vp3Pl Masc => appPattern root yaC1C2aC3u ;
|
||||
Vp3Pl Fem => appPattern root taC1C2aC3nah
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
mkVPual : Str -> Verb = \v ->
|
||||
let root = getRoot v
|
||||
in {s = table {
|
||||
Perf => table {
|
||||
Vp1Sg => appPattern root C1uC2aC3ti ;
|
||||
Vp1Pl => appPattern root C1uC2aC3nu ;
|
||||
|
||||
Vp2Sg Masc => appPattern root C1uC2aC3ti ;
|
||||
Vp2Sg Fem => appPattern root C1uC2aC3t ;
|
||||
Vp2Pl Masc => appPattern root C1uC2aC3tem ;
|
||||
Vp2Pl Fem => appPattern root C1uC2aC3ten ;
|
||||
|
||||
Vp3Sg Masc => appPattern root hoC1C2C3 ;
|
||||
Vp3Sg Fem => appPattern root hoC1C2C3a ;
|
||||
Vp3Pl Masc => appPattern root hoC1C2C3u ;
|
||||
Vp3Pl Fem => appPattern root hoC1C2C3u
|
||||
} ;
|
||||
|
||||
Part => table {
|
||||
Vp1Sg => appPattern root C1oC2eC3 ;
|
||||
Vp1Pl => appPattern root C1oC2C3im ;
|
||||
|
||||
Vp2Sg Masc => appPattern root C1oC2eC3 ;
|
||||
Vp2Sg Fem => appPattern root C1oC2eC3et ;
|
||||
Vp2Pl Masc => appPattern root C1oC2C3im ;
|
||||
Vp2Pl Fem => appPattern root C1oC2C3ot ;
|
||||
|
||||
Vp3Sg Masc => appPattern root C1oC2eC3;
|
||||
Vp3Sg Fem => appPattern root C1oC2eC3et ;
|
||||
Vp3Pl Masc => appPattern root C1oC2C3im ;
|
||||
Vp3Pl Fem => appPattern root C1oC2C3ot
|
||||
};
|
||||
|
||||
Imperf => table {
|
||||
Vp1Sg => appPattern root eC1C2C3 ;
|
||||
Vp1Pl => appPattern root niC1C2C3 ;
|
||||
|
||||
Vp2Sg Masc => appPattern root taC1C2aC3 ;
|
||||
Vp2Sg Fem => appPattern root taC1C2eC3i ;
|
||||
Vp2Pl Masc => appPattern root taC1C2eC3o ;
|
||||
Vp2Pl Fem => appPattern root taC1C2aC3nah ;
|
||||
|
||||
Vp3Sg Masc => appPattern root yaC1C2aC3 ;
|
||||
Vp3Sg Fem => appPattern root taC1C2aC3 ;
|
||||
Vp3Pl Masc => appPattern root yaC1C2aC3u ;
|
||||
Vp3Pl Fem => appPattern root taC1C2aC3nah
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user