mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
Maltese RG: sort out noun paradigms and grammar leaks
This commit is contained in:
@@ -8,6 +8,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
||||
|
||||
flags
|
||||
coding=utf8 ;
|
||||
optimize=values ;
|
||||
|
||||
-- Root-and-pattern verbs
|
||||
lin
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
|
||||
concrete IdiomMlt of Idiom = CatMlt ** open Prelude, ResMlt in {
|
||||
|
||||
flags
|
||||
coding=utf8;
|
||||
|
||||
lin
|
||||
-- VP -> Cl ; -- it is hot
|
||||
ImpersCl vp = mkClause "" (agrP3 Sg Masc) vp ;
|
||||
|
||||
@@ -13,353 +13,355 @@ concrete LexiconMlt of Lexicon = CatMlt **
|
||||
optimize=values ;
|
||||
coding=utf8 ;
|
||||
|
||||
lin
|
||||
airplane_N = mkN "ajruplan" "ajruplani" ;
|
||||
animal_N = mkN "annimal" "annimali" ;
|
||||
apartment_N = mkN "appartament" "appartamenti" ;
|
||||
apple_N = mkNColl "tuffieħa" "tuffieħ" "tuffieħat" ;
|
||||
art_N = mkNNoPlural "arti" feminine ;
|
||||
ashes_N = mkN "rmied" "rmiet" ;
|
||||
baby_N = mkN "tarbija" "trabi" ;
|
||||
back_N = possN (mkN "dahar" "dhur") ;
|
||||
bank_N = mkN "bank" "bankijiet" ;
|
||||
bark_N = mkN "qoxra" "qoxriet" ;
|
||||
beer_N = mkN "birra" "birer" ;
|
||||
belly_N = possN (mkN "żaqq" "żquq") ;
|
||||
bike_N = mkN "rota" "roti" ;
|
||||
bird_N = mkN "għasfur" "għasafar" ; -- genderedN
|
||||
blood_N = possN (mkNColl "demm" "dmija") ;
|
||||
boat_N = mkN "dgħajsa" "dgħajjes" ;
|
||||
bone_N = mkNColl "għadma" "għadam" "għadmiet" ;
|
||||
book_N = mkN "ktieb" "kotba" ;
|
||||
boot_N = mkNColl "żarbuna" "żarbun" "żraben" ;
|
||||
boss_N = mkN "mgħallem" "mgħallmin" ;
|
||||
boy_N = mkN "tifel" "tfal" ;
|
||||
bread_N = mkNColl "ħobża" "ħobż" "ħobżiet" ;
|
||||
breast_N = possN (mkN "sider" "sdur") ;
|
||||
brother_N2 = mkN2 (possN (mkN "ħu" "aħwa")) ;
|
||||
butter_N = mkNColl "butir" "butirijiet" ;
|
||||
camera_N = mkN "kamera" "kameras" ;
|
||||
cap_N = mkN "kappell" "kpiepel" ;
|
||||
car_N = mkN "karozza" "karozzi" ;
|
||||
carpet_N = mkN "tapit" "twapet" ;
|
||||
cat_N = mkN "qattus" "qtates" ; -- genderedN
|
||||
ceiling_N = mkN "saqaf" "soqfa" ;
|
||||
chair_N = mkN "siġġu" "siġġijiet" ;
|
||||
cheese_N = mkNColl "ġobna" "ġobon" "ġobniet" ;
|
||||
child_N = mkN "tifel / tifla" "tfal" ; -- genderedN
|
||||
church_N = mkN "knisja" "knejjes" ;
|
||||
city_N = mkN "belt" "bliet" feminine ;
|
||||
cloud_N = mkNColl "sħaba" "sħab" "sħabiet" ;
|
||||
coat_N = mkN "kowt" "kowtijiet" ;
|
||||
computer_N = mkN "kompjuter" "kompjuters" ;
|
||||
country_N = possN (mkN "pajjiż" "pajjiżi") ;
|
||||
cousin_N = mkN "kuġin" "kuġini" ; -- genderedN
|
||||
cow_N = mkNColl "baqra" "baqar" "baqriet" ;
|
||||
day_N = mkN "ġurnata" "ġranet" ;
|
||||
distance_N3 = mkN3 (mkN "distanza") minnP saP ;
|
||||
doctor_N = mkN "tabib" "tobba" ; -- genderedN
|
||||
dog_N = mkN "kelb" "klieb" ;
|
||||
door_N = mkN "bieb" "bibien" ;
|
||||
dust_N = mkNColl "traba" "trab" "trabiet" ;
|
||||
ear_N = possN (mkNDual "widna" "widnejn" "widniet") ;
|
||||
earth_N = mkN "art" "artijiet" feminine ;
|
||||
egg_N = mkNColl "bajda" "bajd" "bajdiet" ;
|
||||
enemy_N = mkN "għadu" "għedewwa" ;
|
||||
eye_N = possN (mkNDual "għajn" "għajnejn" "għajnejn" "għejun" feminine) ;
|
||||
factory_N = mkN "fabbrika" "fabbriki" ;
|
||||
fat_N = mkNColl "xaħma" "xaħam" "xaħmiet" "xaħmijiet" ;
|
||||
father_N2 = mkN2 (possN (mkN "missier" "missirijiet")) ;
|
||||
feather_N = mkNColl "rixa" "rix" "rixiet" ;
|
||||
fingernail_N = possN (mkNDual "difer" "difrejn" "dwiefer") ;
|
||||
fire_N = mkN "nar" "nirien" ;
|
||||
fish_N = mkNColl "ħuta" "ħut" "ħutiet" ;
|
||||
floor_N = mkN "art" "artijiet" feminine ;
|
||||
flower_N = mkN "fjura" "fjuri" ;
|
||||
fog_N = mkNColl "ċpar" ;
|
||||
foot_N = possN (mkNDual "sieq" "saqajn" "saqajn" feminine) ;
|
||||
forest_N = mkN "foresta" "foresti" ;
|
||||
fridge_N = mkN "friġġ" "friġġijiet" ;
|
||||
friend_N = possN (mkN "ħabib" "ħbieb") ; -- genderedN
|
||||
fruit_N = mkNColl "frotta" "frott" "frottiet" "frottijiet" ;
|
||||
garden_N = mkN "ġnien" "ġonna" ;
|
||||
girl_N = mkN "tifla" "tfal" ;
|
||||
glove_N = mkN "ingwanta" "ingwanti" ;
|
||||
gold_N = mkNColl "deheb" "dehbijiet" ;
|
||||
grammar_N = mkN "grammatika" "grammatiki" ;
|
||||
grass_N = mkNColl "ħaxixa" "ħaxix" "ħxejjex" ;
|
||||
guts_N = possN (mkN "musrana" "musraniet" "msaren") ;
|
||||
hair_N = possN (mkNColl "xagħara" "xagħar" "xagħariet" "xgħur") ;
|
||||
hand_N = possN (mkNDual "id" "idejn" "idejn" feminine) ;
|
||||
harbour_N = mkN "port" "portijiet" ;
|
||||
hat_N = mkN "kappell" "kpiepel" ;
|
||||
head_N = possN (mkN "ras" "rjus" feminine) ;
|
||||
heart_N = possN (mkN "qalb" "qlub" feminine) ;
|
||||
hill_N = mkN "għolja" "għoljiet" ;
|
||||
horn_N = mkN "ħorn" "ħornijiet" ;
|
||||
horse_N = mkN "żiemel" "żwiemel" ;
|
||||
house_N = mkN "dar" "djar" feminine ;
|
||||
husband_N = mkN "raġel" "rġiel" ;
|
||||
ice_N = mkN "silġ" "silġiet" ;
|
||||
industry_N = mkN "industrija" "industriji" ;
|
||||
iron_N = mkNColl "ħadida" "ħadid" "ħadidiet" "ħdejjed" ;
|
||||
king_N = mkN "re" "rejjiet" ;
|
||||
knee_N = possN (mkNDual "rkoppa" "rkopptejn" "rkoppiet") ;
|
||||
lake_N = mkN "għadira" "għadajjar" ;
|
||||
lamp_N = mkN "lampa" "lampi" ;
|
||||
language_N = mkN "lingwa" "lingwi" ;
|
||||
leaf_N = mkNDual "werqa" "werqtejn" "werqiet" ;
|
||||
leather_N = mkN "ġilda" "ġildiet" ;
|
||||
leg_N = (mkNDual "riġel" "riġlejn" "riġlejn") ;
|
||||
liver_N = mkN "fwied" "ifdwa" ;
|
||||
louse_N = mkN "qamla" "qamliet" ;
|
||||
love_N = mkN "mħabba" "mħabbiet" ;
|
||||
man_N = mkN "raġel" "rġiel" ;
|
||||
meat_N = mkNColl "laħma" "laħam" "laħmiet" "laħmijiet" ;
|
||||
milk_N = mkNColl "ħalib" "ħalibijiet" ;
|
||||
moon_N = mkN "qamar" "oqmra" ;
|
||||
mother_N2 = mkN2 (possN (mkN "omm" "ommijiet" feminine)) ;
|
||||
mountain_N = mkN "muntanja" "muntanji" ;
|
||||
mouth_N = possN (mkN "ħalq" "ħluq") ;
|
||||
music_N = mkN "mużika" "mużiki" ;
|
||||
name_N = possN (mkN "isem" "ismijiet") ;
|
||||
neck_N = possN (mkN "għonq" "għenuq") ;
|
||||
newspaper_N = mkN "gazzetta" "gazzetti" ;
|
||||
night_N = mkN "lejl" "ljieli" ;
|
||||
nose_N = possN (mkN "mnieħer" "mniħrijiet") ;
|
||||
number_N = mkN "numru" "numrui" ;
|
||||
oil_N = mkN "żejt" "żjut" ;
|
||||
paper_N = mkN "karta" "karti" ;
|
||||
peace_N = mkN "paċi" "paċijiet" feminine ;
|
||||
pen_N = mkN "pinna" "pinen" ;
|
||||
person_N = mkNColl "persuna" "persuni" ;
|
||||
planet_N = mkN "pjaneta" "pjaneti" ;
|
||||
plastic_N = mkNNoPlural "plastik" ;
|
||||
policeman_N = mkNNoPlural "pulizija" ;
|
||||
priest_N = mkN "qassis" "qassisin" ;
|
||||
queen_N = mkN "reġina" "rġejjen" ;
|
||||
question_N = mkN "mistoqsija" "mistoqsijiet" ;
|
||||
radio_N = mkN "radju" "radjijiet" ;
|
||||
rain_N = mkNNoPlural "xita" ;
|
||||
reason_N = mkN "raġun" "raġunijiet" ;
|
||||
religion_N = mkN "reliġjon" "reliġjonijiet" ;
|
||||
restaurant_N = mkN "restorant" "restoranti" ;
|
||||
river_N = mkN "xmara" "xmajjar" ;
|
||||
road_N = mkN "triq" "triqat" "toroq" feminine ;
|
||||
rock_N = mkNColl "blata" "blat" "blatiet" ;
|
||||
roof_N = mkN "saqaf" "soqfa" ;
|
||||
root_N = mkN "qħerq" "qħeruq" ;
|
||||
rope_N = mkN "ħabel" "ħbula" ;
|
||||
rubber_N = mkN "gomma" "gomom" ;
|
||||
rule_N = mkN "regola" "regoli" ;
|
||||
salt_N = mkN "melħ" "melħiet" ;
|
||||
sand_N = mkNColl "ramla" "ramel" "ramliet" ;
|
||||
school_N = mkN "skola" "skejjel" ;
|
||||
science_N = mkN "xjenza" "xjenzi" ;
|
||||
sea_N = mkNDual "baħar" "baħrejn" "ibħra" ;
|
||||
seed_N = mkN "żerriegħa" "żerrigħat" ;
|
||||
sheep_N = mkNColl "nagħġa" "ngħaġ" "nagħġiet" ;
|
||||
ship_N = mkN "vapur" "vapuri" ;
|
||||
shirt_N = mkN "qmis" "qomos" feminine ;
|
||||
shoe_N = mkN "żarbun" "żraben" ;
|
||||
shop_N = mkN "ħanut" "ħwienet" ;
|
||||
silver_N = mkN "fidda" "fided" ;
|
||||
sister_N = (mkN "oħt" "aħwa" feminine) ;
|
||||
skin_N = mkN "ġilda" "ġildiet" ;
|
||||
sky_N = mkN "sema" "smewwiet" masculine ;
|
||||
smoke_N = mkN "duħħan" "dħaħen" ;
|
||||
snake_N = mkN "serp" "sriep" ;
|
||||
snow_N = mkNColl "borra" ;
|
||||
sock_N = mkN "kalzetta" "kalzetti" ;
|
||||
song_N = mkN "kanzunetta" "kanzunetti" ;
|
||||
star_N = mkN "stilla" "stilel" ;
|
||||
steel_N = mkNNoPlural "azzar" ;
|
||||
stick_N = mkN "lasta" "lasti" ;
|
||||
stone_N = mkNColl "ġebla" "ġebel" "ġebliet" "ġbiel" ;
|
||||
stove_N = mkN "kuker" "kukers" ;
|
||||
student_N = mkN "student" "studenti" ;
|
||||
sun_N = mkN "xemx" "xmux" feminine ;
|
||||
table_N = mkN "mejda" "mwejjed" ;
|
||||
tail_N = (mkN "denb" "dnieb") ;
|
||||
teacher_N = mkN "għalliem" "għalliema" ; -- genderedN
|
||||
television_N = mkN "televixin" "televixins" ;
|
||||
tongue_N = possN (mkN "lsien" "ilsna") ;
|
||||
tooth_N = possN (mkN "sinna" "sinniet" "snien") ;
|
||||
train_N = mkN "ferrovija" "ferroviji" ;
|
||||
tree_N = mkNColl "siġra" "siġar" "siġriet" ;
|
||||
university_N = mkN "università" "universitàjiet" ;
|
||||
village_N = mkN "raħal" "rħula" ;
|
||||
war_N = mkN "gwerra" "gwerrer" ;
|
||||
water_N = mkN "ilma" "ilmijiet" masculine ;
|
||||
wife_N = mkN "mara" "nisa" ;
|
||||
wind_N = mkN "riħ" "rjieħ" "rjiħat" ;
|
||||
window_N = mkN "tieqa" "twieqi" ;
|
||||
wine_N = mkNColl "nbid" "nbejjed" ;
|
||||
wing_N = mkN "ġewnaħ" "ġwienaħ" ;
|
||||
woman_N = mkN "mara" "nisa" ;
|
||||
wood_N = mkN "injam" "injamiet" ;
|
||||
worm_N = mkNColl "dudu" "dud" "dudiet" ;
|
||||
year_N = mkNDual "sena" "sentejn" "snin" ;
|
||||
|
||||
lin
|
||||
add_V3 = mkV3 zied_ZJD_1_10424_V maP ;
|
||||
airplane_N = mkN "ajruplan" ;
|
||||
alas_Interj = ss "sfortunatament" ;
|
||||
already_Adv = mkAdv "diġà" ;
|
||||
animal_N = mkN "annimal" ;
|
||||
answer_V2S = lilV2 (wiegeb_WGB_3_10033_V) ;
|
||||
apartment_N = mkN "appartament" ;
|
||||
apple_N = mkNColl "tuffieħ" ;
|
||||
art_N = mkNNoPlural "arti" feminine ;
|
||||
ashes_N = mkN "rmied" "rmiet" ;
|
||||
ask_V2Q = lilV2 (saqsa_SQSJ_1_7268_V) ;
|
||||
baby_N = mkN "tarbija" "trabi" ;
|
||||
back_N = possN (mkN "dahar" "dhur") ;
|
||||
bad_A = brokenA "ħażin" "hżiena" "agħar" ;
|
||||
bank_N = mkN "bank" "bankijiet" ; -- BANEK is for lotto booths!
|
||||
bark_N = mkN "qoxra" "qoxriet" ;
|
||||
beautiful_A = brokenA "sabiħ" "sbieħ" "isbaħ" ;
|
||||
become_VA = sar_SJR_1_9797_V ;
|
||||
beer_N = mkN "birra" "birer" ;
|
||||
beg_V2V = mkV2V ttallab_TLB_5_9893_V ghalP minnP ;
|
||||
belly_N = possN (mkN "żaqq" "żquq") ;
|
||||
big_A = brokenA "kbir" "kbar" "ikbar" ;
|
||||
bike_N = mkN "rota" ;
|
||||
bird_N = genderedN "għasfur" "għasafar" ;
|
||||
bite_V2 = lilV2 (gidem_GDM_1_8009_V) ;
|
||||
black_A = mkA "iswed" "sewda" "suwed" ;
|
||||
blood_N = possN (mkN [] "demm" [] "dmija" []) ;
|
||||
blow_V = nefah_NFH_1_8966_V ;
|
||||
blue_A = sameA "blu" ;
|
||||
boat_N = mkN "dgħajsa" "dgħajjes" ;
|
||||
bone_N = mkNColl "għadam" ;
|
||||
book_N = mkN "ktieb" "kotba" ;
|
||||
boot_N = mkN "żarbuna" "żarbun" [] "żraben" [] ;
|
||||
boss_N = mkN "mgħallem" "mgħallmin" ;
|
||||
boy_N = mkN "tifel" "tfal" ;
|
||||
bread_N = mkNColl "ħobż" ;
|
||||
break_V2 = dirV2 (kiser_KSR_1_8636_V) ;
|
||||
breast_N = possN (mkN "sider" "sdur") ; -- also ISDRA
|
||||
breathe_V = mkV "respira" ; -- ĦA N-NIFS
|
||||
broad_A = mkA "wiesgħa" "wiesgħa" "wiesgħin" ;
|
||||
brother_N2 = mkN2 (possN (mkN "ħu" "aħwa")) ;
|
||||
brown_A = sameA "kannella" ;
|
||||
burn_V = haraq_HRQ_1_8367_V ;
|
||||
butter_N = mkN [] "butir" [] "butirijiet" [] ;
|
||||
buy_V2 = dirV2 (xtara_XRJ_8_10296_V) ;
|
||||
camera_N = mkN "kamera" "kameras" ;
|
||||
cap_N = mkN "beritta" ;
|
||||
car_N = mkN "karozza" ;
|
||||
carpet_N = mkN "tapit" "twapet" ; -- TAPITI
|
||||
cat_N = genderedN "qattus" "qtates" ;
|
||||
ceiling_N = mkN "saqaf" "soqfa";
|
||||
chair_N = mkN "siġġu" "siġġijiet" ;
|
||||
cheese_N = mkNColl "ġobon" ;
|
||||
child_N = genderedN "tifel" "tifla" "tfal" ;
|
||||
church_N = mkN "knisja" "knejjes" ;
|
||||
city_N = mkN "belt" "bliet" feminine ;
|
||||
clean_A = brokenA "nadif" "nodfa" ;
|
||||
clever_A = regA "bravu" ;
|
||||
close_V2 = dirV2 (ghalaq_GHLQ_1_10530_V) ;
|
||||
cloud_N = mkNColl "sħab" ;
|
||||
coat_N = mkN "kowt" "kowtijiet" ;
|
||||
cold_A = mkA "kiesaħ" "kiesħa" "kesħin" ;
|
||||
come_V = gie_GJ'_1_8123_V ;
|
||||
computer_N = mkN "kompjuter" "kompjuters" ;
|
||||
correct_A = regA "korrett" ;
|
||||
count_V2 = dirV2 (ghadd_GHDD_1_10460_V) ;
|
||||
country_N = possN (mkN "pajjiż") ;
|
||||
cousin_N = genderedN "kuġin" "kuġini" ;
|
||||
cow_N = mkN "baqra" "baqar" "baqartejn" [] [] ;
|
||||
cut_V2 = dirV2 (qata'_QTGH_1_9305_V) ;
|
||||
day_N = mkN "ġurnata" "ġranet" ;
|
||||
die_V = miet_MWT_1_8923_V ;
|
||||
dig_V = hafer_HFR_1_8233_V ;
|
||||
dirty_A = regA "maħmuġ" ;
|
||||
distance_N3 = mkN3 (mkN "distanza") minnP saP ;
|
||||
do_V2 = dirV2 (ghamel_GHML_1_10544_V) ;
|
||||
doctor_N = genderedN "tabib" "tobba" ;
|
||||
dog_N = mkN "kelb" "klieb" ;
|
||||
door_N = mkN "bieb" "bibien" ;
|
||||
drink_V2 = dirV2 (xorob_XRB_1_10231_V) ;
|
||||
dry_A = regA "niexef" ;
|
||||
dull_A = sameA "tad-dwejjaq" ;
|
||||
dust_N = mkNColl "trab" ; -- not sure but sounds right
|
||||
ear_N = possN (mkNDual "widna") ;
|
||||
earth_N = mkN "art" "artijiet" feminine ;
|
||||
easy_A2V = dirA2 (sameA "faċli") ;
|
||||
eat_V2 = dirV2 (kiel_KJL_1_8672_V) ;
|
||||
egg_N = mkNColl "bajd" ;
|
||||
empty_A = mkA "vojt" "vojta" "vojta" ;
|
||||
enemy_N = mkN "għadu" "għedewwa" ;
|
||||
eye_N = possN (mk5N "għajn" [] "għajnejn" "għajnejn" "għejun" feminine) ;
|
||||
factory_N = mkN "fabbrika" ;
|
||||
fall_V = waqa'_WQGH_1_10070_V ;
|
||||
far_Adv = mkAdv "il-bogħod" ; -- use glue?
|
||||
fat_N = mkNColl "xaħam" ;
|
||||
father_N2 = mkN2 (possN (mkN "missier" "missirijiet")) ;
|
||||
fear_V2 = prepV2 (beza'_BZGH_1_7541_V) minnP ;
|
||||
fear_VS = beza'_BZGH_1_7541_V;
|
||||
feather_N = mkNColl "rix" ;
|
||||
fight_V2 = prepV2 (ggieled_GLD_6_8074_V) maP ;
|
||||
find_V2 = lilV2 (sab_SJB_1_9779_V) ;
|
||||
fingernail_N = possN (mkN "difer" [] "difrejn" "dwiefer" []) ;
|
||||
fire_N = mkN "nar" "nirien" ;
|
||||
fish_N = mkNColl "ħut" ;
|
||||
float_V = gham_GHWM_1_10750_V ; ---
|
||||
floor_N = mkN "art" "artijiet" feminine ;
|
||||
flower_N = mkN "fjura" ;
|
||||
flow_V = ghadda_GHDJ_2_10679_V ;
|
||||
fly_V = tar_TJR_1_9972_V ;
|
||||
fog_N = mkN [] "ċpar" [] [] [] ;
|
||||
foot_N = possN (mk5N "sieq" [] "saqajn" "saqajn" [] feminine) ;
|
||||
forest_N = mkN "foresta" ; -- also MASĠAR
|
||||
forget_V2 = lilV2 (nesa_NSJ_1_9126_V) ;
|
||||
freeze_V = ffriza_V ;
|
||||
fridge_N = mkN "friġġ" "friġġijiet" ;
|
||||
friend_N = possN (genderedN "ħabib" "ħbieb") ;
|
||||
fruit_N = mkNColl "frott" ;
|
||||
full_A = regA "mimli" ;
|
||||
fun_AV = sameA "pjaċevoli" ;
|
||||
garden_N = mkN "ġnien" "ġonna" ;
|
||||
girl_N = mkN "tifla" "tfal" ;
|
||||
give_V3 = mkV3 ta_GHTJ_1_10767_V lilP ;
|
||||
glove_N = mkN "ingwanta" ;
|
||||
go_V = mar_MWR_1_8918_V ;
|
||||
gold_N = mkN [] "deheb" [] "dehbijiet" [] ;
|
||||
good_A = mkA "tajjeb" "tajba" "tajbin" ;
|
||||
grammar_N = mkN "grammatika" ;
|
||||
grass_N = mk5N "ħaxixa" "ħaxix" [] [] "ħxejjex" masculine ; -- Dict says ĦAXIX = n.koll.m.s., f. -a, pl.ind. ĦXEJJEX
|
||||
green_A = mkA "aħdar" "ħadra" "ħodor" ;
|
||||
guts_N = possN (mkN "musrana" [] [] "musraniet" "msaren") ;
|
||||
hair_N = possN (mkN "xagħar" [] [] "xagħariet" "xgħur") ;
|
||||
hand_N = possN (mk5N "id" [] "idejn" "idejn" [] feminine) ;
|
||||
harbour_N = mkN "port" "portijiet" ;
|
||||
hat_N = mkN "kappell" "kpiepel" ;
|
||||
hate_V2 = lilV2 (baghad_BGHD_1_7402_V) ;
|
||||
head_N = possN (mkN "ras" "rjus" feminine) ;
|
||||
hear_V2 = lilV2 (sema'_SMGH_1_9698_V) ;
|
||||
heart_N = possN (mkN "qalb" "qlub" feminine) ;
|
||||
heavy_A = brokenA "tqil" "tqal" "itqal" ;
|
||||
hill_N = mkN "għolja" "għoljiet" ;
|
||||
hit_V2 = lilV2 (laqat_LQT_1_8772_V) ;
|
||||
hold_V2 = lilV2 (zamm_ZMM_1_10392_V) ;
|
||||
hope_VS = xtaq_XWQ_8_10313_V ;
|
||||
horn_N = mkN "ħorn" "ħornijiet" ;
|
||||
horse_N = mkN "żiemel" "żwiemel" ;
|
||||
hot_A = mkA "jaħraq" "taħraq" "jaħarqu" ;
|
||||
house_N = mkN "dar" "djar" feminine ;
|
||||
hunt_V2 = prepV2 (kaccac_KCC_2_8571_V) ghalP ;
|
||||
husband_N = mkN "raġel" "rġiel" ;
|
||||
ice_N = mkN "silġ" "silġiet" ;
|
||||
important_A = sameA "importanti" ;
|
||||
industry_N = mkN "industrija" ;
|
||||
iron_N = mk5N "ħadida" "ħadid" [] "ħadidiet" "ħdejjed" masculine ;
|
||||
john_PN = mkPN "Ġanni" masculine singular ;
|
||||
jump_V = qabez_QBZ_1_9182_V ;
|
||||
kill_V2 = lilV2 (qatel_QTL_1_9312_V) ;
|
||||
king_N = mkN "re" "rejjiet" ;
|
||||
knee_N = possN (mkN "rkoppa" [] "rkopptejn" "rkoppiet" []) ; -- TODO use mkNDual
|
||||
know_V2 = lilV2 (af_''F_1_10774_V) ;
|
||||
know_VQ = af_''F_1_10774_V ;
|
||||
know_VS = af_''F_1_10774_V ;
|
||||
lake_N = mkN "għadira" "għadajjar" ;
|
||||
lamp_N = mkN "lampa" ;
|
||||
language_N = mkN "lingwa" ; -- lsien?
|
||||
laugh_V = dahak_DHK_1_7688_V ;
|
||||
leaf_N = mkN "werqa" "weraq" "werqtejn" "werqiet" [] ;
|
||||
learn_V2 = dirV2 (tghallem_GHLM_5_10527_V) ;
|
||||
leather_N = mkN "ġilda" "ġild" [] "ġildiet" "ġlud" ; -- mkNColl "ġild" ;
|
||||
leave_V2 = prepV2 (telaq_TLQ_1_9903_V) minnP ;
|
||||
left_Ord = mkOrd "xellug" ;
|
||||
leg_N = possN (mkN "riġel" [] "riġlejn" [] []) ; -- SIEQ
|
||||
lie_V = mtedd_MDD_8_8816_V ; -- lie down
|
||||
like_V2 = lilV2 (ghogob_GHGB_1_10485_V) ;
|
||||
listen_V2 = lilV2 (sema'_SMGH_1_9698_V) ;
|
||||
live_V = ghex_GHJX_1_10711_V ;
|
||||
liver_N = mkN "fwied" [] [] [] "ifdwa" ;
|
||||
long_A = brokenA "twil" "twal" "itwal" ;
|
||||
lose_V2 = lilV2 (tilef_TLF_1_9895_V) ;
|
||||
louse_N = mkN "qamla" "qamliet" ;
|
||||
love_N = mkN "mħabba" "mħabbiet" ;
|
||||
love_V2 = lilV2 (habb_HBB_1_8174_V) ;
|
||||
man_N = mkN "raġel" "rġiel" ;
|
||||
married_A2 = mkA2 (mkA "miżżewweġ" "miżżewġa") lilP ;
|
||||
meat_N = mkN "laħam" [] [] "laħmiet" "laħmijiet" ;
|
||||
milk_N = mkN [] "ħalib" [] "ħalibijiet" "ħlejjeb" ;
|
||||
moon_N = mkN "qamar" "oqmra" ; -- QMURA
|
||||
mother_N2 = mkN2 (possN (mkN "omm" "ommijiet" feminine)) ;
|
||||
mountain_N = mkN "muntanja" ;
|
||||
mouth_N = possN (mkN "ħalq" "ħluq") ;
|
||||
music_N = mkN "mużika" "mużiki" ;
|
||||
name_N = possN (mkN "isem" "ismijiet") ;
|
||||
narrow_A = mkA "dejjaq" "dejqa" "dojoq" "idjaq" ;
|
||||
near_A = regA "viċin" ;
|
||||
neck_N = possN (mkN "għonq" "għenuq") ;
|
||||
new_A = brokenA "ġdid" "ġodda" ;
|
||||
newspaper_N = mkN "gazzetta" ;
|
||||
night_N = mkN "lejl" "ljieli" ;
|
||||
nose_N = possN (mkN "mnieħer" "mniħrijiet") ;
|
||||
now_Adv = mkAdv "issa" ;
|
||||
number_N = mkN "numru" ;
|
||||
oil_N = mkN "żejt" "żjut" ;
|
||||
old_A = brokenA "qadim" "qodma" "eqdem" ;
|
||||
open_V2 = dirV2 (fetah_FTH_1_7932_V) ;
|
||||
paint_V2A = dirV2 (pitter_PTR_2_9152_V) ;
|
||||
paper_N = mkN "karta" ;
|
||||
paris_PN = mkPN "Pariġi" feminine singular ;
|
||||
peace_N = mkN "paċi" "paċijiet" feminine ;
|
||||
pen_N = mkN "pinna" "pinen" ;
|
||||
person_N = mk5N [] "persuna" [] "persuni" [] masculine ;
|
||||
planet_N = mkN "pjaneta" ;
|
||||
plastic_N = mkNNoPlural "plastik" ;
|
||||
play_V = daqq_DQQ_1_7736_V ;
|
||||
play_V2 = prepV2 (laghab_LGHB_1_8724_V) maP ;
|
||||
policeman_N = mkNNoPlural "pulizija" ;
|
||||
priest_N = mkN "qassis" "qassisin" ;
|
||||
probable_AS = mkAS (sameA "probabbli") ;
|
||||
pull_V2 = lilV2 (gibed_GBD_1_8043_V) ;
|
||||
push_V2 = dirV2 (mbotta_V) ; -- GĦAFAS
|
||||
put_V2 = lilV2 (qieghed_QGHD_3_9212_V) ;
|
||||
queen_N = mkN "reġina" "rġejjen" ;
|
||||
question_N = mkN "mistoqsija" "mistoqsijiet" ; -- DOMANDA
|
||||
radio_N = mkN "radju" "radjijiet" ;
|
||||
rain_N = mkNNoPlural "xita" ;
|
||||
rain_V0 = xita_XTW_1_10297_V ; -- TAGĦMEL IX-XITA
|
||||
read_V2 = dirV2 (qara_QRJ_1_9350_V) ;
|
||||
ready_A = regA "lest" ;
|
||||
reason_N = mkN "raġun" "raġunijiet" ;
|
||||
red_A = mkA "aħmar" "ħamra" "ħomor" ;
|
||||
religion_N = mkN "reliġjon" "reliġjonijiet" ;
|
||||
restaurant_N = mkN "restorant" ;
|
||||
right_Ord = mkOrd "lemin" ;
|
||||
river_N = mkN "xmara" "xmajjar" ;
|
||||
road_N = mk5N "triq" [] [] "triqat" "toroq" feminine ;
|
||||
rock_N = mkN "blata" "blat" [] "blatiet" "blajjiet" ; -- in dictionary BLAT and BLATA are separate!
|
||||
roof_N = mkN "saqaf" "soqfa" ;
|
||||
root_N = mkN "qħerq" "qħeruq" ;
|
||||
rope_N = mkN "ħabel" "ħbula" ;
|
||||
rotten_A = mkA "mħassar" "mħassra" "mħassrin" ;
|
||||
round_A = regA "tond" ;
|
||||
rub_V2 = dirV2 (ghorok_GHRK_1_10599_V) ;
|
||||
rubber_N = mkN "gomma" "gomom" ;
|
||||
rule_N = mkN "regola" ;
|
||||
run_V = gera_GRJ_1_8131_V ;
|
||||
salt_N = mkN "melħ" "melħiet" ;
|
||||
sand_N = mkN "ramla" "ramel" [] "ramliet" "rmiel" ;
|
||||
say_VS = qal_QWL_1_9357_V ;
|
||||
school_N = mkN "skola" "skejjel" ;
|
||||
science_N = mkN "xjenza" ;
|
||||
scratch_V2 = lilV2 (barax_BRX_1_7504_V) ;
|
||||
sea_N = mkN "baħar" [] "baħrejn" "ibħra" [] ;
|
||||
see_V2 = lilV2 (ra_R'J_1_9513_V) ;
|
||||
seed_N = mkN "żerriegħa" "żerrigħat" ;
|
||||
seek_V2 = lilV2 (fittex_FTX_2_7952_V) ;
|
||||
sell_V3 = mkV3 biegh_BJGH_1_7565_V lilP ;
|
||||
send_V3 = mkV3 baghat_BGHT_1_7412_V lilP ;
|
||||
sew_V = hat_HJT_1_8508_V ;
|
||||
sharp_A = mkA "jaqta'" "taqta'" "jaqtgħu" ;
|
||||
sheep_N = mkN "nagħġa" "nagħaġ" [] "nagħġiet" [] ;
|
||||
ship_N = mkN "vapur" ;
|
||||
shirt_N = mkN "qmis" "qomos" feminine ;
|
||||
shoe_N = mkN "żarbun" "żraben" ;
|
||||
shop_N = mkN "ħanut" "ħwienet" ;
|
||||
short_A = brokenA "qasir" "qosra" "iqsar" ;
|
||||
silver_N = mkN "fidda" "fided" ;
|
||||
sing_V = kanta_KNTJ_1_7016_V ;
|
||||
sister_N = possN (mkN "oħt" "aħwa" feminine) ;
|
||||
sit_V = pogga_PGJ_2_9157_V ;
|
||||
skin_N = mkN "ġilda" "ġildiet" ;
|
||||
sky_N = mkN "sema" "smewwiet" masculine ;
|
||||
sleep_V = raqad_RQD_1_9469_V ;
|
||||
small_A = brokenA "zgħir" "zgħar" "iżgħar" ;
|
||||
smell_V = xamm_XMM_1_10207_V ;
|
||||
smoke_N = mkN "duħħan" "dħaħen" ;
|
||||
smooth_A = regA "lixx" ;
|
||||
snake_N = mkN "serp" "sriep" ;
|
||||
snow_N = mkN [] "borra" [] [] [] ;
|
||||
sock_N = mkN "kalzetta" ;
|
||||
song_N = mkN "kanzunetta" ;
|
||||
speak_V2 = prepV2 (kellem_KLM_2_8597_V) maP ;
|
||||
spit_V = bezaq_BZQ_1_7549_V ;
|
||||
split_V2 = lilV2 (qasam_QSM_1_9292_V) ;
|
||||
squeeze_V2 = dirV2 (ghasar_GHSR_1_10625_V) ;
|
||||
stab_V2 = lilV2 (mewwes_MWS_2_8921_V) ;
|
||||
stand_V = qaghad_QGHD_1_9210_V ; ---
|
||||
star_N = mkN "stilla" "stilel" ;
|
||||
steel_N = mkNNoPlural "azzar" ;
|
||||
stick_N = mkN "lasta" ;
|
||||
stone_N = mkN "ġebla" "ġebel" [] "ġebliet" "ġbiel" ;
|
||||
stop_V = waqaf_WQF_1_10067_V ;
|
||||
stove_N = mkN "kuker" "kukers" ; -- FUKLAR
|
||||
straight_A = regA "dritt" ;
|
||||
student_N = mkN "student" ;
|
||||
stupid_A = mkA "iblah" "belha" "boloh" ;
|
||||
suck_V2 = lilV2 (rada'_RDGH_1_9388_V) ;
|
||||
sun_N = mkN "xemx" "xmux" feminine ;
|
||||
swell_V = ntefah_NFH_8_8970_V ;
|
||||
swim_V = gham_GHWM_1_10750_V ;
|
||||
switch8off_V2 = dirV2 (tefa_TFJ_1_9960_V) ;
|
||||
switch8on_V2 = dirV2 (xeghel_XGHL_1_10155_V) ;
|
||||
table_N = mkN "mejda" "mwejjed" ;
|
||||
tail_N = possN (mkN "denb" "dnieb") ;
|
||||
talk_V3 = mkV3 kellem_KLM_2_8597_V maP fuqP ; -- PAĊPAĊ, PARLA
|
||||
teach_V2 = lilV2 (ghallem_GHLM_2_10526_V) ;
|
||||
teacher_N = genderedN "għalliem" "għalliema" ;
|
||||
television_N = mkN "televixin" "televixins" ;
|
||||
thick_A = mkA "oħxon" "ħoxna" "ħoxnin" "eħxen" ;
|
||||
thin_A = brokenA "rqiq" "rqaq" "rqaq" ;
|
||||
think_V = haseb_HSB_1_8387_V ;
|
||||
throw_V2 = dirV2 (waddab_WDB_2_10027_V) ;
|
||||
tie_V2 = dirV2 (qafel_QFL_1_9206_V) ;
|
||||
today_Adv = mkAdv "illum" ;
|
||||
tongue_N = possN (mkN "lsien" "ilsna") ;
|
||||
tooth_N = possN (mkN "sinna" [] [] "sinniet" "snien") ; -- DARSA
|
||||
train_N = mkN "ferrovija" ;
|
||||
travel_V = vvjagga_V ;
|
||||
tree_N = mkN "siġra" "siġar" [] "siġriet" [] ;
|
||||
turn_V = dar_DWR_1_7803_V ;
|
||||
ugly_A = mkA "ikrah" "kerha" "koroh" ;
|
||||
uncertain_A = regA "inċert" ;
|
||||
understand_V2 = lilV2 (fehem_FHM_1_10830_V) ;
|
||||
university_N = mkN "università" "universitàjiet" ;
|
||||
village_N = mkN "raħal" "rħula" ; -- VILLAĠĠ
|
||||
vomit_V = qala'_QLGH_1_9223_V ;
|
||||
wait_V2 = lilV2 (stenna_'NJ_10_10781_V) ;
|
||||
walk_V = mexa_MXJ_1_8926_V ;
|
||||
war_N = mkN "gwerra" "gwerrer" ;
|
||||
warm_A = brokenA "sħun" "sħan" ;
|
||||
wash_V2 = lilV2 (hasel_HSL_1_8395_V) ;
|
||||
watch_V2 = dirV2 (ra_R'J_1_9513_V) ;
|
||||
water_N = mkN "ilma" "ilmijiet" masculine ;
|
||||
wet_A = mkA "mxarrab" "mxarrba" "mxarrbin" ;
|
||||
white_A = mkA "abjad" "bajda" "bojod" ;
|
||||
wide_A = broad_A ;
|
||||
wife_N = mkN "mara" "nisa" ;
|
||||
win_V2 = dirV2 (rebah_RBH_1_9371_V) ;
|
||||
wind_N = mkN "riħ" [] [] "rjieħ" "rjiħat" ;
|
||||
window_N = mkN "tieqa" "twieqi" ;
|
||||
wine_N = mkN [] "nbid" [] [] "nbejjed" ;
|
||||
wing_N = mkN "ġewnaħ" "ġwienaħ" ;
|
||||
wipe_V2 = dirV2 (mesah_MSH_1_8881_V) ;
|
||||
woman_N = mkN "mara" "nisa" ;
|
||||
wonder_VQ = kkuntempla_V ;
|
||||
wood_N = mkN "injam" "injamiet" ;
|
||||
worm_N = mkN "dudu" "dud" [] "dudiet" "dwied" ;
|
||||
write_V2 = dirV2 (kiteb_KTB_1_8641_V) ;
|
||||
year_N = mkN "sena" [] "sentejn" "snin" [] ;
|
||||
yellow_A = mkA "isfar" "safra" "sofor" ;
|
||||
young_A = small_A ;
|
||||
|
||||
|
||||
@@ -27,35 +27,22 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
||||
{- Pronoun -------------------------------------------------------------- -}
|
||||
|
||||
oper
|
||||
-- [AZ]
|
||||
mkPron = overload {
|
||||
|
||||
-- jiena, inti, huwa
|
||||
mkPron : (_,_,_,_ : Str) -> Number -> Person -> Gender -> Pronoun =
|
||||
\jien, _i, _ni, _li, num, pers, gen -> {
|
||||
s = table {
|
||||
Personal => jien ; -- jien
|
||||
Possessive => "tiegħ" + _i ; -- tiegħi
|
||||
Suffixed Acc => _ni ; -- rajtni
|
||||
Suffixed Dat => _li ; -- rajtli
|
||||
Suffixed Gen => _i -- qalbi, idejja
|
||||
} ;
|
||||
a = mkAgr num pers gen ;
|
||||
} ;
|
||||
|
||||
-- hija, aħna, intom, huma
|
||||
mkPron : (_,_ : Str) -> Number -> Person -> Gender -> Pronoun =
|
||||
\hi, _ha, num, pers, gen -> {
|
||||
s = table {
|
||||
Personal => hi ; -- hi
|
||||
Possessive => "tagħ" + _ha ; -- tagħha
|
||||
Suffixed Acc => _ha ; -- rajtha
|
||||
Suffixed Dat => "l"+_ha ; -- rajtilha
|
||||
Suffixed Gen => _ha -- qalbha
|
||||
} ;
|
||||
a = mkAgr num pers gen ;
|
||||
} ;
|
||||
|
||||
mkPron : (_,_ : Str) -> Number -> Person -> Gender -> Pronoun =
|
||||
\hi, _ha, num, pers, gen ->
|
||||
let
|
||||
tagh : Str = case <pers,num,gen> of {
|
||||
<P1,Sg,_> => "tiegħ" ;
|
||||
<P2,Sg,_> => "tiegħ" ;
|
||||
<P3,Sg,Masc> => "tiegħ" ;
|
||||
_ => "tagħ"
|
||||
} ;
|
||||
in {
|
||||
s = table {
|
||||
Personal => hi ; -- hi
|
||||
Possessive => tagh + _ha ; -- tagħha
|
||||
Suffixed => _ha -- qalbha
|
||||
} ;
|
||||
a = mkAgr num pers gen ;
|
||||
} ;
|
||||
|
||||
{- Verb ----------------------------------------------------------------- -}
|
||||
|
||||
@@ -54,8 +54,8 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in {
|
||||
}
|
||||
} ;
|
||||
a = case (numform2nounnum det.n) of {
|
||||
Singulative => mkAgr Sg P3 cn.g ; --- collective?
|
||||
_ => mkAgr Pl P3 cn.g
|
||||
Singulative => mkAgr Sg P3 cn.g ; --- collective?
|
||||
_ => mkAgr Pl P3 cn.g
|
||||
} ;
|
||||
isPron = False ;
|
||||
isDefn = det.isDefn ;
|
||||
@@ -133,7 +133,7 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in {
|
||||
s = table {
|
||||
NPNom => p.s ! Personal ;
|
||||
NPAcc => p.s ! Personal ;
|
||||
NPCPrep => p.s ! Suffixed Acc
|
||||
NPCPrep => p.s ! Suffixed
|
||||
} ;
|
||||
a = p.a ;
|
||||
isPron = True ;
|
||||
@@ -143,7 +143,7 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in {
|
||||
-- Pron -> Quant
|
||||
PossPron p = {
|
||||
s = \\_ => p.s ! Possessive ;
|
||||
clitic = p.s ! Suffixed Gen ;
|
||||
clitic = p.s ! Suffixed ;
|
||||
isPron = True ;
|
||||
isDemo = False ;
|
||||
isDefn = True ;
|
||||
@@ -153,7 +153,7 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in {
|
||||
PredetNP pred np = overwriteNPs np (\\c => pred.s ++ np.s ! c) ;
|
||||
|
||||
-- NP -> V2 -> NP
|
||||
PPartNP np v2 = overwriteNPs np (\\c => np.s ! c ++ stem1 (v2.s ! VActivePart (toGenNum np.a))) ;
|
||||
PPartNP np v2 = overwriteNPs np (\\c => np.s ! c ++ (v2.s ! VActivePart (toGenNum np.a)).s1) ;
|
||||
|
||||
-- NP -> RS -> NP
|
||||
RelNP np rs = overwriteNPs np (\\c => np.s ! c ++ "," ++ rs.s ! np.a ) ;
|
||||
@@ -260,11 +260,6 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in {
|
||||
} ;
|
||||
|
||||
oper
|
||||
-- Copied from ParadigmsMlt (didn't want to change import structure)
|
||||
-- mkPrep : Str -> Prep = \fuq -> lin Prep {
|
||||
-- s = \\defn => fuq ;
|
||||
-- takesDet = False
|
||||
-- } ;
|
||||
prep_ta = lin Prep {
|
||||
s = table {
|
||||
Indefinite => "ta'" ;
|
||||
@@ -285,7 +280,6 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in {
|
||||
|
||||
oper
|
||||
-- Overwrite the s field in an NP
|
||||
-- Use this instead of np ** { s = ... }
|
||||
overwriteNPs : NounPhrase -> (NPCase => Str) -> NounPhrase = \np,tbl -> {
|
||||
s = tbl ;
|
||||
a = np.a ;
|
||||
@@ -294,7 +288,6 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in {
|
||||
} ;
|
||||
|
||||
-- Overwrite the s field in a Noun
|
||||
-- Use this instead of n ** { s = ... }
|
||||
overwriteCNs : Noun -> (Noun_Number => Str) -> Noun = \n,tbl -> {
|
||||
s = tbl ;
|
||||
g = n.g ;
|
||||
|
||||
@@ -85,127 +85,122 @@ resource ParadigmsMlt = open
|
||||
_ => Masc
|
||||
} ;
|
||||
|
||||
|
||||
-- Smart paradigm for building a noun
|
||||
-- Noun paradigm 1(x): singular and plural(s)
|
||||
mkN : N = overload {
|
||||
|
||||
-- Take the singular and infer gender & plural.
|
||||
-- Assume no special plural forms.
|
||||
-- Params:
|
||||
-- Singular, eg AJRUPLAN
|
||||
-- 1: Take the singular and infer plural
|
||||
mkN : Str -> N = \sing ->
|
||||
let
|
||||
plural = inferNounPlural sing ;
|
||||
gender = inferNounGender sing ;
|
||||
in
|
||||
mk5N sing [] [] plural [] gender ;
|
||||
|
||||
-- Take an explicit gender.
|
||||
-- Assume no special plural forms.
|
||||
-- Params:
|
||||
-- Singular, eg AJRUPLAN
|
||||
-- Gender
|
||||
let plural = inferNounPlural sing ;
|
||||
gender = inferNounGender sing ;
|
||||
in mk5N sing [] [] plural [] gender ;
|
||||
mkN : Str -> Gender -> N = \sing,gender ->
|
||||
let
|
||||
plural = inferNounPlural sing ;
|
||||
in
|
||||
mk5N sing [] [] plural [] gender ;
|
||||
let plural = inferNounPlural sing ;
|
||||
in mk5N sing [] [] plural [] gender ;
|
||||
|
||||
-- Take the singular, plural. Infer gender.
|
||||
-- Assume no special plural forms.
|
||||
-- Params:
|
||||
-- Singular, eg KTIEB
|
||||
-- Plural, eg KOTBA
|
||||
-- 1: Take the singular and plural
|
||||
mkN : Str -> Str -> N = \sing,plural ->
|
||||
let
|
||||
gender = inferNounGender sing ;
|
||||
in
|
||||
mk5N sing [] [] plural [] gender ;
|
||||
|
||||
-- Take the singular, plural and gender.
|
||||
-- Assume no special plural forms.
|
||||
-- Params:
|
||||
-- Singular, eg KTIEB
|
||||
-- Plural, eg KOTBA
|
||||
-- Gender
|
||||
let gender = inferNounGender sing ;
|
||||
in mk5N sing [] [] plural [] gender ;
|
||||
mkN : Str -> Str -> Gender -> N = \sing,plural,gender ->
|
||||
mk5N sing [] [] plural [] gender ;
|
||||
mk5N sing [] [] plural [] gender ;
|
||||
|
||||
-- Takes all 5 forms, inferring gender
|
||||
-- Params:
|
||||
-- Singulative, eg KOXXA
|
||||
-- Collective, eg KOXXOX
|
||||
-- Double, eg KOXXTEJN
|
||||
-- Determinate Plural, eg KOXXIET
|
||||
-- Indeterminate Plural
|
||||
mkN : Str -> Str -> Str -> Str -> Str -> N = \sing,coll,dual,det,ind ->
|
||||
let
|
||||
gender = if_then_else (Gender) (isNil sing) (inferNounGender coll) (inferNounGender sing) ;
|
||||
in
|
||||
mk5N sing coll dual det ind gender ;
|
||||
-- 1x: Take both plurals
|
||||
mkN : Str -> Str -> Str -> N = \sing,det,ind ->
|
||||
let gender = inferNounGender sing ;
|
||||
in mk5N sing [] [] det ind gender ;
|
||||
mkN : Str -> Str -> Str -> Gender -> N = \sing,det,ind,gender ->
|
||||
mk5N sing [] [] det ind gender ;
|
||||
|
||||
} ; --end of mkN overload
|
||||
} ;
|
||||
|
||||
-- Take the singular and infer gender.
|
||||
-- No other plural forms.
|
||||
-- Params:
|
||||
-- Singular, eg ARTI
|
||||
-- Noun paradigm 2: with a collective form
|
||||
mkNColl = overload {
|
||||
-- Note: collective noun is always treated as Masculine
|
||||
|
||||
-- 2c
|
||||
mkNColl : Str -> N = \coll ->
|
||||
mk5N [] coll [] [] [] Masc ;
|
||||
|
||||
-- 2b
|
||||
mkNColl : Str -> Str -> N = \coll,det ->
|
||||
mk5N [] coll [] det [] Masc ;
|
||||
-- 2bx
|
||||
-- mkNColl : Str -> Str -> Str -> N = \coll,det,ind ->
|
||||
-- mk5N [] coll [] det ind Masc ;
|
||||
|
||||
-- 2
|
||||
mkNColl : Str -> Str -> Str -> N = \sing,coll,det ->
|
||||
mk5N sing coll [] det [] Masc ;
|
||||
-- 2x
|
||||
mkNColl : Str -> Str -> Str -> Str -> N = \sing,coll,det,ind ->
|
||||
mk5N sing coll [] det ind Masc ;
|
||||
|
||||
} ;
|
||||
|
||||
-- Noun paradigm 3: only singulative form
|
||||
mkNNoPlural : N = overload {
|
||||
|
||||
mkNNoPlural : Str -> N = \sing ->
|
||||
let gender = inferNounGender sing ;
|
||||
let gender = inferNounGender sing ;
|
||||
in mk5N sing [] [] [] [] gender
|
||||
;
|
||||
|
||||
mkNNoPlural : Str -> Gender -> N = \sing,gender ->
|
||||
mk5N sing [] [] [] [] gender
|
||||
;
|
||||
} ;
|
||||
|
||||
} ; --end of mkNNoPlural overload
|
||||
-- Noun paradigm 4: with dual form
|
||||
mkNDual = overload {
|
||||
|
||||
|
||||
-- Take the singular and infer dual, plural & gender
|
||||
-- Params:
|
||||
-- Singular, eg AJRUPLAN
|
||||
mkNDual : Str -> N = \sing ->
|
||||
let
|
||||
dual : Str = case sing of {
|
||||
_ + ("għ"|"'") => sing + "ajn" ;
|
||||
_ + ("a") => init(sing) + "ejn" ;
|
||||
_ => sing + "ejn"
|
||||
} ;
|
||||
plural = inferNounPlural sing ;
|
||||
gender = inferNounGender sing ;
|
||||
in
|
||||
-- 4 smart
|
||||
mkNDual : Str -> N = \sing ->
|
||||
let
|
||||
dual : Str = case sing of {
|
||||
_ + ("għ"|"'") => sing + "ajn" ;
|
||||
_ + ("a") => init(sing) + "ejn" ;
|
||||
_ => sing + "ejn"
|
||||
} ;
|
||||
plural = inferNounPlural sing ;
|
||||
gender = inferNounGender sing ;
|
||||
in
|
||||
mk5N sing [] dual plural [] gender ;
|
||||
|
||||
-- 4
|
||||
mkNDual : Str -> Str -> Str -> N = \sing,dual,det ->
|
||||
let gender = inferNounGender sing ;
|
||||
in mk5N sing [] dual det [] gender ;
|
||||
mkNDual : Str -> Str -> Str -> Gender -> N = \sing,dual,det,gender ->
|
||||
mk5N sing [] dual det [] gender ;
|
||||
|
||||
-- Take the collective, and infer singulative, determinate plural, and gender.
|
||||
-- Params:
|
||||
-- Collective Plural, eg TUFFIEĦ
|
||||
mkNColl : Str -> N = \coll ->
|
||||
let
|
||||
stem : Str = case coll of {
|
||||
-- This can only apply when there are 2 syllables in the word
|
||||
_ + #Vowel + #Consonant + #Vowel + K@#Consonant => dropSfx 2 coll + K ; -- eg GĦADAM -> GĦADM-
|
||||
-- 4x
|
||||
mkNDual : Str -> Str -> Str -> Str -> N = \sing,dual,det,ind ->
|
||||
let gender = inferNounGender sing ;
|
||||
in mk5N sing [] dual det ind gender ;
|
||||
mkNDual : Str -> Str -> Str -> Str -> Gender -> N = \sing,dual,det,ind,gender ->
|
||||
mk5N sing [] dual det ind gender ;
|
||||
|
||||
_ => coll
|
||||
} ;
|
||||
sing : Str = case stem of {
|
||||
_ => stem + "a"
|
||||
} ;
|
||||
det : Str = case stem of {
|
||||
_ => stem + "iet"
|
||||
} ;
|
||||
-- gender = inferNounGender sing ;
|
||||
gender = Masc ; -- Collective noun is always treated as Masculine
|
||||
in
|
||||
mk5N sing coll [] det [] gender ;
|
||||
} ;
|
||||
|
||||
-- Build a noun using 5 forms, and a gender
|
||||
-- Build a noun using 5 potentially non-present forms and a gender
|
||||
-- You can pass empty strings to this oper; they won't be passed along
|
||||
mk5N : (_,_,_,_,_ : Str) -> Gender -> N ;
|
||||
mk5N = \sing,coll,dual,det,ind,gen -> lin N (
|
||||
mkNoun sing coll dual det ind gen
|
||||
case <isNil sing,isNil coll,isNil dual,isNil det,isNil ind> of {
|
||||
<False,True, True, False,True > => mkNoun sing sing det det det gen False False ; -- 1
|
||||
<False,True, True, False,False> => mkNoun sing sing det det ind gen False False ; -- 1x
|
||||
|
||||
<False,False,True, False,True > => mkNoun sing coll det det det gen True False ; -- 2
|
||||
<False,False,True, False,False> => mkNoun sing coll det det ind gen True False ; -- 2x
|
||||
<True, False,True, False,True > => mkNoun coll coll det det det gen True False ; -- 2b
|
||||
<True, False,True, False,False> => mkNoun coll coll det det ind gen True False ; -- 2bx
|
||||
<True, False,True, True, True > => mkNoun coll coll coll coll coll gen True False ; -- 2c
|
||||
|
||||
<False,True, True, True, True > => mkNoun sing sing sing sing sing gen False False ; -- 3
|
||||
|
||||
<False,True, False,False,True > => mkNoun sing sing dual det det gen False True ; -- 4
|
||||
<False,True, False,False,False> => mkNoun sing sing dual det ind gen False True ; -- 4x
|
||||
|
||||
_ => error "Calling mk5N with some invalid combination"
|
||||
}
|
||||
) ;
|
||||
|
||||
-- Proper noun
|
||||
@@ -594,7 +589,7 @@ resource ParadigmsMlt = open
|
||||
mammaII : Str = dropPfx 1 mammaV ; -- WAQQAF
|
||||
vII : V = derivedV_II mammaII root ;
|
||||
info : VerbInfo = mkVerbInfo vII.i.class FormV vII.i.root vII.i.patt mammaV ;
|
||||
get : VForm -> Str = \vf -> stem1 (vII.s ! vf) ;
|
||||
get : VForm -> Str = \vf -> (vII.s ! vf).s1 ;
|
||||
tbl : VForm => Str = table {
|
||||
VPerf agr => pfx_T (get (VPerf agr)) ;
|
||||
VImpf (AgP1 Sg) => pfx "ni" (pfx_T (dropPfx 1 (get (VImpf (AgP1 Sg))))) ;
|
||||
@@ -621,7 +616,7 @@ resource ParadigmsMlt = open
|
||||
mammaIII : Str = dropPfx 1 mammaVI ; -- QIEGĦED
|
||||
vIII : V = derivedV_III mammaIII root ;
|
||||
info : VerbInfo = updateVerbInfo vIII.i FormVI mammaVI ;
|
||||
get : VForm -> Str = \vf -> stem1 (vIII.s ! vf) ;
|
||||
get : VForm -> Str = \vf -> (vIII.s ! vf).s1 ;
|
||||
tbl : VForm => Str = table {
|
||||
VPerf agr => pfx_T (get (VPerf agr)) ;
|
||||
VImpf (AgP1 Sg) => pfx "ni" (pfx_T (dropPfx 1 (get (VImpf (AgP1 Sg))))) ;
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
|
||||
flags coding=utf8 ;
|
||||
optimize=noexpand ;
|
||||
|
||||
{- General -------------------------------------------------------------- -}
|
||||
|
||||
@@ -47,7 +48,7 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
case vagr of {
|
||||
AgP1 num => mkAgr num P1 Masc ;
|
||||
AgP2 num => mkAgr num P2 Masc ;
|
||||
AgP3Sg gen => mkAgr Pl P3 gen ;
|
||||
AgP3Sg gen => mkAgr Sg P3 gen ;
|
||||
AgP3Pl => mkAgr Pl P3 Masc
|
||||
} ;
|
||||
} ;
|
||||
@@ -96,6 +97,25 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
|
||||
agrP3 : Number -> Gender -> Agr = \n,g -> mkAgr n P3 g;
|
||||
|
||||
VPForm2VAgr : VPForm -> VAgr = \vpform ->
|
||||
case vpform of {
|
||||
VPIndicat _ vagr => vagr ;
|
||||
VPImperat n => AgP2 n
|
||||
};
|
||||
|
||||
sing : VAgr -> Bool = \agr ->
|
||||
case toAgr agr of {
|
||||
{n=Sg; p=_; g=_} => True ;
|
||||
_ => False
|
||||
} ;
|
||||
|
||||
femOrPlural : Agr -> Bool = \agr ->
|
||||
case agr of {
|
||||
{n=Sg; p=_; g=Fem} => True ;
|
||||
{n=Pl; p=_; g=_} => True ;
|
||||
_ => False
|
||||
} ;
|
||||
|
||||
conjAgr : Agr -> Agr -> Agr = \a,b -> {
|
||||
n = (conjNumber a.n b.n) ;
|
||||
p = (conjPerson a.p b.p) ;
|
||||
@@ -314,18 +334,18 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
-- Determinate Plural, eg KOXXIET
|
||||
-- Indeterminate Plural
|
||||
-- Gender
|
||||
mkNoun : (_,_,_,_,_ : Str) -> Gender -> Noun = \sing,coll,dual,det,ind,gen -> {
|
||||
mkNoun : (_,_,_,_,_ : Str) -> Gender -> (_,_ : Bool) -> Noun = \sing,coll,dual,det,ind,gen,hasColl,hasDual -> {
|
||||
s = table {
|
||||
Singulative => sing ;
|
||||
Collective => coll ;
|
||||
Dual => dual ;
|
||||
Plural => if_then_Str (isNil det) ind det
|
||||
Plural => det
|
||||
-- Plural => variants {det ; ind}
|
||||
} ;
|
||||
g = gen ;
|
||||
takesPron = False ;
|
||||
hasDual = notB (isNil dual) ;
|
||||
hasColl = notB (isNil coll) ;
|
||||
hasDual = hasDual ;
|
||||
hasColl = hasColl ;
|
||||
} ;
|
||||
|
||||
-- Noun phrase
|
||||
@@ -382,16 +402,17 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
|
||||
param
|
||||
PronForm =
|
||||
Personal -- JIENA
|
||||
| Possessive -- TIEGĦI
|
||||
| Suffixed PronCase
|
||||
Personal -- jiena
|
||||
| Possessive -- tiegħi
|
||||
| Suffixed -- qalb-i Only nouns!
|
||||
-- | Suffixed PronCase
|
||||
;
|
||||
|
||||
PronCase =
|
||||
Acc -- Accusative: rajtu
|
||||
| Dat -- Dative: rajtlu
|
||||
| Gen -- Genitive: qalbu
|
||||
;
|
||||
-- PronCase =
|
||||
-- Acc -- Accusative: rajtu
|
||||
-- | Dat -- Dative: rajtlu
|
||||
-- | Gen -- Genitive: qalbu
|
||||
-- ;
|
||||
|
||||
oper
|
||||
-- Interrogative pronoun
|
||||
@@ -404,13 +425,9 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
{- Verb ----------------------------------------------------------------- -}
|
||||
|
||||
oper
|
||||
-- Generic variants (used for verb stems)
|
||||
Variants3 : Type = {s1, s2, s3 : Str} ;
|
||||
|
||||
-- Shortcut functions for accessing stems
|
||||
stem1 : Variants3 -> Str = \stems -> stems.s1 ;
|
||||
stem2 : Variants3 -> Str = \stems -> stems.s2 ;
|
||||
stem3 : Variants3 -> Str = \stems -> stems.s3 ;
|
||||
|
||||
mkVariants3 : Variants3 = overload {
|
||||
mkVariants3 : (s1 : Str) -> Variants3 = \a -> { s1 = a ; s2 = a ; s3 = a } ;
|
||||
mkVariants3 : (s1, s2, s3 : Str) -> Variants3 = \a,b,c -> { s1 = a ; s2 = b ; s3 = c } ;
|
||||
@@ -420,6 +437,51 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
|
||||
NullVariants3 : Maybe Variants3 = Nothing Variants3 { s1 = [] ; s2 = [] ; s3 = [] } ;
|
||||
|
||||
NullAgr : Maybe Agr = Nothing Agr (agrP3 Sg Masc) ;
|
||||
|
||||
-- Direct object clitic
|
||||
DirObjVerbClitic : Type = {
|
||||
s1 : Str ;
|
||||
s2 : Str ;
|
||||
s3 : Str ;
|
||||
} ;
|
||||
|
||||
dirObjSuffix : Agr -> DirObjVerbClitic = \agr' ->
|
||||
let agr : VAgr = toVAgr agr' in
|
||||
case agr of {
|
||||
-- DO DO + .. DO + .. (Neg)
|
||||
AgP1 Sg => { s1="ni" ; s2="ni" ; s3="ni" } ;
|
||||
AgP2 Sg => { s1="ek" ; s2="ek" ; s3="k" } ;
|
||||
AgP3Sg Masc => { s1="u" ; s2="hu" ; s3="hu" } ;
|
||||
AgP3Sg Fem => { s1="ha" ; s2="hie" ; s3="hi" } ;
|
||||
AgP1 Pl => { s1="na" ; s2="nie" ; s3="hi" } ;
|
||||
AgP2 Pl => { s1="kom" ; s2="kom" ; s3="kom" } ;
|
||||
AgP3Pl => { s1="hom" ; s2="hom" ; s3="hom" }
|
||||
} ;
|
||||
|
||||
-- Indirect object clitic
|
||||
IndObjVerbClitic : Type = {
|
||||
s1 : Str ; -- ftaħt-ilha
|
||||
s2 : Str ; -- ftaħnie-lha
|
||||
s3 : Str ; -- ftaħt-ilhiex
|
||||
s4 : Str ; -- ftaħnie-lhiex
|
||||
} ;
|
||||
|
||||
-- Only for_Prep causes these to be used, thus it doesn't make sense to store this
|
||||
-- information in Prep.
|
||||
indObjSuffix : Agr -> IndObjVerbClitic = \agr' ->
|
||||
let agr : VAgr = toVAgr agr' in
|
||||
case agr of {
|
||||
-- IO IO + Neg IO IO + Neg
|
||||
AgP1 Sg => { s1="li" ; s2="li" ; s3="li" ; s4="li" } ;
|
||||
AgP2 Sg => { s1="lek" ; s2="lek" ; s3="lok" ; s4="lok" } ;
|
||||
AgP3Sg Masc => { s1="lu" ; s2="lu" ; s3="lu" ; s4="lu" } ;
|
||||
AgP3Sg Fem => { s1="lha" ; s2="lhie" ; s3="ilha" ; s4="ilhie" } ;
|
||||
AgP1 Pl => { s1="lna" ; s2="lnie" ; s3="ilna" ; s4="ilnie" } ;
|
||||
AgP2 Pl => { s1="lkom" ; s2="lkom" ; s3="ilkom" ; s4="ilkom" } ;
|
||||
AgP3Pl => { s1="lhom" ; s2="lhom" ; s3="ilhom" ; s4="ilhom" }
|
||||
} ;
|
||||
|
||||
-- Produce stem variants as needed (only call on compile-time strings!)
|
||||
-- Refer to doc/stems.org
|
||||
stemVariantsPerf : Str -> Variants3 = \s ->
|
||||
@@ -428,23 +490,27 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
ftahnie : Str = case s of {
|
||||
ftahn + "a" => ftahn + "ie" ;
|
||||
fet + h@#Cns + "et" => fet + h + "it" ;
|
||||
fet + "aħ" => fet + "ħ" ;
|
||||
_ => s
|
||||
} ;
|
||||
ftahni : Str = case s of {
|
||||
ftahn + "a" => ftahn + "i" ;
|
||||
_ => ftahnie
|
||||
} ;
|
||||
in
|
||||
{ s1 = ftahna ; s2 = ftahnie ; s3 = ftahni } ;
|
||||
in {
|
||||
s1 = ftahna ; s2 = ftahnie ; s3 = ftahni ;
|
||||
} ;
|
||||
|
||||
stemVariantsImpf : Str -> Variants3 = \s ->
|
||||
let
|
||||
ftahna : Str = s ;
|
||||
ftahnie : Str = case s of {
|
||||
nift + "aħ" => nift + "ħ" ;
|
||||
jiftah : Str = s ;
|
||||
jifth : Str = case s of {
|
||||
jift + "aħ" => jift + "ħ" ;
|
||||
_ => s
|
||||
} ;
|
||||
in
|
||||
{ s1 = ftahna ; s2 = ftahnie ; s3 = ftahna } ;
|
||||
in {
|
||||
s1 = jiftah ; s2 = jifth ; s3 = jifth ;
|
||||
} ;
|
||||
|
||||
-- Convert old verb form table into one with stem variants
|
||||
stemVariantsTbl : (VForm => Str) -> (VForm => Variants3) = \tbl ->
|
||||
@@ -529,56 +595,104 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
|
||||
oper
|
||||
|
||||
joinVariants3 : Variants3 -> Polarity -> Str = \stems,pol ->
|
||||
case <pol> of {
|
||||
<Pos> => stem1 stems ;
|
||||
<Neg> => stem2 stems ++ BIND ++ "x"
|
||||
} ;
|
||||
|
||||
-- Join verp phrase components into a string
|
||||
joinVP : VerbPhrase -> VPForm -> Anteriority -> Polarity -> Str = \vp,form,ant,pol ->
|
||||
let
|
||||
let
|
||||
stems = (vp.s ! form ! ant ! pol).main ;
|
||||
aux = (vp.s ! form ! ant ! pol).aux ;
|
||||
x : Str = "x" ;
|
||||
agr : VAgr = VPForm2VAgr form ;
|
||||
dir_a : Agr = fromJust Agr vp.dir ; -- These are lazy
|
||||
ind_a : Agr = fromJust Agr vp.ind ;
|
||||
dir = dirObjSuffix dir_a ;
|
||||
ind = indObjSuffix ind_a ;
|
||||
|
||||
ind_pos : Str = case <toVAgr dir_a, toVAgr ind_a> of {
|
||||
<AgP3Pl, AgP2 Sg> => ind.s3 ; -- hom-lok
|
||||
_ => ind.s1 -- hie-lek
|
||||
} ;
|
||||
ind_neg : Str = case <toVAgr dir_a, toVAgr ind_a> of {
|
||||
<AgP3Pl, AgP2 Sg> => ind.s4 ; -- hom-lokx
|
||||
_ => ind.s2 -- hie-lekx
|
||||
} ;
|
||||
in
|
||||
case takesAux form ant of {
|
||||
|
||||
-- aux is already negated for us
|
||||
True => aux ++ case <exists Variants3 vp.dir, exists Variants3 vp.ind> of {
|
||||
True => aux ++ case <exists Agr vp.dir, exists Agr vp.ind> of {
|
||||
|
||||
-- konna ftaħna / ma konniex ftaħna
|
||||
<False,False> => stems.s1 ;
|
||||
|
||||
-- konna ftaħnie-ha / ma konniex ftaħni-ha
|
||||
<True ,False> => stems.s2 ++ BIND ++ (fromJust Variants3 vp.dir).s1 ;
|
||||
<True ,False> => stems.s2 ++ BIND ++ dir.s1 ;
|
||||
|
||||
-- konna ftaħnie-lha / ma konniex ftaħni-lha
|
||||
<False,True > => stems.s2 ++ BIND ++ (fromJust Variants3 vp.ind).s1 ;
|
||||
<False,True > => stems.s2 ++ BIND ++ ind.s1 ;
|
||||
|
||||
-- konna ftaħni-hie-lha / ma konniex ftaħni-hi-lha
|
||||
<True, True > => stems.s3 ++ BIND ++ (fromJust Variants3 vp.dir).s2 ++ BIND ++ (fromJust Variants3 vp.ind).s1
|
||||
<True, True > => stems.s3 ++ BIND ++ dir.s2 ++ BIND ++ ind.s1
|
||||
|
||||
} ;
|
||||
|
||||
-- No aux part to handle
|
||||
False => aux ++ case <exists Variants3 vp.dir, exists Variants3 vp.ind, pol> of {
|
||||
False => aux ++ case isPerf form ant of {
|
||||
|
||||
-- ftaħna / ftaħnie-x
|
||||
<False,False,Pos> => stems.s1 ;
|
||||
<False,False,Neg> => stems.s2 ++ BIND ++ x ;
|
||||
True => case <exists Agr vp.dir, exists Agr vp.ind, pol> of {
|
||||
|
||||
-- ftaħnie-ha / ftaħni-hie-x
|
||||
<True ,False,Pos> => stems.s2 ++ BIND ++ (fromJust Variants3 vp.dir).s1 ;
|
||||
<True ,False,Neg> => stems.s3 ++ BIND ++ (fromJust Variants3 vp.dir).s2 ++ BIND ++ x ;
|
||||
-- ftaħna / ftaħnie-x
|
||||
<False,False,Pos> => stems.s1 ;
|
||||
<False,False,Neg> => stems.s2 ++ BIND ++ x ;
|
||||
|
||||
-- ftaħnie-lha / ftaħni-lhie-x
|
||||
<False,True ,Pos> => stems.s2 ++ BIND ++ (fromJust Variants3 vp.ind).s1 ;
|
||||
<False,True ,Neg> => stems.s3 ++ BIND ++ (fromJust Variants3 vp.ind).s2 ++ BIND ++ x ;
|
||||
-- ftaħnie-ha / ftaħni-hie-x
|
||||
<True ,False,Pos> => stems.s2 ++ BIND ++ dir.s1 ;
|
||||
<True ,False,Neg> => stems.s3 ++ BIND ++ dir.s2 ++ BIND ++ x ;
|
||||
|
||||
-- ftaħni-hie-lha / ftaħni-hi-lhie-x
|
||||
<True, True ,Pos> => stems.s3 ++ BIND ++ (fromJust Variants3 vp.dir).s2 ++ BIND ++ (fromJust Variants3 vp.ind).s1 ;
|
||||
<True, True ,Neg> => stems.s3 ++ BIND ++ (fromJust Variants3 vp.dir).s3 ++ BIND ++ (fromJust Variants3 vp.ind).s2 ++ BIND ++ x
|
||||
-- ftaħnie-lha / ftaħni-lhie-x
|
||||
<False,True ,Pos> => case <sing agr, femOrPlural ind_a> of {
|
||||
<True,True> => stems.s2 ++ BIND ++ ind.s3 ; -- fetħ-ilha
|
||||
<False,True> => stems.s2 ++ BIND ++ ind.s1 ; -- ftaħnie-lha
|
||||
_ => stems.s1 ++ BIND ++ ind.s1 -- fetaħ-li
|
||||
} ;
|
||||
<False,True ,Neg> => case <sing agr, femOrPlural ind_a> of {
|
||||
<True,True> => stems.s2 ++ BIND ++ ind.s4 ++ BIND ++ x ; -- fetħ-ilhiex
|
||||
<False,True> => stems.s3 ++ BIND ++ ind.s2 ++ BIND ++ x ; -- ftaħni-lhiex
|
||||
_ => stems.s1 ++ BIND ++ ind.s2 ++ BIND ++ x -- fetaħ-lix
|
||||
} ;
|
||||
|
||||
-- ftaħni-hie-lha / ftaħni-hi-lhie-x
|
||||
<True, True ,Pos> => stems.s2 ++ BIND ++ dir.s2 ++ BIND ++ ind_pos ;
|
||||
<True, True ,Neg> => stems.s3 ++ BIND ++ dir.s3 ++ BIND ++ ind_neg ++ BIND ++ x
|
||||
|
||||
} ;
|
||||
|
||||
False => case <exists Agr vp.dir, exists Agr vp.ind, pol> of {
|
||||
|
||||
-- jiftaħ / jiftaħ-x
|
||||
<False,False,Pos> => stems.s1 ;
|
||||
<False,False,Neg> => stems.s1 ++ BIND ++ x ;
|
||||
|
||||
-- jiftaħ-ha / jiftaħ-hie-x
|
||||
<True ,False,Pos> => stems.s1 ++ BIND ++ dir.s1 ;
|
||||
<True ,False,Neg> => stems.s1 ++ BIND ++ dir.s2 ++ BIND ++ x ;
|
||||
|
||||
-- jiftħ-ilha / jiftħ-ilhie-x
|
||||
<False,True ,Pos> => case <sing agr, femOrPlural ind_a> of {
|
||||
<True,True> => stems.s2 ++ BIND ++ ind.s3 ; -- jiftħ-ilha
|
||||
<False,True> => stems.s2 ++ BIND ++ ind.s1 ; -- jiftħu-lha
|
||||
_ => stems.s1 ++ BIND ++ ind.s1 -- jiftaħ-li
|
||||
} ;
|
||||
<False,True ,Neg> => case <sing agr, femOrPlural ind_a> of {
|
||||
<True,True> => stems.s2 ++ BIND ++ ind.s4 ++ BIND ++ x ; -- jiftħ-ilhiex
|
||||
<False,True> => stems.s2 ++ BIND ++ ind.s2 ++ BIND ++ x ; -- jiftħu-lhiex
|
||||
_ => stems.s1 ++ BIND ++ ind.s2 ++ BIND ++ x -- jiftaħ-lix
|
||||
} ;
|
||||
|
||||
-- jiftaħ-hie-lha / jiftaħ-hi-lhie-x
|
||||
<True, True ,Pos> => stems.s1 ++ BIND ++ dir.s2 ++ BIND ++ ind_pos ;
|
||||
<True, True ,Neg> => stems.s1 ++ BIND ++ dir.s3 ++ BIND ++ ind_neg ++ BIND ++ x
|
||||
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
@@ -599,6 +713,21 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
<VPImperat _, _> => False
|
||||
} ;
|
||||
|
||||
-- Does a tense + ant give a perfective verb?
|
||||
-- Must match with the logic in predV
|
||||
isPerf : VPForm -> Anteriority -> Bool = \vpf,ant ->
|
||||
case <vpf,ant> of {
|
||||
<VPIndicat Pres _, Simul> => False ;
|
||||
<VPIndicat Past _, Simul> => True ;
|
||||
<VPIndicat Fut _, Simul> => False ;
|
||||
<VPIndicat Cond _, Simul> => False ;
|
||||
<VPIndicat Pres _, Anter> => True ;
|
||||
<VPIndicat Past _, Anter> => True ;
|
||||
<VPIndicat Fut _, Anter> => True ;
|
||||
<VPIndicat Cond _, Anter> => False ;
|
||||
<VPImperat _, _> => False
|
||||
} ;
|
||||
|
||||
VerbParts : Type = {
|
||||
aux : Str ; -- when present, negation is applied here
|
||||
main : Variants3 ; -- enclitics always applied here
|
||||
@@ -611,12 +740,11 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
mkVerbParts : Str -> Str -> VerbParts = \a,m -> { aux = a ; main = mkVariants3 m } ;
|
||||
} ;
|
||||
|
||||
-- [AZ]
|
||||
VerbPhrase : Type = {
|
||||
s : VPForm => Anteriority => Polarity => VerbParts ;
|
||||
s2 : Agr => Str ; -- complement
|
||||
dir : Maybe Variants3 ; -- direct object clitic
|
||||
ind : Maybe Variants3 ; -- indirect object clitic
|
||||
dir : Maybe Agr ; -- direct object clitic
|
||||
ind : Maybe Agr ; -- indirect object clitic
|
||||
} ;
|
||||
|
||||
SlashVerbPhrase : Type = VerbPhrase ** {c2 : Compl} ;
|
||||
@@ -647,11 +775,18 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
insertObjc : (Agr => Str) -> SlashVerbPhrase -> SlashVerbPhrase = \obj,vp ->
|
||||
insertObj obj vp ** {c2 = vp.c2} ;
|
||||
|
||||
insertIndObj : Str -> VerbPhrase -> VerbPhrase = \ind,vp -> {
|
||||
insertDirObj : Agr -> VerbPhrase -> VerbPhrase = \dir,vp -> {
|
||||
s = vp.s ;
|
||||
s2 = vp.s2 ;
|
||||
dir = Just Agr dir ;
|
||||
ind = vp.ind ;
|
||||
};
|
||||
|
||||
insertIndObj : Agr -> VerbPhrase -> VerbPhrase = \ind,vp -> {
|
||||
s = vp.s ;
|
||||
s2 = vp.s2 ;
|
||||
dir = vp.dir ;
|
||||
ind = mkMaybeVariants3 ind ;
|
||||
ind = Just Agr ind ;
|
||||
};
|
||||
|
||||
insertAdV : Str -> VerbPhrase -> VerbPhrase = \adv,vp -> {
|
||||
@@ -722,8 +857,8 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
<VPImperat num, Neg> => mkVerbParts (copula_kien.s ! VImp num ! Neg) [] -- kunx
|
||||
} ;
|
||||
s2 = \\agr => [] ;
|
||||
dir = NullVariants3 ;
|
||||
ind = NullVariants3 ;
|
||||
dir = NullAgr ;
|
||||
ind = NullAgr ;
|
||||
} ;
|
||||
|
||||
-- [AZ]
|
||||
@@ -737,8 +872,6 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
case vpf of {
|
||||
VPIndicat tense vagr =>
|
||||
let
|
||||
-- kien = joinVP CopulaVP (VPIndicat Past vagr) Simul Pos ;
|
||||
-- kienx = joinVP CopulaVP (VPIndicat Past vagr) Simul Neg ;
|
||||
kien = copula_kien.s ! (VPerf vagr) ! Pos ;
|
||||
kienx = copula_kien.s ! (VPerf vagr) ! Neg ;
|
||||
nkun = copula_kien.s ! (VImpf vagr) ! Pos ;
|
||||
@@ -769,11 +902,8 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
VPImperat num => b1 (verb.s ! VImp num) -- torqodx
|
||||
};
|
||||
s2 = \\agr => [] ;
|
||||
dir = NullVariants3 ;
|
||||
ind = NullVariants3 ;
|
||||
-- a1 = [] ;
|
||||
-- n2 = \\_ => [] ;
|
||||
-- a2 = [] ;
|
||||
dir = NullAgr ;
|
||||
ind = NullAgr ;
|
||||
} ;
|
||||
|
||||
-- There is no infinitive in Maltese; use perfective
|
||||
|
||||
@@ -88,7 +88,7 @@ concrete SentenceMlt of Sentence = CatMlt ** open
|
||||
-- VP -> SC
|
||||
-- to go
|
||||
EmbedVP vp = {
|
||||
s = infVP vp Simul Pos (agrP3 Sg Masc) --- agr
|
||||
s = infVP vp Simul Pos (agrP3 Sg Masc)
|
||||
} ;
|
||||
|
||||
-- Temp -> Pol -> Cl -> S
|
||||
|
||||
@@ -15,13 +15,13 @@ concrete StructuralMlt of Structural = CatMlt **
|
||||
|
||||
{- Pronoun -------------------------------------------------------------- -}
|
||||
|
||||
i_Pron = mkPron "jien" "i" "ni" "li" singular P1 masculine ; --- also JIENA
|
||||
youSg_Pron = mkPron "int" "ek" "ek" "lek" singular P2 masculine ; --- also INTI
|
||||
he_Pron = mkPron "hu" "u" "hu" "lu" singular P3 masculine ; --- also HUWA
|
||||
she_Pron = mkPron "hi" "ha" singular P3 feminine ; --- also HIJA
|
||||
we_Pron = mkPron "aħna" "na" plural P1 masculine ;
|
||||
youPl_Pron = mkPron "intom" "kom" plural P2 masculine ;
|
||||
they_Pron = mkPron "huma" "hom" plural P3 masculine ;
|
||||
i_Pron = mkPron "jien" "i" singular P1 masculine ; --- also JIENA
|
||||
youSg_Pron = mkPron "int" "ek" singular P2 masculine ; --- also INTI
|
||||
he_Pron = mkPron "hu" "u" singular P3 masculine ; --- also HUWA
|
||||
she_Pron = mkPron "hi" "ha" singular P3 feminine ; --- also HIJA
|
||||
we_Pron = mkPron "aħna" "na" plural P1 masculine ;
|
||||
youPl_Pron = mkPron "intom" "kom" plural P2 masculine ;
|
||||
they_Pron = mkPron "huma" "hom" plural P3 masculine ;
|
||||
youPol_Pron = youSg_Pron ;
|
||||
it_Pron = he_Pron ;
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ concrete VerbMlt of Verb = CatMlt ** open Prelude, ResMlt in {
|
||||
|
||||
-- V2 -> VPSlash
|
||||
-- love (it)
|
||||
SlashV2a = predVc ;
|
||||
-- SlashV2a v2 = (predV v2) ** { c2 = noCompl } ; -- gets rid of the V2's prep
|
||||
-- SlashV2a = predVc ;
|
||||
SlashV2a v2 = (predV v2) ** { c2 = noCompl } ; -- gets rid of the V2's prep
|
||||
|
||||
-- V3 -> NP -> VPSlash
|
||||
-- give it (to her)
|
||||
@@ -68,17 +68,12 @@ concrete VerbMlt of Verb = CatMlt ** open Prelude, ResMlt in {
|
||||
<True,True> => {
|
||||
s = vp.s ;
|
||||
s2 = \\agr => vp.s2 ! agr ++ vp.c2.enclitic ! np.a ;
|
||||
dir = NullVariants3 ;
|
||||
ind = NullVariants3 ;
|
||||
dir = NullAgr ;
|
||||
ind = NullAgr ;
|
||||
} ;
|
||||
|
||||
-- Join pron to verb
|
||||
<True,False> => {
|
||||
s = vp.s ;
|
||||
s2 = \\agr => [] ;
|
||||
dir = mkMaybeVariants3 (np.s ! NPCPrep) ; --- we'll need to get all the variants direct from the NP
|
||||
ind = NullVariants3 ;
|
||||
} ;
|
||||
-- Add dir pron to verb
|
||||
<True,False> => insertDirObj np.a vp ;
|
||||
|
||||
-- <False,False> => {
|
||||
-- s = vp.s ;
|
||||
@@ -116,7 +111,7 @@ concrete VerbMlt of Verb = CatMlt ** open Prelude, ResMlt in {
|
||||
-- VP -> Adv -> VP
|
||||
-- sleep here
|
||||
AdvVP vp adv = case adv.joinsVerb of {
|
||||
True => insertIndObj (indObjSuffix adv.a) vp ;
|
||||
True => insertIndObj adv.a vp ;
|
||||
False => insertObj (\\_ => adv.s) vp
|
||||
} ;
|
||||
|
||||
@@ -127,31 +122,10 @@ concrete VerbMlt of Verb = CatMlt ** open Prelude, ResMlt in {
|
||||
-- VPSlash -> Adv -> VPSlash
|
||||
-- use (it) here
|
||||
AdvVPSlash vp adv = case adv.joinsVerb of {
|
||||
True => insertIndObj (indObjSuffix adv.a) vp ;
|
||||
True => insertIndObj adv.a vp ;
|
||||
False => insertObj (\\_ => adv.s) vp
|
||||
} ** {c2 = vp.c2} ;
|
||||
|
||||
oper
|
||||
|
||||
-- Only for_Prep causes these to be used, thus it doesn't make sense to store this
|
||||
-- information in Prep.
|
||||
indObjSuffix : Agr -> Str = \agr ->
|
||||
case (toVAgr agr) of {
|
||||
AgP1 Sg => "li" ;
|
||||
AgP2 Sg => "lek" ;
|
||||
AgP3Sg Masc => "lu" ;
|
||||
-- AgP3Sg Fem => "ilha" ;
|
||||
-- AgP1 Pl => "ilna" ;
|
||||
-- AgP2 Pl => "ilkom" ;
|
||||
-- AgP3Pl => "ilhom" --- need to introduce variants here too
|
||||
AgP3Sg Fem => "lha" ;
|
||||
AgP1 Pl => "lna" ;
|
||||
AgP2 Pl => "lkom" ;
|
||||
AgP3Pl => "lhom"
|
||||
} ;
|
||||
|
||||
lin
|
||||
|
||||
-- AdV -> VPSlash -> VPSlash
|
||||
-- always use (it)
|
||||
AdVVPSlash adv vp = insertAdV adv.s vp ** {c2 = vp.c2} ;
|
||||
@@ -162,7 +136,7 @@ concrete VerbMlt of Verb = CatMlt ** open Prelude, ResMlt in {
|
||||
|
||||
-- V2 -> VP
|
||||
-- be loved
|
||||
PassV2 v2 = insertObj (\\agr => stem1 (v2.s ! VPassivePart (toGenNum agr)) ++ v2.c2.s ! Definite) CopulaVP ;
|
||||
PassV2 v2 = insertObj (\\agr => (v2.s ! VPassivePart (toGenNum agr)).s1 ++ v2.c2.s ! Definite) CopulaVP ;
|
||||
|
||||
-- AP -> Comp
|
||||
-- (be) small
|
||||
|
||||
Reference in New Issue
Block a user