forked from GitHub/gf-core
Hebrew RGL files added
This commit is contained in:
10
lib/src/hebrew/AdjectiveHeb.gf
Normal file
10
lib/src/hebrew/AdjectiveHeb.gf
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
concrete AdjectiveHeb of Adjective = CatHeb ** open ResHeb, Prelude in {
|
||||||
|
|
||||||
|
flags coding=utf8 ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
UseA adj = adj ;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
9
lib/src/hebrew/AdverbHeb.gf
Normal file
9
lib/src/hebrew/AdverbHeb.gf
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
concrete AdverbHeb of Adverb = CatHeb ** open ResHeb, Prelude in {
|
||||||
|
|
||||||
|
flags coding=utf8 ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
PrepNP prep np = { s = prep.s ++ (np.s ! Nom).obj} ;
|
||||||
|
|
||||||
|
}
|
||||||
58
lib/src/hebrew/CatHeb.gf
Normal file
58
lib/src/hebrew/CatHeb.gf
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
--# -path=alltenses
|
||||||
|
|
||||||
|
concrete CatHeb of Cat = CommonX - [Utt,Tense,Temp] ** open ResHeb, Prelude, ParamX in {
|
||||||
|
|
||||||
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
|
lincat
|
||||||
|
|
||||||
|
S = {s : Mood => Str} ;
|
||||||
|
Utt = {s : Str} ;
|
||||||
|
Cl = ResHeb.Cl ; -- {s : TenseHeb => Polarity => Str} ;
|
||||||
|
VP = ResHeb.VP ; -- {v : Verb ; obj : Str} ;
|
||||||
|
VPSlash = ResHeb.VP ; -- TODO VPSlash in Res "titel le-johan"
|
||||||
|
Comp = {s : Agr => Str} ;
|
||||||
|
NP = ResHeb.NP ; -- {s : Case => {obj : Str} ; a : Agr ; isDef : Bool ; sp : Species} ;
|
||||||
|
CN = ResHeb.Noun ; -- {s : Number => Species => Str ; g: Gender} ;
|
||||||
|
Det = ResHeb.Det ; -- {s : Gender => Str ; n : Number ; sp : Species; isDef : Bool} ;
|
||||||
|
Pron = {s : Case => {obj : Str} ; a : Agr ; isDef : Bool ; sp : Species} ;
|
||||||
|
Num, Ord = ResHeb.Num ; -- {s : Case => Str; n : Number} ;
|
||||||
|
Card = {s : Str} ; -- {s : CardForm => Str; n : Number} ;
|
||||||
|
Quant = {s : ResHeb.Number => Gender => Str ; sp : Species; isDef : Bool; isSNum : Bool} ;
|
||||||
|
AP = ResHeb.AP ; -- {s : Number => Species => Gender => Str } ;
|
||||||
|
|
||||||
|
N = ResHeb.Noun ; -- {s : Number => Species => Str ; g: Gender } ;
|
||||||
|
A = ResHeb.Adj ; -- {s : Number => Species => Gender => Str} ;
|
||||||
|
V, VV, VS, VQ, VA = ResHeb.Verb ; -- {s : Tense => VPerNumGen => Str } ;
|
||||||
|
V2, V2A = ResHeb.Verb2 ; -- Verb ** {c : Case} ;
|
||||||
|
PN = ResHeb.PN ; -- {s : Case => Str; g : Gender} ;
|
||||||
|
Prep = ResHeb.Prep ;
|
||||||
|
ClSlash = ResHeb.ClSlash ;
|
||||||
|
Temp = {s : Str ; t : TenseHeb ; a : Anteriority} ;
|
||||||
|
Tense = {s : Str ; t : TenseHeb} ;
|
||||||
|
|
||||||
|
A2 = {s : Str} ;
|
||||||
|
Conj = {s : Str} ;
|
||||||
|
Digits = {s : Str} ;
|
||||||
|
IComp = {s : Str} ;
|
||||||
|
IDet = {s : Str} ;
|
||||||
|
IP = {s : Str} ;
|
||||||
|
IQuant = {s : Str} ;
|
||||||
|
Imp = {s : Str} ;
|
||||||
|
N2 = {s : Str} ;
|
||||||
|
N3 = {s : Str} ;
|
||||||
|
Numeral = {s : Str} ;
|
||||||
|
Predet = {s : Str} ;
|
||||||
|
QCl = {s : Str} ;
|
||||||
|
QS = {s : Str} ;
|
||||||
|
RCl = {s : Str} ;
|
||||||
|
RP = {s : Str} ;
|
||||||
|
RS = {s : Str} ;
|
||||||
|
SSlash = {s : Str} ;
|
||||||
|
Subj = {s : Str} ;
|
||||||
|
V2Q = {s : Str} ;
|
||||||
|
V2S = {s : Str} ;
|
||||||
|
V2V = {s : Str} ;
|
||||||
|
V3 = {s : Str} ;
|
||||||
|
|
||||||
|
}
|
||||||
24
lib/src/hebrew/GrammarHeb.gf
Normal file
24
lib/src/hebrew/GrammarHeb.gf
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
--# -path=.:../abstract:../common:prelude
|
||||||
|
|
||||||
|
concrete GrammarHeb of Grammar =
|
||||||
|
NounHeb,
|
||||||
|
VerbHeb,
|
||||||
|
AdjectiveHeb,
|
||||||
|
AdverbHeb,
|
||||||
|
-- NumeralHeb,
|
||||||
|
SentenceHeb,
|
||||||
|
-- QuestionHeb,
|
||||||
|
-- IdiomHeb,
|
||||||
|
-- RelativeHeb,
|
||||||
|
-- ConjunctionHeb,
|
||||||
|
PhraseHeb,
|
||||||
|
-- TextHeb,
|
||||||
|
StructuralHeb,
|
||||||
|
TenseHeb
|
||||||
|
** {
|
||||||
|
flags coding=utf8 ;
|
||||||
|
|
||||||
|
|
||||||
|
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||||
|
|
||||||
|
} ;
|
||||||
12
lib/src/hebrew/LangHeb.gf
Normal file
12
lib/src/hebrew/LangHeb.gf
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
--# -path=alltenses
|
||||||
|
|
||||||
|
concrete LangHeb of Lang =
|
||||||
|
GrammarHeb,
|
||||||
|
LexiconHeb
|
||||||
|
** {
|
||||||
|
flags coding=utf8 ;
|
||||||
|
|
||||||
|
|
||||||
|
flags startcat = Phr ; unlexer = text ; lexer = text ; coding = utf8 ;
|
||||||
|
|
||||||
|
} ;
|
||||||
378
lib/src/hebrew/LexiconHeb.gf
Normal file
378
lib/src/hebrew/LexiconHeb.gf
Normal file
@@ -0,0 +1,378 @@
|
|||||||
|
--# -path=alltenses
|
||||||
|
|
||||||
|
concrete LexiconHeb of Lexicon = CatHeb **
|
||||||
|
open ParadigmsHeb, ResHeb, Prelude in {
|
||||||
|
|
||||||
|
|
||||||
|
flags
|
||||||
|
coding=utf8 ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
--add_V3 ="";
|
||||||
|
airplane_N = mkN "" "" Masc;
|
||||||
|
--alas_Interj ="";
|
||||||
|
--already_Adv = "" ;
|
||||||
|
animal_N = mkN "" "" Masc;
|
||||||
|
--answer_V2S = dirV2 (mkVPaal "") ;
|
||||||
|
apartment_N = mkN "" "" Masc;
|
||||||
|
apple_N = mkN "" "" Masc;
|
||||||
|
art_N = mkN "" "" Masc;
|
||||||
|
ashes_N = mkN "" "" Masc;
|
||||||
|
--ask_V2Q = "" ;
|
||||||
|
baby_N = mkN "" "" Masc;
|
||||||
|
back_N = mkN "" "" Masc;
|
||||||
|
bad_A = regA "rO" ;
|
||||||
|
bank_N = mkN "" "" Masc;
|
||||||
|
bark_N = mkN "" "" Masc;
|
||||||
|
beautiful_A = regA "yph" ;
|
||||||
|
--become_VA ="";
|
||||||
|
beer_N = mkN "" "" Masc;
|
||||||
|
--beg_V2V = dirV2 (mkVPaal "") ;
|
||||||
|
belly_N = mkN "" "" Masc;
|
||||||
|
big_A = regA "gdwl";
|
||||||
|
bike_N = mkN "" "" Masc;
|
||||||
|
bird_N = mkN "" "" Masc;
|
||||||
|
--bite_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
black_A = regA "sHwr" ;
|
||||||
|
blood_N = mkN "" "" Masc;
|
||||||
|
--blow_V = mkVPaal "" ;
|
||||||
|
blue_A = regA "Hkwl" ;
|
||||||
|
boat_N = mkN "" "" Masc;
|
||||||
|
bone_N = mkN "" "" Masc;
|
||||||
|
book_N = mkN "" "" Masc;
|
||||||
|
boot_N = mkN "" "" Masc;
|
||||||
|
boss_N = mkN "" "" Masc;
|
||||||
|
boy_N = mkN "" "" Masc;
|
||||||
|
bread_N = mkN "" "" Masc;
|
||||||
|
--break_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
breast_N = mkN "" "" Masc;
|
||||||
|
--breathe_V = mkVPaal "" ;
|
||||||
|
--broad_A = "" ;
|
||||||
|
brown_A = regA "Hwm" ;
|
||||||
|
--burn_V = mkVPaal "" ;
|
||||||
|
butter_N = mkN "" "" Masc;
|
||||||
|
--buy_V2 = dirV2 (mkVPaal "qnh") ;
|
||||||
|
camera_N = mkN "" "" Masc;
|
||||||
|
cap_N = mkN "" "" Masc;
|
||||||
|
car_N = mkN "" "" Masc;
|
||||||
|
carpet_N = mkN "" "" Masc;
|
||||||
|
cat_N = mkN "" "" Masc;
|
||||||
|
ceiling_N = mkN "" "" Masc;
|
||||||
|
cheese_N = mkN "" "" Masc;
|
||||||
|
child_N = mkN "" "" Masc;
|
||||||
|
church_N = mkN "" "" Masc;
|
||||||
|
city_N = mkN "" "" Masc;
|
||||||
|
clean_A = regA "nqy" ;
|
||||||
|
clever_A = regA "Hkm" ;
|
||||||
|
close_V2 = dirV2 (mkVPaal "Sgr") ;
|
||||||
|
cloud_N = mkN "" "" Masc;
|
||||||
|
coat_N = mkN "" "" Masc;
|
||||||
|
cold_A = regA "qr" ;
|
||||||
|
--come_V = mkVPaal "bA" ;
|
||||||
|
computer_N = mkN "" "" Masc;
|
||||||
|
--correct_A = "" ;
|
||||||
|
--count_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
country_N = mkN "" "" Masc;
|
||||||
|
cousin_N = mkN "" "" Masc;
|
||||||
|
cow_N = mkN "" "" Masc;
|
||||||
|
--cut_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
day_N = mkN "" "" Masc;
|
||||||
|
--die_V = mkVPaal "" ;
|
||||||
|
dig_V = mkVPaal "Hpr" ;
|
||||||
|
--dirty_A = "" ;
|
||||||
|
--distance_N3 = mkN "" "" Masc;
|
||||||
|
do_V2 = dirV2 (mkVPaal "Osh") ;
|
||||||
|
doctor_N = mkN "" "" Masc;
|
||||||
|
dog_N = mkN "" "" Masc;
|
||||||
|
door_N = mkN "" "" Masc;
|
||||||
|
drink_V2 = dirV2 (mkVPaal "sth") ;
|
||||||
|
dry_A = regA "ybs" ;
|
||||||
|
--dull_A = "" ;
|
||||||
|
dust_N = mkN "" "" Masc;
|
||||||
|
ear_N = mkN "" "" Masc;
|
||||||
|
earth_N = mkN "" "" Masc;
|
||||||
|
--easy_A2V = "" ;
|
||||||
|
eat_V2 = dirV2 (mkVPaal "Akl") ;
|
||||||
|
egg_N = mkN "" "" Masc;
|
||||||
|
empty_A = regA "ryq" ;
|
||||||
|
enemy_N = mkN "" "" Masc;
|
||||||
|
eye_N = mkN "" "" Masc;
|
||||||
|
factory_N = mkN "" "" Masc;
|
||||||
|
fall_V = mkVPaal "npl" ;
|
||||||
|
--far_Adv = "rHwq" ;
|
||||||
|
fat_N = mkN "" "" Masc;
|
||||||
|
--father_N2 = mkN "" "" Masc;
|
||||||
|
--fear_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
--fear_VS = mkVPaal "" ;
|
||||||
|
feather_N = mkN "" "" Masc;
|
||||||
|
fight_V2 = dirV2 (mkVPaal "lHm") ; --nipal
|
||||||
|
find_V2 = dirV2 (mkVPaal "mZA") ;
|
||||||
|
fingernail_N = mkN "" "" Masc;
|
||||||
|
fire_N = mkN "" "" Masc;
|
||||||
|
fish_N = mkN "" "" Masc;
|
||||||
|
--float_V = mkVPaal "" ;
|
||||||
|
floor_N = mkN "" "" Masc;
|
||||||
|
flow_V = mkVPaal "prH" ;
|
||||||
|
flower_N = mkN "" "" Masc;
|
||||||
|
--fly_V = mkVPaal "" ;
|
||||||
|
fog_N = mkN "" "" Masc;
|
||||||
|
foot_N = mkN "" "" Masc;
|
||||||
|
forest_N = mkN "" "" Masc;
|
||||||
|
forget_V2 = dirV2 (mkVPaal "skH") ;
|
||||||
|
freeze_V = mkVPaal "qpA" ;
|
||||||
|
fridge_N = mkN "" "" Masc;
|
||||||
|
friend_N = mkN "" "" Masc;
|
||||||
|
fruit_N = mkN "" "" Masc;
|
||||||
|
full_A = regA "mlA" ;
|
||||||
|
--fun_AV = "" ;
|
||||||
|
garden_N = mkN "" "" Masc;
|
||||||
|
girl_N = mkN "" "" Masc;
|
||||||
|
--give_V3 = "" ;
|
||||||
|
glove_N = mkN "" "" Masc;
|
||||||
|
go_V = mkVPaal "hlk" ;
|
||||||
|
gold_N = mkN "" "" Masc;
|
||||||
|
good_A = regA "Twb" ;
|
||||||
|
grammar_N = mkN "" "" Masc;
|
||||||
|
grass_N = mkN "" "" Masc;
|
||||||
|
guts_N = mkN "" "" Masc;
|
||||||
|
hair_N = mkN "" "" Masc;
|
||||||
|
hand_N = mkN "" "" Masc;
|
||||||
|
harbour_N = mkN "" "" Masc;
|
||||||
|
hat_N = mkN "" "" Masc;
|
||||||
|
--hate_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
head_N = mkN "" "" Masc;
|
||||||
|
hear_V2 = dirV2 (mkVPaal "smO") ;
|
||||||
|
heart_N = mkN "" "" Masc;
|
||||||
|
heavy_A = regA "kbd" ;
|
||||||
|
hill_N = mkN "" "" Masc;
|
||||||
|
hit_V2 = dirV2 (mkVPaal "pgO") ;
|
||||||
|
hold_V2 = dirV2 (mkVPaal "tpS") ;
|
||||||
|
--hope_VS = mkVPaal "" ;
|
||||||
|
horn_N = mkN "" "" Masc;
|
||||||
|
horse_N = mkN "" "" Masc;
|
||||||
|
hot_A = regA "Hm" ;
|
||||||
|
house_N = mkN "byt" "btyM" Masc;
|
||||||
|
--hunt_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
husband_N = mkN "" "" Masc;
|
||||||
|
ice_N = mkN "" "" Masc;
|
||||||
|
important_A = regA "Hswb" ;
|
||||||
|
industry_N = mkN "" "" Masc;
|
||||||
|
iron_N = mkN "" "" Masc;
|
||||||
|
john_PN = mkPN "gwN" Masc;
|
||||||
|
jump_V = mkVPaal "qpZ" ;
|
||||||
|
kill_V2 = dirV2 (mkVPaal "hrg") ;
|
||||||
|
king_N = mkN "" "" Masc;
|
||||||
|
knee_N = mkN "" "" Masc;
|
||||||
|
know_V2 = dirV2 (mkVPaal "ydO") ;
|
||||||
|
--know_VQ = mkVPaal "" ;
|
||||||
|
--know_VS = mkVPaal "" ;
|
||||||
|
lake_N = mkN "" "" Masc;
|
||||||
|
lamp_N = mkN "" "" Masc;
|
||||||
|
language_N = mkN "" "" Masc;
|
||||||
|
laugh_V = mkVPaal "ZHq" ;
|
||||||
|
leaf_N = mkN "" "" Masc;
|
||||||
|
learn_V2 = dirV2 (mkVPaal "lmd") ;
|
||||||
|
leather_N = mkN "Owr" Masc; -- no pl
|
||||||
|
leave_V2 = dirV2 (mkVPaal "Ozb") ;
|
||||||
|
--left_Ord = "";
|
||||||
|
lie_V = mkVPaal "sqr" ; -- pial (paal kal)
|
||||||
|
like_V2 = dirV2 (mkVPaal "Ahb") ;
|
||||||
|
listen_V2 = dirV2 (mkVPaal "smO") ; --
|
||||||
|
--live_V = mkVPaal "Hy" ;
|
||||||
|
liver_N = mkN "" "" Masc;
|
||||||
|
long_A = regA "Arwk" ;
|
||||||
|
lose_V2 = dirV2 (mkVPaal "Abd") ;
|
||||||
|
louse_N = mkN "" "" Masc;
|
||||||
|
love_N = mkN "" "" Masc;
|
||||||
|
love_V2 = dirV2 (mkVPaal "Ahb") ;
|
||||||
|
man_N = mkN "Ays" "AnsyM" Masc;
|
||||||
|
--married_A2 = "" ;
|
||||||
|
meat_N = mkN "" "" Masc;
|
||||||
|
milk_N = mkN "" "" Masc;
|
||||||
|
moon_N = mkN "" "" Masc;
|
||||||
|
--mother_N2 = mkN "" "" Masc;
|
||||||
|
mountain_N = mkN "" "" Masc;
|
||||||
|
mouth_N = mkN "" "" Masc;
|
||||||
|
music_N = mkN "" "" Masc;
|
||||||
|
name_N = mkN "sm" "smwt" Masc;
|
||||||
|
narrow_A = regA "Zr" ;
|
||||||
|
near_A = regA "qrwb" ;
|
||||||
|
neck_N = mkN "" "" Masc;
|
||||||
|
new_A = regA "Hds" ;
|
||||||
|
newspaper_N = mkN "Otwn" "Otwnym" Masc;
|
||||||
|
night_N = mkN "" "" Masc;
|
||||||
|
nose_N = mkN "" "" Masc;
|
||||||
|
now_Adv ={s= ""} ;
|
||||||
|
number_N = mkN "" "" Masc;
|
||||||
|
oil_N = mkN "smN" Masc; -- Mass noun
|
||||||
|
old_A = regA "ysn" ;
|
||||||
|
open_V2 = dirV2 (mkVPaal "ptH") ;
|
||||||
|
paint_V2A = dirV2 (mkVPaal "Zyr") ;
|
||||||
|
paper_N = mkN "" "" Masc;
|
||||||
|
paris_PN = mkPN "pryz" Fem;
|
||||||
|
peace_N = mkN "" "" Masc;
|
||||||
|
pen_N = mkN "" "" Masc;
|
||||||
|
person_N = mkN "" "" Masc;
|
||||||
|
planet_N = mkN "" "" Masc;
|
||||||
|
plastic_N = mkN "" "" Masc;
|
||||||
|
--play_V = mkVPaal "" ;
|
||||||
|
--play_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
policeman_N = mkN "" "" Masc;
|
||||||
|
priest_N = mkN "" "" Masc;
|
||||||
|
--probable_AS = "" ;
|
||||||
|
--pull_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
--push_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
--put_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
queen_N = mkN "" "" Masc;
|
||||||
|
question_N = mkN "" "" Masc;
|
||||||
|
radio_N = mkN "" "" Masc;
|
||||||
|
rain_N = mkN "" "" Masc;
|
||||||
|
--rain_V0 = mkVPaal "" ;
|
||||||
|
read_V2 = dirV2 (mkVPaal "qrA") ;
|
||||||
|
ready_A = regA "mwkn" ;
|
||||||
|
reason_N = mkN "" "" Masc;
|
||||||
|
--red_A = "" ;
|
||||||
|
religion_N = mkN "" "" Masc;
|
||||||
|
restaurant_N = mkN "" "" Masc;
|
||||||
|
--right_Ord = "" ;
|
||||||
|
river_N = mkN "" "" Masc;
|
||||||
|
road_N = mkN "" "" Masc;
|
||||||
|
rock_N = mkN "" "" Masc;
|
||||||
|
roof_N = mkN "" "" Masc;
|
||||||
|
root_N = mkN "" "" Masc;
|
||||||
|
rope_N = mkN "" "" Masc;
|
||||||
|
--rotten_A = "" ;
|
||||||
|
--round_A = "" ;
|
||||||
|
--rub_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
rubber_N = mkN "" "" Masc;
|
||||||
|
rule_N = mkN "" "" Masc;
|
||||||
|
--run_V = mkVPaal "" ;
|
||||||
|
salt_N = mkN "" "" Masc;
|
||||||
|
sand_N = mkN "" "" Masc;
|
||||||
|
--say_VS = mkVPaal "" ;
|
||||||
|
school_N = mkN "" "" Masc;
|
||||||
|
science_N = mkN "" "" Masc;
|
||||||
|
--scratch_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
sea_N = mkN "" "" Masc;
|
||||||
|
see_V2 = dirV2 (mkVPaal "rAh") ;
|
||||||
|
seed_N = mkN "" "" Masc;
|
||||||
|
--seek_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
sell_V3 = {s = "" };
|
||||||
|
send_V3 = {s = ""} ;
|
||||||
|
--sew_V = mkVPaal "" ;
|
||||||
|
sharp_A = regA "Hd" ;
|
||||||
|
sheep_N = mkN "" "" Masc;
|
||||||
|
ship_N = mkN "" "" Masc;
|
||||||
|
shirt_N = mkN "" "" Masc;
|
||||||
|
shoe_N = mkN "" "" Masc;
|
||||||
|
shop_N = mkN "" "" Masc;
|
||||||
|
short_A = regA "qZr" ;
|
||||||
|
silver_N = mkN "" "" Masc;
|
||||||
|
--sing_V = mkVPaal "" ;
|
||||||
|
sister_N = mkN "" "" Masc;
|
||||||
|
sit_V = mkVPaal "ysb" ;
|
||||||
|
skin_N = mkN "" "" Masc;
|
||||||
|
sky_N = mkN "" "" Masc;
|
||||||
|
sleep_V = mkVPaal "ysn" ; --pual
|
||||||
|
small_A = regA "qTN";
|
||||||
|
--smell_V = mkVPaal "" ;
|
||||||
|
smoke_N = mkN "" "" Masc;
|
||||||
|
smooth_A = regA "Hlq" ;
|
||||||
|
snake_N = mkN "" "" Masc;
|
||||||
|
snow_N = mkN "" "" Masc;
|
||||||
|
sock_N = mkN "" "" Masc;
|
||||||
|
song_N = mkN "" "" Masc;
|
||||||
|
speak_V2 = dirV2 (mkVPaal "dbr") ;
|
||||||
|
--spit_V = mkVPaal "" ;
|
||||||
|
--split_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
squeeze_V2 = dirV2 (mkVPaal "lHZ") ;
|
||||||
|
stab_V2 = dirV2 (mkVPaal "dqr") ;
|
||||||
|
stand_V = mkVPaal "Omd" ;
|
||||||
|
star_N = mkN "" "" Masc;
|
||||||
|
steel_N = mkN "" "" Masc;
|
||||||
|
stick_N = mkN "" "" Masc;
|
||||||
|
stone_N = mkN "" "" Masc;
|
||||||
|
--stop_V = mkVPaal "" ;
|
||||||
|
stove_N = mkN "" "" Masc;
|
||||||
|
straight_A = regA "ysr" ;
|
||||||
|
student_N = mkN "" "" Masc;
|
||||||
|
stupid_A = regA2 "" ;
|
||||||
|
--suck_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
sun_N = mkN "" "" Masc;
|
||||||
|
--swell_V = mkVPaal "" ;
|
||||||
|
swim_V = mkVPaal "sHh" ;
|
||||||
|
--switch8off_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
--switch8on_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
table_N = mkN "" "" Masc;
|
||||||
|
tail_N = mkN "" "" Masc;
|
||||||
|
--talk_V3 = "";
|
||||||
|
teach_V2 = dirV2 (mkVPaal "lmd") ; --piel
|
||||||
|
teacher_N = mkN "" "" Masc;
|
||||||
|
television_N = mkN "" "" Masc;
|
||||||
|
thick_A = regA2 "" ;
|
||||||
|
thin_A = regA2 "" ;
|
||||||
|
think_V = mkVPaal "Hsb" ; -- pual
|
||||||
|
throw_V2 = dirV2 (mkVPaal "zrq") ;
|
||||||
|
tie_V2 = dirV2 (mkVPaal "hdq") ; --hifhil
|
||||||
|
--today_Adv = "" ;
|
||||||
|
tongue_N = mkN "" "" Masc;
|
||||||
|
tooth_N = mkN "" "" Masc;
|
||||||
|
train_N = mkN "" "" Masc;
|
||||||
|
travel_V = mkVPaal "nSO" ;
|
||||||
|
tree_N = mkN "" "" Masc;
|
||||||
|
turn_V = mkVPaal "pnh" ; -- hiphil
|
||||||
|
ugly_A = regA2 "" ;
|
||||||
|
uncertain_A = regA2 "" ;
|
||||||
|
--understand_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
university_N = mkN "" "" Masc;
|
||||||
|
village_N = mkN "" "" Masc;
|
||||||
|
vomit_V = mkVPaal "plT" ;
|
||||||
|
--wait_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
war_N = mkN "" "" Masc;
|
||||||
|
walk_V = mkVPaal "ZOd" ;
|
||||||
|
warm_A = regA2 "" ;
|
||||||
|
wash_V2 = dirV2 (mkVPaal "rHZ") ;
|
||||||
|
watch_V2 = dirV2 (mkVPaal "smr") ;
|
||||||
|
water_N = mkN "" "" Masc;
|
||||||
|
wet_A = regA2 "" ;
|
||||||
|
white_A = regA2 "lbN" ;
|
||||||
|
wide_A = regA2 "" ;
|
||||||
|
wife_N = mkN "" "" Masc;
|
||||||
|
--win_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
woman_N = mkN "Aysh" "nsyM" Fem ;
|
||||||
|
wind_N = mkN "" "" Masc;
|
||||||
|
window_N = mkN "" "" Masc;
|
||||||
|
wine_N = mkN "" "" Masc;
|
||||||
|
wing_N = mkN "" "" Masc;
|
||||||
|
--wipe_V2 = dirV2 (mkVPaal "") ;
|
||||||
|
--wonder_VQ = mkVPaal "" ;
|
||||||
|
wood_N = mkN "OZ" "OZym" Masc;
|
||||||
|
worm_N = mkN "" "" Masc;
|
||||||
|
year_N = mkN "" "" Masc;
|
||||||
|
write_V2 = dirV2 (mkVPaal "ktb") ;
|
||||||
|
yellow_A = regA2 "" ;
|
||||||
|
young_A = regA2 "";
|
||||||
|
|
||||||
|
|
||||||
|
--man_N = mkN "Ays" "AnsyM" Masc;
|
||||||
|
--woman_N = mkN "Aysh" "nsyM" Fem ;
|
||||||
|
--house_N = mkN "byt" "btyM" Masc;
|
||||||
|
--leg_N = mkN "rgl" "rglyyM" "rglyyM" Fem;
|
||||||
|
--store_N = mkN "Hnwt" "Hnwywt" Fem;
|
||||||
|
--chair_N = mkN "kSA" "kSAwt" Masc;
|
||||||
|
--eyes_N = mkN "OyN" "OynyyM" "OynyyM" Fem;
|
||||||
|
--spoon_N = mkN "kP" Fem;
|
||||||
|
--big_A = regA "gdwl";
|
||||||
|
--small_A = regA "qTN";
|
||||||
|
--green_A = regA "yrwq";
|
||||||
|
--delicious_A = regA2 "nhdr";
|
||||||
|
--italian_A = regA2 "AyTlqy";
|
||||||
|
--write_V2 = dirV2 (mkVPaal "ktb") ;
|
||||||
|
--finish_V = mkVPaal "gmr" ;
|
||||||
|
--walk_V = mkVPaal "ZOd" ;
|
||||||
|
--arrive_V = mkVHifhil2 "ngO" ;
|
||||||
|
--express_V = mkVHifhil2 "nbO" ;
|
||||||
|
--love_V2 = dirV2 (mkVPaal "Ahb") ;
|
||||||
|
--please_V2 = dirV2 (mkVPaal "Spq") ;
|
||||||
|
}
|
||||||
5
lib/src/hebrew/MorphoHeb.gf
Normal file
5
lib/src/hebrew/MorphoHeb.gf
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
--# -path=.:../common:../../prelude
|
||||||
|
|
||||||
|
resource MorphoHeb = open Prelude, Predef in {
|
||||||
|
|
||||||
|
}
|
||||||
58
lib/src/hebrew/NounHeb.gf
Normal file
58
lib/src/hebrew/NounHeb.gf
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
concrete NounHeb of Noun = CatHeb ** open ResHeb, Prelude in {
|
||||||
|
|
||||||
|
flags optimize=all_subs ; coding=utf8 ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
DetCN det cn = {
|
||||||
|
s = \\c => {obj = cn.s ! det.n ! det.sp ++ det.s ! cn.g } ;
|
||||||
|
isDef = det.isDef ;
|
||||||
|
sp = det.sp ;
|
||||||
|
a = Ag cn.g det.n Per3
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdjCN ap cn =
|
||||||
|
let
|
||||||
|
g = cn.g
|
||||||
|
in {
|
||||||
|
s = \\sp => table {n => cn.s ! sp ! n ++ ap.s ! sp ! n ! g} ;
|
||||||
|
g = g
|
||||||
|
} ;
|
||||||
|
|
||||||
|
UseN n = n ;
|
||||||
|
|
||||||
|
DefArt = {
|
||||||
|
s = \\_,_ => "" ;
|
||||||
|
n = Sg ;
|
||||||
|
sp = Def ;
|
||||||
|
isSNum, isDef = True
|
||||||
|
} ;
|
||||||
|
|
||||||
|
IndefArt = {
|
||||||
|
s = \\_,_ => "" ;
|
||||||
|
n = Sg ;
|
||||||
|
sp = Indef ;
|
||||||
|
isSNum, isDef = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
DetQuant quant num = {
|
||||||
|
s = \\g => quant.s ! num.n ! g ++ num.s ! Nom ; --- fix case
|
||||||
|
n = num.n;
|
||||||
|
sp = Def ;
|
||||||
|
isDef = True ;
|
||||||
|
isSNum = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
NumSg = {s = \\_ => []; n = Sg} ;
|
||||||
|
NumPl = {s = \\_ => []; n = Pl} ;
|
||||||
|
|
||||||
|
UsePN pn = {
|
||||||
|
s = \\c => {obj = pn.s ! Nom} ; --TODO define a function for case
|
||||||
|
a = Ag pn.g Sg Per3;
|
||||||
|
sp = Def ;
|
||||||
|
isDef = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
UsePron p = p ;
|
||||||
|
|
||||||
|
}
|
||||||
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
88
lib/src/hebrew/PatternsHeb.gf
Normal file
88
lib/src/hebrew/PatternsHeb.gf
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
resource PatternsHeb = {
|
||||||
|
|
||||||
|
flags coding=utf8 ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
|
||||||
|
C1aC2aC3ti = {C1 ="" ; C1C2=""; C2C3 =""; C3="ty"};
|
||||||
|
C1aC2aC3nu = { C1 = "" ; C1C2=""; C2C3 =""; C3="nw"};
|
||||||
|
C1aC2aC3ta = { C1 = "" ; C1C2=""; C2C3 =""; C3="ta"};
|
||||||
|
C1aC2aC3t = { C1 = "" ; C1C2=""; C2C3 =""; C3="t"};
|
||||||
|
C1aC2aC3tem = { C1 = "" ; C1C2=""; C2C3 =""; C3="teM"};
|
||||||
|
C1aC2aC3ten = { C1 = "" ; C1C2=""; C2C3 =""; C3="teN"};
|
||||||
|
C1aC2aC3 = { C1 = "" ; C1C2=""; C2C3 =""; C3=""};
|
||||||
|
C1aC2aC3a = { C1 = "" ; C1C2=""; C2C3 =""; C3="h"};
|
||||||
|
C1aC2aC3u = { C1 = "" ; C1C2=""; C2C3 =""; C3="w"};
|
||||||
|
|
||||||
|
C1oC2eC3 = { C1 = "" ; C1C2="w"; C2C3 =""; C3=""};
|
||||||
|
C1oC2eC3et = { C1 = "" ; C1C2="w"; C2C3 =""; C3="t"};
|
||||||
|
C1oC2C3im = { C1 = "" ; C1C2="w"; C2C3 =""; C3="yM"};
|
||||||
|
C1oC2C3ot = { C1 = "" ; C1C2="w"; C2C3 =""; C3="wt"};
|
||||||
|
|
||||||
|
eC1C2oC3 = { C1 = "y" ; C1C2=""; C2C3 =""; C3=""};
|
||||||
|
niC1C2oC3 = { C1 = "n" ; C1C2=""; C2C3 =""; C3=""};
|
||||||
|
tiC1C2oC3 = { C1 = "t" ; C1C2=""; C2C3 =""; C3=""};
|
||||||
|
tiC1C2eC3i = { C1 = "t" ; C1C2=""; C2C3 ="e"; C3="y"};
|
||||||
|
tiC1C2eC3o = { C1 = "t" ; C1C2=""; C2C3 ="e"; C3="w"};
|
||||||
|
|
||||||
|
yiC1C2oC3 = { C1 = "y" ; C1C2=""; C2C3 =""; C3=""};
|
||||||
|
yiC1C2eC3u = { C1 = "y" ; C1C2=""; C2C3 =""; C3="w"};
|
||||||
|
|
||||||
|
hiC1C2aC3ti = {C1 ="h" ; C1C2=""; C2C3 =""; C3="ty"};
|
||||||
|
hiC1C2aC3nu = { C1 = "h" ; C1C2=""; C2C3 =""; C3="nw"};
|
||||||
|
hiC1C2aC3ta = { C1 = "h" ; C1C2=""; C2C3 =""; C3="ta"};
|
||||||
|
hiC1C2aC3t = { C1 = "h" ; C1C2=""; C2C3 =""; C3="t"};
|
||||||
|
hiC1C2aC3tem= { C1 = "h" ; C1C2=""; C2C3 =""; C3="teM"};
|
||||||
|
hiC1C2aC3ten = { C1 = "h" ; C1C2=""; C2C3 =""; C3="teN"};
|
||||||
|
hiC1C2iC3= { C1 = "h" ; C1C2=""; C2C3 ="y"; C3=""};
|
||||||
|
hiC1C2iC3a= { C1 = "h" ; C1C2=""; C2C3 ="y"; C3="h"};
|
||||||
|
hiC1C2iC3u = { C1 = "h" ; C1C2=""; C2C3 ="y"; C3="w"};
|
||||||
|
|
||||||
|
hitC1C2aC3ti = {C1 ="ht" ; C1C2=""; C2C3 =""; C3="ty"};
|
||||||
|
hitC1C2aC3nu = { C1 = "ht" ; C1C2=""; C2C3 =""; C3="nw"};
|
||||||
|
hitC1C2aC3ta = { C1 = "ht" ; C1C2=""; C2C3 =""; C3="ta"};
|
||||||
|
hitC1C2aC3t = { C1 = "ht" ; C1C2=""; C2C3 =""; C3="t"};
|
||||||
|
hitC1C2aC3tem= { C1 = "ht" ; C1C2=""; C2C3 =""; C3="teM"};
|
||||||
|
hitC1C2aC3ten = { C1 = "ht" ; C1C2=""; C2C3 =""; C3="teN"};
|
||||||
|
hitC1C2iC3= { C1 = "ht" ; C1C2=""; C2C3 ="y"; C3=""};
|
||||||
|
hitC1C2iC3a= { C1 = "ht" ; C1C2=""; C2C3 ="y"; C3="h"};
|
||||||
|
hitC1C2iC3u = { C1 = "ht" ; C1C2=""; C2C3 ="y"; C3="w"};
|
||||||
|
|
||||||
|
|
||||||
|
titC1C2C3 = { C1 = "tt" ; C1C2=""; C2C3 =""; C3=""};
|
||||||
|
titC1C2C3i = { C1 = "tt" ; C1C2=""; C2C3 =""; C3="y"};
|
||||||
|
titC1C2C3o = { C1 = "tt" ; C1C2=""; C2C3 =""; C3="w"};
|
||||||
|
titC1C2C3nah = { C1 = "tt" ; C1C2=""; C2C3 =""; C3="nah"};
|
||||||
|
|
||||||
|
yitC1C2C3 = { C1 = "y" ; C1C2=""; C2C3 =""; C3=""};
|
||||||
|
yitC1C2C3u = { C1 = "y" ; C1C2=""; C2C3 =""; C3="w"};
|
||||||
|
|
||||||
|
|
||||||
|
hoC1C2C3= { C1 = "ho" ; C1C2=""; C2C3 =""; C3=""};
|
||||||
|
hoC1C2C3a= { C1 = "ho" ; C1C2=""; C2C3 =""; C3="h"};
|
||||||
|
hoC1C2C3u = { C1 = "ho" ; C1C2=""; C2C3 =""; C3="w"};
|
||||||
|
|
||||||
|
|
||||||
|
eC1C2C3 = { C1 = "a" ; C1C2=""; C2C3 =""; C3=""};
|
||||||
|
niC1C2C3 = { C1 = "n" ; C1C2=""; C2C3 =""; C3=""};
|
||||||
|
|
||||||
|
taC1C2aC3 = { C1 = "t" ; C1C2=""; C2C3 =""; C3=""};
|
||||||
|
taC1C2eC3i = { C1 = "t" ; C1C2=""; C2C3 =""; C3="y"};
|
||||||
|
taC1C2eC3o = { C1 = "t" ; C1C2=""; C2C3 =""; C3="w"};
|
||||||
|
taC1C2aC3nah = { C1 = "t" ; C1C2=""; C2C3 =""; C3="nh"};
|
||||||
|
|
||||||
|
yaC1C2aC3 = { C1 = "y" ; C1C2=""; C2C3 =""; C3=""};
|
||||||
|
taC1C2aC3 = { C1 = "t" ; C1C2=""; C2C3 =""; C3=""};
|
||||||
|
yaC1C2aC3u = { C1 = "y" ; C1C2=""; C2C3 =""; C3="w"};
|
||||||
|
taC1C2aC3nah = { C1 = "t" ; C1C2=""; C2C3 =""; C3="nh"};
|
||||||
|
|
||||||
|
|
||||||
|
C1uC2aC3 = { C1 = "" ; C1C2="w"; C2C3 =""; C3=""};
|
||||||
|
C1uC2aC3nu = { C1 = "" ; C1C2="w"; C2C3 =""; C3=""};
|
||||||
|
|
||||||
|
C1uC2aC3ti = { C1 = "ht" ; C1C2="w"; C2C3 =""; C3="ti"};
|
||||||
|
C1uC2aC3t = { C1 = "ht" ; C1C2="w"; C2C3 =""; C3="t"};
|
||||||
|
C1uC2aC3tem= { C1 = "ht" ; C1C2="w"; C2C3 =""; C3="teM"};
|
||||||
|
C1uC2aC3ten = { C1 = "ht" ; C1C2="w"; C2C3 =""; C3="teN"};
|
||||||
|
|
||||||
|
}
|
||||||
14
lib/src/hebrew/PhraseHeb.gf
Normal file
14
lib/src/hebrew/PhraseHeb.gf
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
concrete PhraseHeb of Phrase = CatHeb ** open Prelude, ResHeb in {
|
||||||
|
|
||||||
|
flags coding=utf8 ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||||
|
UttAdv adv = {s = adv.s} ;
|
||||||
|
UttNP np = {s = (np.s ! Nom).obj } ;
|
||||||
|
|
||||||
|
NoPConj = {s = []} ;
|
||||||
|
NoVoc = {s = []} ;
|
||||||
|
|
||||||
|
}
|
||||||
172
lib/src/hebrew/ResHeb.gf
Normal file
172
lib/src/hebrew/ResHeb.gf
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
--# -path=alltenses
|
||||||
|
|
||||||
|
-- (c) 2011 Dana Dannells
|
||||||
|
-- Licensed under LGPL
|
||||||
|
-- Compiled with GF version 3.3
|
||||||
|
|
||||||
|
resource ResHeb = PatternsHeb ** open Prelude, ParamX in {
|
||||||
|
|
||||||
|
flags coding=utf8 ;
|
||||||
|
|
||||||
|
param
|
||||||
|
|
||||||
|
Number = Sg | Pl | Dl ;
|
||||||
|
Gender = Masc | Fem ;
|
||||||
|
Species = Def | Indef ;
|
||||||
|
Case = Nom | Acc | Dat ;
|
||||||
|
Agr = Ag Gender Number Person;
|
||||||
|
Person = Per1 | Per2 | Per3 ;
|
||||||
|
Voice = Active | Passive | Reflexive ;
|
||||||
|
VPerNumGen = Vp1Sg | Vp1Pl | Vp2Sg Gender | Vp2Pl Gender | Vp3Sg Gender | Vp3Pl Gender ;
|
||||||
|
TenseHeb = Perf | Part | Imperf ;
|
||||||
|
NPForm = Verbal | Nominal ;
|
||||||
|
Size = One | Two | ThreeTen | Teen | NonTeen | Hundreds | None ;
|
||||||
|
Mood = Ind | Con ;
|
||||||
|
|
||||||
|
|
||||||
|
oper
|
||||||
|
|
||||||
|
Cl = {s : TenseHeb => Anteriority => Polarity => Str};
|
||||||
|
NP = {s : Case => {obj : Str} ; a : Agr ; isDef : Bool ; sp : Species } ;
|
||||||
|
AP = {s : Number => Species => Gender => Str } ;
|
||||||
|
PN = {s : Case => Str; g : Gender} ;
|
||||||
|
|
||||||
|
ClSlash : Type = {
|
||||||
|
s : TenseHeb => Polarity => Str ;
|
||||||
|
c2 : Prep
|
||||||
|
} ;
|
||||||
|
|
||||||
|
VP : Type = {
|
||||||
|
s : TenseHeb => Polarity =>VPerNumGen => Str;
|
||||||
|
obj : Str;
|
||||||
|
pred : Comp;
|
||||||
|
isPred : Bool; --indicates if there is a predicate (xabar)
|
||||||
|
s2 : Str
|
||||||
|
} ;
|
||||||
|
|
||||||
|
VPSlash = VP ** {c2 : Case} ;
|
||||||
|
|
||||||
|
Prep = {s : Str ; isPre : Bool} ;
|
||||||
|
|
||||||
|
mkClause : Str -> VPerNumGen -> VP -> Cl =
|
||||||
|
\subj,png,vp -> {
|
||||||
|
s = \\t,a,p =>
|
||||||
|
let
|
||||||
|
verb = vp.s ! t ! p ! png ;
|
||||||
|
obj = vp.obj;
|
||||||
|
gn = png2gn png ;
|
||||||
|
pred = vp.pred.s ! gn ! Nom
|
||||||
|
in
|
||||||
|
subj ++ obj ++ pred ++ verb ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
agr2png : Agr -> VPerNumGen = \a ->
|
||||||
|
case a of {
|
||||||
|
Ag g n p => chooseForm g n p
|
||||||
|
} ;
|
||||||
|
|
||||||
|
png2gn : VPerNumGen -> {g : Gender; n : Number} = \png ->
|
||||||
|
case png of {
|
||||||
|
Vp1Sg => {n = Sg ; g =Masc} ;
|
||||||
|
Vp1Pl => {n = Pl ; g =Masc} ;
|
||||||
|
Vp2Sg g => {n = Sg ; g = g} ;
|
||||||
|
Vp2Pl g => {n = Pl ; g = g} ;
|
||||||
|
Vp3Sg g => {n = Sg ; g = g} ;
|
||||||
|
Vp3Pl g => {n = Pl ; g = g}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pronNP : (s,a,d : Str) -> Gender -> Number -> Person -> NP =
|
||||||
|
\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
|
||||||
|
} ;
|
||||||
|
|
||||||
|
agrV : Verb -> TenseHeb -> Agr -> Str = \v,t,a -> case a of {
|
||||||
|
Ag g n p => v.s ! t ! (chooseForm g n p)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
chooseForm : Gender -> Number -> Person -> VPerNumGen = \g,n,p->
|
||||||
|
case <g,n,p> of {
|
||||||
|
<_,Sg,Per1> => Vp1Sg;
|
||||||
|
<_,Pl,Per1> => Vp1Pl;
|
||||||
|
<_,Sg,Per2> => Vp2Sg g ;
|
||||||
|
<_,Pl,Per2> => Vp2Pl g ;
|
||||||
|
<_,Sg,Per3> => Vp3Sg g ;
|
||||||
|
<_,Pl,Per3> => Vp3Pl g ;
|
||||||
|
_ => Vp3Sg g --Masc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
Noun : Type = {s : Number => Species => Str ; g : Gender} ;
|
||||||
|
Adj : Type = {s : Number => Species => Gender => Str} ;
|
||||||
|
Verb : Type = {s : TenseHeb => VPerNumGen => Str } ;
|
||||||
|
Verb2 : Type = Verb ** {c : Case} ;
|
||||||
|
|
||||||
|
Pattern : Type = {C1, C1C2, C2C3, C3 : Str};
|
||||||
|
Root : Type = {C1,C2,C3 : Str}; -- most verb roots consist of three consonants
|
||||||
|
Root4 : Type = Root ** {C4 : Str}; -- for verb roots with four consonants
|
||||||
|
|
||||||
|
AAgr = { g : Gender ; n : Number} ;
|
||||||
|
|
||||||
|
Comp : Type = {
|
||||||
|
s : AAgr => Case => Str
|
||||||
|
} ;
|
||||||
|
|
||||||
|
replaceLastLet : Str -> Str = \c ->
|
||||||
|
case c of {"P" => "p" ; "M" => "m" ; "N" => "n" ; "Z." => "Z" ; "K" => "k"; _ => c} ;
|
||||||
|
|
||||||
|
Num, Ord : Type = {s : Case => Str; n : Number} ;
|
||||||
|
Det : Type = {s : Gender => Str ; n : Number ; sp : Species; isDef : Bool} ;
|
||||||
|
|
||||||
|
defH : Str -> Str = \cn ->
|
||||||
|
case cn of {_ => "h" + cn} ;
|
||||||
|
|
||||||
|
insertObj : NP -> VP -> VP = \np,vp ->
|
||||||
|
let
|
||||||
|
nps = np.s ! Acc
|
||||||
|
in
|
||||||
|
{ s = vp.s;
|
||||||
|
obj = nps.obj;
|
||||||
|
s2 = vp.s2;
|
||||||
|
pred = vp.pred;
|
||||||
|
isPred = vp.isPred
|
||||||
|
} ;
|
||||||
|
|
||||||
|
insertObj2 : Comp -> NP -> VP -> VP = \c,np,vp ->
|
||||||
|
let
|
||||||
|
nps = np.s ! Acc
|
||||||
|
in
|
||||||
|
{ s = vp.s;
|
||||||
|
obj = nps.obj;
|
||||||
|
s2 = vp.s2;
|
||||||
|
pred = vp.pred;
|
||||||
|
isPred = vp.isPred
|
||||||
|
} ;
|
||||||
|
|
||||||
|
predV : Verb -> VP = \v ->
|
||||||
|
{ s = \\t,p,png => v.s ! t ! png ; obj = [] ; s2 = [];
|
||||||
|
pred = { s = \\_,_ => []};
|
||||||
|
isPred = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
appPattern : Root -> Pattern -> Str = \r,p ->
|
||||||
|
p.C1 + r.C1 + p.C1C2 + r.C2 + p.C2C3 + r.C3 + p.C3 ;
|
||||||
|
|
||||||
|
-- remove the first letter
|
||||||
|
appPattern2 : Root -> Pattern -> Str = \r,p ->
|
||||||
|
p.C1 + p.C1C2 + r.C2 + p.C2C3 + r.C3 + p.C3 ;
|
||||||
|
|
||||||
|
getRoot : Str -> Root = \s -> case s of {
|
||||||
|
C1@? + C2@? + C3 => {C1 = C1 ; C2 = C2 ; C3 = C3} ;
|
||||||
|
_ => Predef.error ("cannot get root from" ++ s)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
16
lib/src/hebrew/SentenceHeb.gf
Normal file
16
lib/src/hebrew/SentenceHeb.gf
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
concrete SentenceHeb of Sentence = CatHeb ** open ResHeb, Prelude in {
|
||||||
|
|
||||||
|
flags optimize=all_subs ; coding=utf8 ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
PredVP np vp = mkClause (np.s ! Nom).obj (agr2png np.a) vp ;
|
||||||
|
|
||||||
|
UseCl t p cl = {
|
||||||
|
s = \\_ => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p
|
||||||
|
} ;
|
||||||
|
|
||||||
|
--UseSlash
|
||||||
|
-- SlashVP
|
||||||
|
|
||||||
|
}
|
||||||
53
lib/src/hebrew/StructuralHeb.gf
Normal file
53
lib/src/hebrew/StructuralHeb.gf
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
concrete StructuralHeb of Structural = CatHeb **
|
||||||
|
open MorphoHeb, ResHeb, ParadigmsHeb, Prelude in {
|
||||||
|
|
||||||
|
flags optimize=all ; coding=utf8 ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
this_Quant = {
|
||||||
|
s = table {
|
||||||
|
Sg => table { Masc => "hzh" ; Fem => "hzAt" } ;
|
||||||
|
_ => table {_ => "hAlh" }
|
||||||
|
};
|
||||||
|
|
||||||
|
sp = Def ;
|
||||||
|
isDef = True ;
|
||||||
|
isSNum = True -- TODO isNum
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
that_Quant = {
|
||||||
|
s = table {
|
||||||
|
Sg => table { Masc => "hhwA" ; Fem => "hhyA" } ; -- that
|
||||||
|
_ => table {_ => "hhN" } -- those
|
||||||
|
};
|
||||||
|
|
||||||
|
sp = Def ;
|
||||||
|
isDef = True ;
|
||||||
|
isSNum = True -- TODO isNum
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
he_Pron = mkPron "hwA" "Awtw" "bw" Masc Sg Per3 ;
|
||||||
|
i_Pron = mkPron "Any" "Awty" "ly" Masc Sg Per1 ; --both fem and masc nom, acc, gen
|
||||||
|
it_Pron = mkPron "zh" "" "" Masc Sg Per1 ;
|
||||||
|
she_Pron = mkPron "hyA" "Awth" "lh" Fem Sg Per3 ;
|
||||||
|
they_Pron = mkPron "hM" "hncnw" "lhM" Masc Pl Per1 ;
|
||||||
|
we_Pron = mkPron "AnHnw" "Awtnw" "lnw" Masc Pl Per1; --both fem and masc
|
||||||
|
youSg_Pron = mkPron "At" "" "" Fem Sg Per2 ; -- add Masc in extra
|
||||||
|
youPl_Pron = mkPron "AtN" "" "" Fem Sg Per2 ;
|
||||||
|
youPol_Pron = mkPron "AtN" "" "" Fem Sg Per2 ;
|
||||||
|
|
||||||
|
above_Prep = mkPrep "mOl" False;
|
||||||
|
after_Prep = mkPrep "AHry" False;
|
||||||
|
by8agent_Prep = mkPrep "Ol ydy" False ;
|
||||||
|
--by8means_Prep = mkPrep "" False ;
|
||||||
|
there_Adv = mkAdv "sm" ;
|
||||||
|
there7to_Adv = ss "lsm" ;
|
||||||
|
there7from_Adv = ss "msm" ;
|
||||||
|
somewhere_Adv = ss "";
|
||||||
|
-- now_Adv = ss "Oksyw";
|
||||||
|
|
||||||
|
but_PConj = ss "Abl" ;
|
||||||
|
}
|
||||||
17
lib/src/hebrew/TenseHeb.gf
Normal file
17
lib/src/hebrew/TenseHeb.gf
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
concrete TenseHeb of Tense = CatHeb [Tense,Temp], TenseX [Ant,Pol,AAnter,ASimul,PNeg,PPos] ** open ResHeb, Prelude in {
|
||||||
|
|
||||||
|
flags coding = utf8 ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
TTAnt t a = {
|
||||||
|
s = t.s ++ a.s ;
|
||||||
|
t = t.t ;
|
||||||
|
a = a.a
|
||||||
|
} ;
|
||||||
|
|
||||||
|
TPres, TCond = {s = []} ** {t = Perf} ;
|
||||||
|
TFut = {s = []} ** {t = Imperf } ;
|
||||||
|
TPast = {s = []} ** {t = Part} ;
|
||||||
|
|
||||||
|
}
|
||||||
13
lib/src/hebrew/VerbHeb.gf
Normal file
13
lib/src/hebrew/VerbHeb.gf
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
concrete VerbHeb of Verb = CatHeb ** open Prelude, ResHeb in {
|
||||||
|
|
||||||
|
flags optimize=all_subs ; flags coding=utf8 ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
UseV = predV ;
|
||||||
|
|
||||||
|
ComplSlash vp np = insertObj np vp ;
|
||||||
|
|
||||||
|
SlashV2a v = predV v ** {c2 = v.c2} ;
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user