1
0
forked from GitHub/gf-core

Maltese RG: work on numerals, quants, dets, and enclitic pronouns with nouns

This commit is contained in:
john.j.camilleri
2013-02-13 16:18:09 +00:00
parent ffb17bd26a
commit 02169db183
28 changed files with 822 additions and 713 deletions

View File

@@ -1,7 +1,7 @@
-- AdjectiveMlt.gf: adjectives
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
concrete AdjectiveMlt of Adjective = CatMlt ** open ResMlt, Prelude in {

View File

@@ -1,7 +1,7 @@
-- AdverbMlt.gf: adverbial phrases
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
concrete AdverbMlt of Adverb = CatMlt ** open ResMlt, Prelude in {

View File

@@ -1,7 +1,7 @@
-- AllMlt.gf: common grammar plus language-dependent extensions
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
--# -path=.:prelude:../abstract:../common

View File

@@ -1,7 +1,7 @@
-- AllMlt.gf: common grammar plus language-dependent extensions
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
--# -path=.:prelude:../abstract:../common

View File

@@ -1,14 +1,10 @@
-- CatMlt.gf: the common type system
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Angelo Zammit 2012
-- Licensed under LGPL
{-
All code in comments was copied from CatEng.gf and may need to be corrected for Maltese.
The same overall structure should be maintained.
-}
concrete CatMlt of Cat = CommonX ** open ResMlt, Prelude in {
flags
@@ -56,7 +52,6 @@ concrete CatMlt of Cat = CommonX ** open ResMlt, Prelude in {
-- Adjective
-- AP = {s : Agr => Str ; isPre : Bool} ;
AP = {s : GenNum => Str ; isPre : Bool} ;
-- Noun
@@ -64,28 +59,44 @@ concrete CatMlt of Cat = CommonX ** open ResMlt, Prelude in {
CN = Noun ;
NP = NounPhrase ;
Pron = Pronoun ;
-- Pron = {s : NPCase => Str ; sp : Case => Str ; a : Agr} ;
Det = {s : Str ; n : Num_Number ; hasNum : Bool} ;
-- Det = {s : Str ; sp : NPCase => Str ; n : Number ; hasNum : Bool} ;
Det = Determiner ;
-- Predet = {s : Str} ;
-- Ord = { s : Case => Str } ;
Num = {s : Num_Case => Str ; n : Num_Number ; hasCard : Bool} ;
-- Card = {s : Case => Str ; n : Number} ;
-- Quant = {s : Bool => Number => Str ; sp : Bool => Number => NPCase => Str} ;
Quant = {s : Bool => Num_Number => Str} ;
Quant = Quantifier ;
-- Numeral
-- [AZ]
Num = {
s : NumCase => Str ;
n : NumForm ;
hasCard : Bool ;
-- isNum : Bool ;
} ;
-- Cardinal or ordinal in WORDS (not digits) [JJC]
-- [AZ]
Ord = {
s : NumCase => Str ;
-- s : NPCase => GenNum => Str ;
-- hasBSuperl : Bool
} ;
-- [AZ]
Card = {
s : NumCase => Str ;
n : NumForm ;
} ;
-- numeral
-- Cardinal or ordinal in WORDS (not digits)
Numeral = {
s : CardOrd => Num_Case => Str ;
n : Num_Number
s : CardOrd => NumCase => Str ;
n : NumForm -- number to be "treated as", e.g. 103 has n=Num3_10
} ;
-- Cardinal or ordinal in DIGITS (not words) [JJC]
-- Cardinal or ordinal in DIGITS (not words)
Digits = {
s : Str ; -- No need for CardOrd, i.e. no 1st, 2nd etc in Maltese
n : Num_Number ;
s : NumCase => Str ; -- No need for CardOrd, i.e. no 1st, 2nd etc in Maltese
n : NumForm ;
tail : DTail
};

View File

@@ -1,10 +1,11 @@
-- ConjunctionMlt.gf: co-ordination
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
concrete ConjunctionMlt of Conjunction = CatMlt ** open ResMlt, Coordination, Prelude in {
concrete ConjunctionMlt of Conjunction =
CatMlt ** open ResMlt, Coordination, Prelude in {
-- Adv
-- AP

View File

@@ -1,7 +1,7 @@
-- ExtraMlt.gf: extra stuff
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
concrete ExtraMlt of ExtraMltAbs = CatMlt **
@@ -9,9 +9,4 @@ concrete ExtraMlt of ExtraMltAbs = CatMlt **
flags coding=utf8 ;
-- lin
-- thigh_N = mkNounDual "koxxa" ;
-- sailor_N = mkNoun "baħri" ;
}

View File

@@ -1,13 +1,9 @@
-- ExtraMltAbs.gf: abstract grammar for extra stuff
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
abstract ExtraMltAbs = Cat ** {
-- fun
-- thigh_N : N ;
-- sailor_N : N ;
}

View File

@@ -1,7 +1,7 @@
-- GrammarMlt.gf: common syntax
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
--# -path=.:../abstract:../common:../prelude

View File

@@ -1,7 +1,7 @@
-- IdiomMlt.gf: idiomatic expressions
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
concrete IdiomMlt of Idiom = CatMlt ** open Prelude, ResMlt in {

View File

@@ -1,7 +1,7 @@
-- IrregMlt.gf: irregularly inflected words (mostly verbs)
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
--# -path=.:prelude:../abstract:../common

View File

@@ -1,19 +1,11 @@
-- IrregMltAbs.gf: abstract grammar for irregularly inflected words (mostly verbs)
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
--# -path=.:prelude:../abstract:../common
abstract IrregMltAbs = Cat ** {
{-
fun
awake_V : V ;
bear_V : V ;
beat_V : V ;
-}
}

View File

@@ -1,7 +1,7 @@
-- LangMlt.gf: common syntax and lexicon
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
--# -path=.:../abstract:../common:../prelude
@@ -11,6 +11,10 @@ concrete LangMlt of Lang =
LexiconMlt
** {
flags startcat = Phr ; unlexer = text ; lexer = text ; coding = utf8 ;
flags
coding = utf8 ;
startcat = Phr ;
unlexer = text ;
lexer = text ;
}

View File

@@ -1,13 +1,13 @@
-- LexiconMlt.gf: test lexicon of 300 content words
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
--# -path=.:../abstract:../common:../prelude
concrete LexiconMlt of Lexicon = CatMlt **
open Prelude, ParadigmsMlt, IrregMlt, DictMlt in {
open Prelude, ParadigmsMlt, IrregMlt in {
flags
optimize=values ;
@@ -17,347 +17,347 @@ concrete LexiconMlt of Lexicon = CatMlt **
-- add_V3
-- alas_Interj
-- already_Adv
animal_N = mkN "annimal" ;
answer_V2S = wiegeb_WGB_3_10033_V ;
apartment_N = mkN "appartament" ;
art_N = mkNNoPlural "arti" feminine ;
-- ashes_N = mkN "rmied" ;
ask_V2Q = saqsa_SQSJ_1_7268_V ;
baby_N = mkN "tarbija" "trabi" ;
back_N = mkN "dahar" "dhur" ; -- pronSuffix
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ħ" ;
animal_N = mkN "annimal" ;
answer_V2S = mkV_III "wieġeb" (mkRoot "w-ġ-b") ;
apartment_N = mkN "appartament" ;
art_N = mkNNoPlural "arti" feminine ;
-- ashes_N = mkN "rmied" ;
ask_V2Q = mkV "saqsa" (mkRoot "s-q-s-j") ;
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
beer_N = mkN "birra" "birer" ;
beer_N = mkN "birra" "birer" ;
-- beg_V2V
belly_N = mkN "żaqq" "żquq" ; -- pronSuffix
big_A = brokenA "kbir" "kbar" "ikbar" ;
bike_N = mkN "rota" ;
bird_N = mkN "għasfur" "għasafar" ; -- what about GĦASFURA?
bite_V2 = gidem_GDM_1_8009_V ;
black_A = mkA "iswed" "sewda" "suwed" ;
blood_N = mkN [] "demm" [] "dmija" [] ; -- pronSuffix
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 "żarbun" "żraben" ; -- what about ŻARBUNA?
boss_N = mkN "mgħallem" "mgħallmin" ;
boy_N = mkN "tifel" "tfal" ;
bread_N = mkNColl "ħobż" ;
break_V2 = kiser_KSR_1_8636_V ;
breast_N = mkN "sider" "sdur" ; -- also ISDRA -- pronSuffix
belly_N = possN (mkN "żaqq" "żquq") ;
big_A = brokenA "kbir" "kbar" "ikbar" ;
bike_N = mkN "rota" ;
bird_N = mkN "għasfur" "għasafar" ; -- feminine: GĦASFURA
bite_V2 = mkV "gidem" (mkRoot "g-d-m") ;
black_A = mkA "iswed" "sewda" "suwed" ;
blood_N = possN (mkN [] "demm" [] "dmija" []) ;
blow_V = mkV "nefaħ" (mkRoot "n-f-ħ") ;
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 = mkV "kiser" (mkRoot "k-s-r") ;
breast_N = possN (mkN "sider" "sdur") ; -- also ISDRA
-- breathe_V
broad_A = mkA "wiesgħa" "wiesgħa" "wiesgħin" ;
brother_N2 = mkN2 (mkN "ħu" "aħwa") ; -- pronSuffix
brown_A = sameA "kannella" ;
burn_V = haraq_HRQ_1_8367_V ;
butter_N = mkN [] "butir" [] "butirijiet" [] ;
buy_V2 = xtara_XRJ_8_10296_V ;
camera_N = mkN "kamera" "kameras" ;
cap_N = mkN "beritta" ;
car_N = mkN "karozza" ;
carpet_N = mkN "tapit" ; -- TAPITI or TWAPET ?
cat_N = mkN "qattus" "qtates" ; -- what about QATTUSA ?
ceiling_N = mkN "saqaf" "soqfa";
chair_N = mkN "siġġu" "siġġijiet" ;
cheese_N = mkNColl "ġobon" ;
-- child_N = mkN "tfajjel" ; -- Not an easy one...
church_N = mkN "knisja" "knejjes" ;
city_N = mkN "belt" "bliet" feminine ; -- pronSuffix
clean_A = brokenA "nadif" "nodfa" ;
clever_A = regA "bravu" ;
close_V2 = ghalaq_GHLQ_1_10530_V ;
cloud_N = mkNColl "sħab" ;
coat_N = mkN "kowt" "kowtijiet" ;
cold_A = mkA "kiesaħ" "kiesħa" "kesħin" ;
broad_A = mkA "wiesgħa" "wiesgħa" "wiesgħin" ;
brother_N2 = mkN2 (possN (mkN "ħu" "aħwa")) ;
brown_A = sameA "kannella" ;
burn_V = mkV "ħaraq" (mkRoot "ħ-r-q") ;
butter_N = mkN [] "butir" [] "butirijiet" [] ;
buy_V2 = mkV_VIII "xtara" (mkRoot "x-r-j") ;
camera_N = mkN "kamera" "kameras" ;
cap_N = mkN "beritta" ;
car_N = mkN "karozza" ;
carpet_N = mkN "tapit" "twapet" ; -- TAPITI
cat_N = mkN "qattus" "qtates" ; -- feminine: QATTUSA
ceiling_N = mkN "saqaf" "soqfa";
chair_N = mkN "siġġu" "siġġijiet" ;
cheese_N = mkNColl "ġobon" ;
-- child_N = mkN "tfajjel" ; -- Not an easy one...
church_N = mkN "knisja" "knejjes" ;
city_N = mkN "belt" "bliet" feminine ;
clean_A = brokenA "nadif" "nodfa" ;
clever_A = regA "bravu" ;
close_V2 = mkV "għalaq" (mkRoot "għ-l-q") ;
cloud_N = mkNColl "sħab" ;
coat_N = mkN "kowt" "kowtijiet" ;
cold_A = mkA "kiesaħ" "kiesħa" "kesħin" ;
-- come_V
computer_N = mkN "kompjuter" "kompjuters" ;
correct_A = regA "korrett" ;
count_V2 = ghadd_GHDD_1_10460_V ;
country_N = mkN "pajjiż" ; -- pronSuffix
cousin_N = mkN "kuġin" ; -- pronSuffix
cow_N = mkN "baqra" "baqar" "baqartejn" [] [] ;
cut_V2 = qata'_QTGH_1_9305_V ;
day_N = mkN "ġurnata" "ġranet" ;
dig_V = hafer_HFR_1_8233_V ;
dirty_A = regA "maħmuġ" ;
distance_N3 = mkN "distanza" ;
do_V2 = ghamel_GHML_1_10544_V ;
doctor_N = mkN "tabib" "tobba" ; -- what about TABIBA ?
dog_N = mkN "kelb" "klieb" ;
door_N = mkN "bieb" "bibien" ; -- what about BIEBA ?
drink_V2 = 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 = mkNDual "widna" ; -- pronSuffix
earth_N = mkN "art" "artijiet" feminine ;
computer_N = mkN "kompjuter" "kompjuters" ;
correct_A = regA "korrett" ;
count_V2 = mkV "għadd" (mkRoot "għ-d-d") ;
country_N = possN (mkN "pajjiż") ;
cousin_N = possN (mkN "kuġin") ; -- feminine: KUĠINA
cow_N = mkN "baqra" "baqar" "baqartejn" [] [] ;
cut_V2 = mkV "qata'" (mkRoot "q-t-għ") ;
day_N = mkN "ġurnata" "ġranet" ;
dig_V = mkV "ħafer" (mkRoot "ħ-f-r") ;
dirty_A = regA "maħmuġ" ;
distance_N3 = mkN "distanza" ;
do_V2 = mkV "għamel" (mkRoot "għ-m-l") ;
doctor_N = mkN "tabib" "tobba" ; -- feminine: TABIBA
dog_N = mkN "kelb" "klieb" ;
door_N = mkN "bieb" "bibien" ;
drink_V2 = mkV "xorob" (mkRoot "x-r-b") ;
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
-- eat_V2
egg_N = mkNColl "bajd" ;
empty_A = mkA "vojt" "vojta" "vojta" ;
enemy_N = mkN "għadu" "għedewwa" ;
eye_N = mk5N "għajn" [] "għajnejn" "għajnejn" "għejun" feminine ; -- pronSuffix
factory_N = mkN "fabbrika" ;
fall_V = waqa'_WQGH_1_10070_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 = mkV "waqa'" (mkRoot "w-q-għ") ;
-- far_Adv
fat_N = mkNColl "xaħam" ;
father_N2 = mkN2 (mkN "missier" "missierijiet") ; -- pronSuffix
fat_N = mkNColl "xaħam" ;
father_N2 = mkN2 (possN (mkN "missier" "missierijiet")) ;
-- fear_V2
-- fear_VS
feather_N = mkNColl "rix" ;
fight_V2 = ggieled_GLD_6_8074_V ;
find_V2 = sab_SJB_1_9779_V ;
fingernail_N = mkN "difer" [] "difrejn" "dwiefer" [] ; -- pronSuffix
fire_N = mkN "nar" "nirien" ;
fish_N = mkNColl "ħut" ;
feather_N = mkNColl "rix" ;
fight_V2 = mkV_VI "ġġieled" (mkRoot "ġ-l-d") ;
find_V2 = mkV "sab" (mkRoot "s-j-b") ;
fingernail_N = possN (mkN "difer" [] "difrejn" "dwiefer" []) ;
fire_N = mkN "nar" "nirien" ;
fish_N = mkNColl "ħut" ;
-- float_V
earth_N = mkN "art" "artijiet" feminine ;
earth_N = mkN "art" "artijiet" feminine ;
-- flow_V
flower_N = mkN "fjura" ;
fly_V = tar_TJR_1_9972_V ;
fog_N = mkN [] "ċpar" [] [] [] ;
foot_N = mk5N "sieq" [] "saqajn" "saqajn" [] feminine ; -- pronSuffix
forest_N = mkN "foresta" ; -- also MASĠAR
forget_V2 = nesa_NSJ_1_9126_V ;
flower_N = mkN "fjura" ;
fly_V = mkV "tar" (mkRoot "t-j-r") ;
fog_N = mkN [] "ċpar" [] [] [] ;
foot_N = possN (mk5N "sieq" [] "saqajn" "saqajn" [] feminine) ;
forest_N = mkN "foresta" ; -- also MASĠAR
forget_V2 = mkV "nesa" (mkRoot "n-s-j") ;
-- freeze_V
fridge_N = mkN "friġġ" "friġġijiet" ;
friend_N = mkN "ħabib" "ħbieb" ; -- pronSuffix
fruit_N = mkNColl "frott" ;
full_A = regA "mimli" ;
fridge_N = mkN "friġġ" "friġġijiet" ;
friend_N = possN (mkN "ħabib" "ħbieb") ; -- feminine: ĦABIBA
fruit_N = mkNColl "frott" ;
full_A = regA "mimli" ;
-- fun_AV
garden_N = mkN "ġnien" "ġonna" ;
girl_N = mkN "tifla" "tfal" ;
garden_N = mkN "ġnien" "ġonna" ;
girl_N = mkN "tifla" "tfal" ;
-- give_V3
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 = mkN "musrana" [] [] "musraniet" "msaren" ; -- pronSuffix
hair_N = mkN "xagħar" [] [] "xagħariet" "xgħur" ; -- pronSuffix
hand_N = mk5N "id" [] "idejn" "idejn" [] feminine ; -- pronSuffix
harbour_N = mkN "port" "portijiet" ;
hat_N = mkN "kappell" "kpiepel" ;
glove_N = mkN "ingwanta" ;
go_V = mkV "mar" (mkRoot "m-w-r") ;
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
head_N = mkN "ras" "rjus" feminine ; -- pronSuffix
hear_V2 = sema'_SMGH_1_9698_V ;
heart_N = mkN "qalb" "qlub" feminine ; -- pronSuffix
heavy_A = brokenA "tqil" "tqal" "itqal" ;
hill_N = mkN "għolja" "għoljiet" ;
hit_V2 = laqat_LQT_1_8772_V ;
head_N = possN (mkN "ras" "rjus" feminine) ;
hear_V2 = mkV "sema'" (mkRoot "s-m-għ") ;
heart_N = possN (mkN "qalb" "qlub" feminine) ;
heavy_A = brokenA "tqil" "tqal" "itqal" ;
hill_N = mkN "għolja" "għoljiet" ;
hit_V2 = mkV "laqat" (mkRoot "l-q-t") ;
-- hold_V2
hope_VS = xtaq_XWQ_8_10313_V ;
horn_N = mkN "ħorn" "ħornijiet" ;
horse_N = mkN "żiemel" "żwiemel" ;
hot_A = brokenA "sħun" "sħan" ;
house_N = mkN "dar" "djar" feminine ;
hope_VS = mkV_VIII "xtaq" (mkRoot "x-w-q") ;
horn_N = mkN "ħorn" "ħornijiet" ;
horse_N = mkN "żiemel" "żwiemel" ;
hot_A = brokenA "sħun" "sħan" ;
house_N = mkN "dar" "djar" feminine ;
-- hunt_V2
husband_N = mkN "raġel" "rġiel" ; -- pronSuffix ŻEWĠI
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 = qatel_QTL_1_9312_V ;
king_N = mkN "re" "rejjiet" ;
knee_N = mkN "rkoppa" [] "rkopptejn" "rkoppiet" [] ; -- TODO use mkNDual -- pronSuffix
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 = mkV "qabeż" (mkRoot "q-b-ż") ;
kill_V2 = mkV "qatel" "oqtol" (mkRoot "q-t-l") ;
king_N = mkN "re" "rejjiet" ;
knee_N = possN (mkN "rkoppa" [] "rkopptejn" "rkoppiet" []) ; -- TODO use mkNDual
-- know_V2
-- know_VQ
-- know_VS
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 = tghallem_GHLM_5_10527_V ;
leather_N = mkN "ġilda" "ġild" [] "ġildiet" "ġlud" ; -- mkNColl "ġild" ;
leave_V2 = telaq_TLQ_1_9903_V ;
lake_N = mkN "għadira" "għadajjar" ;
lamp_N = mkN "lampa" ;
language_N = mkN "lingwa" ; -- lsien?
laugh_V = mkV "daħak" (mkRoot "d-ħ-k") ;
leaf_N = mkN "werqa" "weraq" "werqtejn" "werqiet" [] ;
learn_V2 = mkV_V "tgħallem" (mkRoot "għ-l-m") ;
leather_N = mkN "ġilda" "ġild" [] "ġildiet" "ġlud" ; -- mkNColl "ġild" ;
leave_V2 = mkV "telaq" (mkRoot "t-l-q") ;
-- left_Ord
leg_N = mkN "riġel" [] "riġlejn" [] [] ; -- sieq? -- pronSuffix
lie_V = mtedd_MDD_8_8816_V ;
leg_N = possN (mkN "riġel" [] "riġlejn" [] []) ; -- SIEQ
lie_V = mkV_VIII "mtedd" (mkRoot "m-d-d") ;
-- like_V2
listen_V2 = sema'_SMGH_1_9698_V ;
live_V = ghex_GHJX_1_10711_V ;
liver_N = mkN "fwied" [] [] [] "ifdwa" ; -- pronSuffix
long_A = brokenA "twil" "twal" "itwal" ;
lose_V2 = tilef_TLF_1_9895_V ;
louse_N = mkN "qamla" "qamliet" ;
love_N = mkN "mħabba" "mħabbiet" ; -- hmmm
love_V2 = habb_HBB_1_8174_V ;
man_N = mkN "raġel" "rġiel" ;
listen_V2 = mkV "sema'" (mkRoot "s-m-għ") ;
live_V = mkV "għex" (mkRoot "għ-j-x") ;
liver_N = mkN "fwied" [] [] [] "ifdwa" ;
long_A = brokenA "twil" "twal" "itwal" ;
lose_V2 = mkV "tilef" (mkRoot "t-l-f") ;
louse_N = mkN "qamla" "qamliet" ;
love_N = mkN "mħabba" "mħabbiet" ;
love_V2 = mkV "ħabb" (mkRoot "ħ-b-b") ;
man_N = mkN "raġel" "rġiel" ;
-- married_A2
meat_N = mkN "laħam" [] [] "laħmiet" "laħmijiet" ;
milk_N = mkN [] "ħalib" [] "ħalibijiet" "ħlejjeb" ;
moon_N = mkN "qamar" "oqmra" ; -- qmura?
mother_N2 = mkN2 (mkN "omm" "ommijiet" feminine) ; -- pronSuffix
mountain_N = mkN "muntanja" ;
mouth_N = mkN "ħalq" "ħluq" ; -- pronSuffix
music_N = mkN "musika" ; -- plural?
name_N = mkN "isem" "ismijiet" ; -- pronSuffix
narrow_A = mkA "dejjaq" "dejqa" "dojoq" "idjaq" ;
near_A = regA "viċin" ;
neck_N = mkN "għonq" "għenuq" ; -- pronSuffix
new_A = brokenA "ġdid" "ġodda" ;
newspaper_N = mkN "gazzetta" ;
night_N = mkN "lejl" "ljieli" ;
nose_N = mkN "mnieħer" "mniħrijiet" ; -- pronSuffix
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 = mkNNoPlural "musika" ;
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
number_N = mkN "numru" ;
oil_N = mkN "żejt" "żjut" ;
old_A = brokenA "qadim" "qodma" "eqdem" ;
open_V2 = fetah_FTH_1_7932_V ;
number_N = mkN "numru" ;
oil_N = mkN "żejt" "żjut" ;
old_A = brokenA "qadim" "qodma" "eqdem" ;
open_V2 = mkV "fetaħ" (mkRoot "f-t-ħ") ;
-- paint_V2A
paper_N = mkN "karta" ;
-- paris_PN
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 = laghab_LGHB_1_8724_V ;
play_V2 = daqq_DQQ_1_7736_V ;
policeman_N = mkNNoPlural "pulizija" ;
priest_N = mkN "qassis" "qassisin" ;
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 = mkV "lagħab" (mkRoot "l-għ-b") ;
play_V = mkV "lagħab" (mkRoot "l-għ-b") ;
policeman_N = mkNNoPlural "pulizija" ;
priest_N = mkN "qassis" "qassisin" ;
-- probable_AS
pull_V2 = gibed_GBD_1_8043_V ;
pull_V2 = mkV "ġibed" (mkRoot "ġ-b-d") ;
-- push_V2
put_V2 = 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" ;
put_V2 = mkV_III "qiegħed" (mkRoot "q-għ-d") ;
queen_N = mkN "reġina" "rġejjen" ;
question_N = mkN "mistoqsija" "mistoqsijiet" ; -- DOMANDA
radio_N = mkN "radju" "radjijiet" ;
rain_N = mkNNoPlural "xita" ;
-- rain_V0
read_V2 = 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" ;
read_V2 = mkV "qara" (mkRoot "q-r-j") ;
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
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" ;
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
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" ;
rubber_N = mkN "gomma" "gomom" ;
rule_N = mkN "regola" ;
run_V = mkV "ġera" (mkRoot "ġ-r-j") ;
salt_N = mkN "melħ" "melħiet" ;
sand_N = mkN "ramla" "ramel" [] "ramliet" "rmiel" ;
-- say_VS
school_N = mkN "skola" "skejjel" ;
science_N = mkN "xjenza" ;
scratch_V2 = barax_BRX_1_7504_V ;
sea_N = mkN "baħar" [] "baħrejn" "ibħra" [] ;
school_N = mkN "skola" "skejjel" ;
science_N = mkN "xjenza" ;
scratch_V2 = mkV "barax" (mkRoot "b-r-x") ;
sea_N = mkN "baħar" [] "baħrejn" "ibħra" [] ;
-- see_V2
seed_N = mkN "żerriegħa" "żerrigħat" ;
seek_V2 = fittex_FTX_2_7952_V ;
sell_V3 = biegh_BJGH_1_7565_V ;
send_V3 = baghat_BGHT_1_7412_V ;
sew_V = hat_HJT_1_8508_V ;
sharp_A = mkA "jaqta" "taqta" "jaqtgħu" ; -- TODO: apostrophe?
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 = mkN "oħt" "aħwa" feminine ; -- pronSuffix
sit_V = pogga_PGJ_2_9157_V ;
skin_N = mkN "ġilda" "ġildiet" ;
sky_N = mkN "sema" "smewwiet" masculine ;
sleep_V = mkV "raqad" (mkRoot "r-q-d") ;
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" ;
seed_N = mkN "żerriegħa" "żerrigħat" ;
seek_V2 = mkV_II "fittex" (mkRoot "f-t-x") ;
sell_V3 = mkV "biegħ" (mkRoot "b-j-għ") ;
send_V3 = mkV "bagħat" (mkRoot "b-għ-t") ;
sew_V = mkV "ħat" (mkRoot "ħ-j-t") ;
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 = mkV "kanta" (mkRoot "k-n-t-j") ;
sister_N = possN (mkN "oħt" "aħwa" feminine) ;
sit_V = mkV_II "poġġa" (mkRoot "p-ġ-j") ;
skin_N = mkN "ġilda" "ġildiet" ;
sky_N = mkN "sema" "smewwiet" masculine ;
sleep_V = mkV "raqad" (mkRoot "r-q-d") ;
small_A = brokenA "zgħir" "zgħar" "iżgħar" ;
smell_V = mkV "xamm" (mkRoot "x-m-m") ;
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
spit_V = bezaq_BZQ_1_7549_V ;
split_V2 = qasam_QSM_1_9292_V ;
spit_V = mkV "beżaq" (mkRoot "b-ż-q") ;
split_V2 = mkV "qasam" (mkRoot "q-s-m") ;
-- squeeze_V2
stab_V2 = mewwes_MWS_2_8921_V ;
stab_V2 = mkV_II "mewwes" (mkRoot "m-w-s") ;
-- stand_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" ; -- these are really nouns...
suck_V2 = 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 = tefa_TFJ_1_9960_V ;
switch8on_V2 = xeghel_XGHL_1_10155_V ;
table_N = mkN "mejda" "mwejjed" ;
tail_N = mkN "denb" "dnieb" ; -- pronSuffix
star_N = mkN "stilla" "stilel" ;
steel_N = mkNNoPlural "azzar" ;
stick_N = mkN "lasta" ;
stone_N = mkN "ġebla" "ġebel" [] "ġebliet" "ġbiel" ;
stop_V = mkV "waqaf" (mkRoot "w-q-f") ;
stove_N = mkN "kuker" "kukers" ; -- FUKLAR
straight_A = regA "dritt" ;
student_N = mkN "student" ;
stupid_A = mkA "iblah" "belha" "boloh" ;
suck_V2 = mkV "rada'" (mkRoot "r-d-għ") ;
sun_N = mkN "xemx" "xmux" feminine ;
swell_V = mkV_VIII "ntefaħ" (mkRoot "n-f-ħ") ;
swim_V = mkV "għam" (mkRoot "għ-w-m") ;
switch8off_V2 = mkV "tefa" (mkRoot "t-f-j") ;
switch8on_V2 = mkV "xegħel" (mkRoot "x-għ-l") ;
table_N = mkN "mejda" "mwejjed" ;
tail_N = possN (mkN "denb" "dnieb") ;
-- talk_V3
teach_V2 = ghallem_GHLM_2_10526_V ;
teacher_N = mkN "għalliem" "għalliema" ; -- 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 = waddab_WDB_2_10027_V ;
tie_V2 = qafel_QFL_1_9206_V ;
teach_V2 = mkV_II "għallem" (mkRoot "għ-l-m") ;
teacher_N = mkN "għalliem" "għalliema" ; -- feminine: GĦALLIEMA
television_N = mkN "televixin" "televixins" ;
thick_A = mkA "oħxon" "ħoxna" "ħoxnin" "eħxen" ;
thin_A = brokenA "rqiq" "rqaq" "rqaq" ;
think_V = mkV "ħaseb" (mkRoot "ħ-s-b") ;
throw_V2 = mkV_II "waddab" (mkRoot "w-d-b") ;
tie_V2 = mkV "qafel" (mkRoot "q-f-l") ;
-- today_Adv
tongue_N = mkN "lsien" "ilsna" ; -- pronSuffix
tooth_N = mkN "sinna" [] [] "sinniet" "snien" ; -- darsa? -- pronSuffix
train_N = mkN "ferrovija" ;
tongue_N = possN (mkN "lsien" "ilsna") ;
tooth_N = possN (mkN "sinna" [] [] "sinniet" "snien") ; -- DARSA
train_N = mkN "ferrovija" ;
-- travel_V
tree_N = mkN "siġra" "siġar" [] "siġriet" [] ;
turn_V = dar_DWR_1_7803_V ;
ugly_A = mkA "ikrah" "kerha" "koroh" ; -- ikreh?
uncertain_A = regA "inċert" ;
tree_N = mkN "siġra" "siġar" [] "siġriet" [] ;
turn_V = mkV "dar" (mkRoot "d-w-r") ;
ugly_A = mkA "ikrah" "kerha" "koroh" ;
uncertain_A = regA "inċert" ;
-- understand_V2 --- missing from dict
university_N = mkN "università" "universitàjiet" ;
village_N = mkN "raħal" "rħula" ; -- villaġġ ? -- pronSuffix
vomit_V = qala'_QLGH_1_9223_V ;
university_N = mkN "università" "universitàjiet" ;
village_N = possN (mkN "raħal" "rħula") ; -- VILLAĠĠ
vomit_V = mkV "qala'" (mkRoot "q-l-għ") ;
-- wait_V2
walk_V = mexa_MXJ_1_8926_V ;
war_N = mkN "gwerra" "gwerrer" ;
warm_A = hot_A ;
wash_V2 = hasel_HSL_1_8395_V ;
walk_V = mkV "mexa" (mkRoot "m-x-j") ;
war_N = mkN "gwerra" "gwerrer" ;
warm_A = hot_A ;
wash_V2 = mkV "ħasel" (mkRoot "ħ-s-l") ;
-- watch_V2
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" ; -- pronSuffix MARTI
win_V2 = 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 = mesah_MSH_1_8881_V ;
woman_N = mkN "mara" "nisa" ;
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 = mkV "rebaħ" (mkRoot "r-b-ħ") ;
wind_N = mkN "riħ" [] [] "rjieħ" "rjiħat" ;
window_N = mkN "tieqa" "twieqi" ;
wine_N = mkN [] "nbid" [] [] "nbejjed" ;
wing_N = mkN "ġewnaħ" "ġwienaħ" ;
wipe_V2 = mkV "mesaħ" (mkRoot "m-s-ħ") ;
woman_N = mkN "mara" "nisa" ;
-- wonder_VQ
wood_N = mkN "injam" "injamiet" ;
worm_N = mkN "dudu" "dud" [] "dudiet" "dwied" ; -- duda
write_V2 = kiteb_KTB_1_8641_V ;
year_N = mkN "sena" [] "sentejn" "snin" [] ; -- pronSuffix SNINI (only plural though!)
yellow_A = mkA "isfar" "safra" "sofor" ;
young_A = small_A ;
wood_N = mkN "injam" "injamiet" ;
worm_N = mkN "dudu" "dud" [] "dudiet" "dwied" ;
write_V2 = mkV "kiteb" (mkRoot "k-t-b") ;
year_N = mkN "sena" [] "sentejn" "snin" [] ;
yellow_A = mkA "isfar" "safra" "sofor" ;
young_A = small_A ;
} ;

View File

@@ -1,7 +1,7 @@
-- MorphoMlt.gf: scary morphology operations which need their own elbow space
--
-- Maltese Resource Grammar Library
-- John J. Camilleri 2009 -- 2013
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Angelo Zammit 2012
-- Licensed under LGPL
@@ -12,6 +12,17 @@ resource MorphoMlt = ResMlt ** open Prelude in {
coding=utf8 ;
{- Determiners ---------------------------------------------------------- -}
oper
mkDeterminer : Number -> Str -> Determiner = \n,s -> {
s = \\gen => s ;
n = Num n ; -- Number -> NumForm
clitic = [] ;
hasNum = False ;
isPron = False ;
} ;
{- Pronoun -------------------------------------------------------------- -}
oper
@@ -19,14 +30,14 @@ resource MorphoMlt = ResMlt ** open Prelude in {
mkPron = overload {
-- jiena, inti, huwa
mkPron : (_,_,_,_,_,_ : Str) -> Number -> Person -> Gender -> Pronoun =
\jien, _i, _ja, _ek, _k, _li, num, pers, gen -> {
mkPron : (_,_,_,_ : Str) -> Number -> Person -> Gender -> Pronoun =
\jien, _i, _ni, _li, num, pers, gen -> {
s = table {
Personal => {c1 = jien ; c2 = []} ;
Possessive => {c1 = "tiegħ" + _i ; c2 = []} ;
Suffixed Acc => {c1 = _ek ; c2 = _k} ; -- rajtek, rak
Suffixed Dat => {c1 = _li ; c2 = []} ; -- rajtli
Suffixed Gen => {c1 = _i ; c2 = _ja} -- qalbi, idejja
Personal => jien ; -- jien
Possessive => "tiegħ" + _i ; -- tiegħi
Suffixed Acc => _ni ; -- rajtni
Suffixed Dat => _li ; -- rajtli
Suffixed Gen => _i -- qalbi, idejja
} ;
a = mkAgr gen num pers ;
} ;
@@ -35,11 +46,11 @@ resource MorphoMlt = ResMlt ** open Prelude in {
mkPron : (_,_ : Str) -> Number -> Person -> Gender -> Pronoun =
\hi, _ha, num, pers, gen -> {
s = table {
Personal => {c1 = hi ; c2 = []} ;
Possessive => {c1 = "tagħ" + _ha ; c2 = []} ;
Suffixed Acc => {c1 = _ha ; c2 = []} ;
Suffixed Dat => {c1 = "l"+_ha ; c2 = []} ;
Suffixed Gen => {c1 = _ha ; c2 = []}
Personal => hi ; -- hi
Possessive => "tagħ" + _ha ; -- tagħha
Suffixed Acc => _ha ; -- rajtha
Suffixed Dat => "l"+_ha ; -- rajtilha
Suffixed Gen => _ha -- qalbha
} ;
a = mkAgr gen num pers ;
} ;

View File

@@ -1,7 +1,8 @@
-- NounMlt.gf: noun phrases and nouns
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Angelo Zammit 2012
-- Licensed under LGPL
concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in {
@@ -9,30 +10,89 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in {
flags
optimize=noexpand ;
oper
-- Used in DetCN below
chooseNounNumForm : Det -> CN -> Str = \det,n ->
let
det' = det.s ! n.g ;
sing = n.s ! Singular Singulative ;
coll = if_then_Str n.hasColl
(n.s ! Singular Collective) -- BAQAR
(n.s ! Plural Determinate) -- SNIEN
;
dual = n.s ! Dual ;
pdet = n.s ! Plural Determinate ;
pind = n.s ! Plural Indeterminate ;
in case det.n of {
Num Sg => det' ++ sing ; -- BAQRA
Num Pl => det' ++ coll ; -- BAQAR (coll) / ħafna SNIEN (pdet)
Num0 => det' ++ sing ; -- L-EBDA BAQRA
Num1 => det' ++ sing ; -- BAQRA
Num2 => if_then_Str n.hasDual
dual -- BAQARTEJN
(det' ++ pdet) -- ŻEWĠ IRĠIEL
;
Num3_10 => det' ++ coll ; -- TLETT BAQAR
Num11_19 => det' ++ sing ; -- ĦDAX-IL BAQRA
Num20_99 => det' ++ sing -- GĦOXRIN BAQRA
} ;
lin
-- Det -> CN -> NP
DetCN det cn = {
s = \\c => det.s ++ cn.s ! numnum2nounnum det.n ;
a = case (numnum2nounnum det.n) of {
s = \\c => case <det.isPron, cn.takesPron> of {
<True,True> => glue (cn.s ! numform2nounnum det.n) det.clitic ;
<True,_> => artDef ++ cn.s ! numform2nounnum det.n ++ det.s ! cn.g ;
_ => chooseNounNumForm det cn
} ;
a = case (numform2nounnum det.n) of {
Singular _ => mkAgr cn.g Sg P3 ;
_ => mkAgr cn.g Pl P3
_ => mkAgr cn.g Pl P3
} ;
isPron = False ;
} ;
-- Quant -> Num -> Det
DetQuant quant num = {
s = quant.s ! num.hasCard ! num.n ++ num.s ! NumNominative;
n = num.n ;
hasNum = num.hasCard
s = \\gen =>
let gennum = case num.n of { Num Sg => GSg gen ; _ => GPl }
in case quant.isDemo of {
True => quant.s ! gennum ++ artDef ++ num.s ! NumAdj ;
False => quant.s ! gennum ++ num.s ! NumAdj
} ;
n = num.n ;
hasNum = num.hasCard ;
isPron = quant.isPron ;
clitic = quant.clitic ;
} ;
-- Quant -> Num -> Ord -> Det
--- Almost an exact copy of DetQuant, consider factoring together
DetQuantOrd quant num ord = {
s = \\gen =>
let gennum = case num.n of { Num Sg => GSg gen ; _ => GPl }
in case quant.isDemo of {
True => quant.s ! gennum ++ artDef ++ num.s ! NumAdj ++ ord.s ! NumAdj ;
False => quant.s ! gennum ++ num.s ! NumAdj ++ ord.s ! NumAdj
} ;
n = num.n ;
hasNum = True ;
isPron = quant.isPron ;
clitic = quant.clitic ;
} ;
-- Quant
DefArt = {
s = \\hasCard,n => artDef ;
s = \\_ => artDef ;
clitic = [] ;
isPron = False ;
isDemo = False ;
} ;
IndefArt = {
s = \\hasCard,n => artIndef ;
s = \\_ => artIndef ;
clitic = [] ;
isPron = False ;
isDemo = False ;
} ;
-- PN -> NP
@@ -44,18 +104,40 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in {
-- Pron -> NP
UsePron p = {
-- s = \\npcase => (p.s ! Personal).c1 ;
s = table {
Nom => (p.s ! Personal).c1 ;
CPrep => (p.s ! Suffixed Acc).c1
Nom => p.s ! Personal ;
CPrep => p.s ! Suffixed Acc
} ;
a = p.a ;
isPron = True ;
} ;
-- Pron -> Quant
PossPron p = {
s = \\_ => p.s ! Possessive ;
clitic = p.s ! Suffixed Gen ;
isPron = True ;
isDemo = False ;
} ;
-- Num
NumSg = {s = \\c => []; n = Num_Sg ; hasCard = False} ;
NumPl = {s = \\c => []; n = Num_Pl ; hasCard = False} ;
NumSg = {s = \\c => []; n = Num Sg ; hasCard = False} ;
NumPl = {s = \\c => []; n = Num Pl ; hasCard = False} ;
-- Card -> Num
NumCard n = n ** {hasCard = True} ;
-- Digits -> Card
NumDigits d = {s = d.s ; n = d.n} ;
-- Digits -> Ord
OrdDigits d = {s = d.s} ;
-- Numeral -> Card
NumNumeral numeral = {s = numeral.s ! NCard; n = numeral.n} ;
-- Numeral -> Ord
OrdNumeral numeral = {s = numeral.s ! NOrd} ;
-- N -> CN
UseN n = n ;

View File

@@ -1,7 +1,7 @@
-- NumeralMlt.gf: cardinals and ordinals
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt in {
@@ -12,11 +12,6 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt
-- Dig, Digits
{-
-- This code taken from examples/numerals/maltese.sty in GF darcs repository, July 2011.
-- Original author unknown
-- ABSTRACT definitions copied from lib/src/abstract/Numeral.gf
-- Numerals from 1 to 999999 in decimal notation
cat
Numeral ; -- 0..
@@ -46,18 +41,18 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt
pot3 : Sub1000 -> Sub1000000 ; -- m * 1000
pot3plus : Sub1000 -> Sub1000 -> Sub1000000 ; -- m * 1000 + n
-}
oper
--- I have a strong suspicion that these can be better factored, esp wrt thou
Form1 = {
s : DForm => CardOrd => Num_Case => Str ;
--thou : CardOrd => Str ;
s : DForm => CardOrd => NumCase => Str ;
thou : { s : Str ; treatAs : DForm } ;
n : Num_Number ;
n : NumForm ;
} ;
Form2 = {
s : CardOrd => Num_Case => Str ;
--thou : CardOrd => Str ;
s : CardOrd => NumCase => Str ;
thou : { s : Str ; treatAs : DForm } ;
n : Num_Number ;
n : NumForm ;
f : DForm ;
} ;
@@ -72,75 +67,74 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt
oper
-- Make a "number" (in this case a Form1)
-- Should be moved to ResMlt ?
-- Params:
-- unit, eg TNEJN
-- ordinal unit (without article), eg TIENI
-- adjectival, eg ŻEWĠ
-- teen, eg TNAX
-- ten, eg GĦOXRIN
-- number, eg Num_Dl
--mkNum : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Num_Number -> Form1 = \unit,ordunit,adjectival,teen,ten,hundred,thousand,num -> {
mkNum : Str -> Str -> Str -> Str -> Str -> Num_Number -> Form1 = \unit,ordunit,adjectival,teen,ten,num ->
-- number, eg Num2
mkNum : Str -> Str -> Str -> Str -> Str -> NumForm -> Form1 = \unit,ordunit,adjectival,teen,ten,num ->
let
hundred = case num of {
Num_Sg => "mija" ;
Num_Dl => "mitejn" ;
Num1 => "mija" ;
Num2 => "mitejn" ;
_ => adjectival
} ;
thousand = case num of {
Num_Sg => "wieħed" ;
Num_Dl => "elfejn" ;
Num1 => "wieħed" ;
Num2 => "elfejn" ;
_ => case adjectival of {
_ + "'" => (init adjectival) + "t" ; -- eg SEBA' -> SEBAT
_ + "t" => adjectival ; -- eg SITT -> SITT
_ => adjectival + "t" -- eg ĦAMES -> ĦAMEST
_ + "'" => (init adjectival) + "t" ; -- SEBA' -> SEBAT
_ + "t" => adjectival ; -- SITT -> SITT
_ => adjectival + "t" -- ĦAMES -> ĦAMEST
}
}
in {
s = table {
Unit => table {
NCard => table {
NumNominative => unit ; -- eg TNEJN
NumAdjectival => adjectival -- eg ŻEWĠ
NumNom => unit ; -- TNEJN
NumAdj => case num of {
Num1 => "" ; -- [] baqra
_ => adjectival -- ŻEWĠ baqar
}
} ;
NOrd => \\numcase => artDef ++ ordunit -- eg IT-TIENI
NOrd => \\numcase => ordunit -- TIENI
} ;
Teen => table {
NCard => table {
NumNominative => teen ; -- eg TNAX
NumAdjectival => teen + "-il" -- eg TNAX-IL
NumNom => teen ; -- TNAX
NumAdj => glue teen "-il" -- TNAX-IL
} ;
NOrd => table {
NumNominative => artDef ++ teen ; -- eg IT-TNAX
NumAdjectival => artDef ++ (teen + "-il") -- eg IT-TNAX-IL
NumNom => teen ; -- TNAX
NumAdj => glue teen "-il" -- TNAX-IL
}
} ;
Ten => table {
NCard => \\numcase => ten ; -- eg TLETIN
NOrd => \\numcase => artDef ++ ten -- eg IT-TLETIN
} ;
Hund => table {
Ten => \\cardord,numcase => ten ; -- TLETIN
-- Hund, Thou
_ => table {
NCard => case num of {
Num_Sg => table {
NumNominative => "mija" ; -- ie MIJA
NumAdjectival => "mitt" -- ie MITT suldat
Num1 => table {
NumNom => "mija" ; -- MIJA
NumAdj => "mitt" -- MITT suldat
} ;
Num_Dl => \\numcase => hundred ; -- ie MITEJN
Num2 => \\numcase => hundred ; -- MITEJN
_ => table {
NumNominative => hundred ++ "mija" ; -- eg MIJA, SEBA' MIJA
NumAdjectival => hundred ++ "mitt" -- eg MITT, SEBA' MITT suldat
NumNom => hundred ++ "mija" ; -- MIJA, SEBA' MIJA
NumAdj => hundred ++ "mitt" -- MITT, SEBA' MITT suldat
}
} ;
NOrd => case num of {
Num_Sg => table {
NumNominative => artDef ++ "mija" ; -- ie IL-MIJA
NumAdjectival => artDef ++ "mitt" -- ie IL-MITT suldat
Num1 => table {
NumNom => "mija" ; -- MIJA
NumAdj => "mitt" -- MITT suldat
} ;
Num_Dl => \\numcase => artDef ++ hundred ; -- ie IL-MITEJN, IL-MITEJN suldat
Num2 => \\numcase => hundred ; -- MITEJN, MITEJN suldat
_ => table {
NumNominative => artDef ++ hundred ++ "mija" ; -- eg IS-SEBA' MIJA
NumAdjectival => artDef ++ hundred ++ "mitt" -- eg IS-SEBA' MITT suldat
NumNom => hundred ++ "mija" ; -- SEBA' MIJA
NumAdj => hundred ++ "mitt" -- SEBA' MITT suldat
}
}
}
@@ -152,62 +146,59 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt
lin
-- Unit Ord.Unit Adjectival Teen Ten Number
n2 = mkNum "tnejn" "tieni" "żewġ" "tnax" "għoxrin" Num_Dl ;
n3 = mkNum "tlieta" "tielet" "tlett" "tlettax" "tletin" Num_Pl ; -- TODO tlett / tliet ?
n4 = mkNum "erbgħa" "raba'" "erba'" "erbatax" "erbgħin" Num_Pl ;
n5 = mkNum "ħamsa" "ħames" "ħames" "ħmistax" "ħamsin" Num_Pl ;
n6 = mkNum "sitta" "sitt" "sitt" "sittax" "sittin" Num_Pl ;
n7 = mkNum "sebgħa" "seba'" "seba'" "sbatax" "sebgħin" Num_Pl ;
n8 = mkNum "tmienja" "tmin" "tmin" "tmintax" "tmenin" Num_Pl ;
n9 = mkNum "disgħa" "disa'" "disa'" "dsatax" "disgħin" Num_Pl ;
n2 = mkNum "tnejn" "tieni" "żewġ" "tnax" "għoxrin" Num2 ;
n3 = mkNum "tlieta" "tielet" "tlett" "tlettax" "tletin" Num3_10 ; --- TODO tlett / tliet ?
n4 = mkNum "erbgħa" "raba'" "erba'" "erbatax" "erbgħin" Num3_10 ;
n5 = mkNum "ħamsa" "ħames" "ħames" "ħmistax" "ħamsin" Num3_10 ;
n6 = mkNum "sitta" "sitt" "sitt" "sittax" "sittin" Num3_10 ;
n7 = mkNum "sebgħa" "seba'" "seba'" "sbatax" "sebgħin" Num3_10 ;
n8 = mkNum "tmienja" "tmin" "tmin" "tmintax" "tmenin" Num3_10 ;
n9 = mkNum "disgħa" "disa'" "disa'" "dsatax" "disgħin" Num3_10 ;
oper
-- Helper functions for below
mkForm2 : Form2 = overload {
-- Infer adjectival, thousands
mkForm2 : Str -> Str -> DForm -> Form2 = \card,ord,form -> {
mkForm2 : Str -> Str -> DForm -> NumForm -> Form2 = \card,ord,dform,numform -> {
s = table {
NCard => \\numcase => card ;
NOrd => \\numcase => ord
} ;
--thou = card ;
thou = { s = card ; treatAs = form } ;
n = Num_Pl ;
f = form ;
thou = { s = card ; treatAs = dform } ;
n = numform ;
f = dform ;
} ;
-- Explicit everything
mkForm2 : Str -> Str -> Str -> Str -> DForm -> Form2 = \card,ord,adj,thousand,form -> {
mkForm2 : Str -> Str -> Str -> Str -> DForm -> NumForm -> Form2 = \card,ord,adj,thousand,dform,numform -> {
s = table {
NCard => table {
NumNominative => card ;
NumAdjectival => adj
NumNom => card ;
NumAdj => adj
} ;
--NOrd => \\numcase => addDefiniteArticle ord
NOrd => table {
NumNominative => artDef ++ ord ;
NumAdjectival => artDef ++ adj
NumNom => ord ;
NumAdj => adj
}
} ;
--thou = thousand ;
thou = { s = thousand ; treatAs = form } ;
n = Num_Pl ;
f = form ;
thou = { s = thousand ; treatAs = dform } ;
n = numform ;
f = dform ;
} ;
-- Given an existing table
mkForm2 : (CardOrd => Num_Case => Str) -> DForm -> Form2 = \tab,form -> {
mkForm2 : (CardOrd => NumCase => Str) -> DForm -> NumForm -> Form2 = \tab,dform,numform -> {
s = tab ;
thou = {
s = case form of {
Teen => tab ! NCard ! NumAdjectival ;
_ => tab ! NCard ! NumNominative
s = case dform of {
Teen => tab ! NCard ! NumAdj ;
_ => tab ! NCard ! NumNom
} ;
treatAs = form ;
treatAs = dform ;
} ;
n = Num_Pl ;
f = form ;
n = numform ;
f = dform ;
} ;
}; -- end of mkForm2 overload
@@ -219,39 +210,18 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt
-- Sub10 ; 1
-- Unit Ord.Unit Adjectival Teen Ten Number
pot01 = mkNum "wieħed" "ewwel" "wieħed" [] [] Num_Sg ;
pot01 = mkNum "wieħed" "ewwel" "wieħed" [] [] Num1 ;
-- Digit -> Sub10 ; d * 1
pot0 d = d ** {n = case d.n of { Num_Dl => Num_Dl ; _ => Num_Pl } } ;
pot0 d = d ** {n = case d.n of { Num2 => Num2 ; _ => Num3_10 }} ;
-- Sub100 ; 10, 11
-- Cardinal Ordinal Adjectival Thousand Form
pot110 = mkForm2 "għaxra" "għaxar" "għaxar" "għaxart" Unit ;
pot111 = mkForm2 "ħdax" "ħdax" "ħdax-il" "ħdax-il" Teen ;
{-
pot110 = {
s = table {
NCard => table {
NumNominative => "għaxra" ;
NumAdjectival => "għaxar"
} ;
NOrd => \\numcase => addDefiniteArticle "għaxar"
} ;
thou = table {
NCard => "għaxart" ;
NOrd => addDefiniteArticle "għaxart"
} ;
n = Num_Pl ;
f = Ten ;
} ;
-}
pot110 = mkForm2 "għaxra" "għaxar" "għaxar" "għaxart" Unit Num3_10 ;
pot111 = mkForm2 "ħdax" "ħdax" (glue "ħdax" "-il") (glue "ħdax" "-il") Teen Num11_19 ;
-- Digit -> Sub100 ; 10 + d
pot1to19 d =
mkForm2
(d.s ! Teen)
Teen
;
pot1to19 d = mkForm2 (d.s ! Teen) Teen Num11_19 ;
-- Sub10 -> Sub100 ; coercion of 1..9
pot0as1 d = {
@@ -263,18 +233,27 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt
-- Digit -> Sub100 ; d * 10
pot1 d =
mkForm2
(d.s ! Ten)
Ten
;
let
numform : NumForm = case d.n of {
Num1 => Num3_10 ;
_ => Num20_99
}
in mkForm2 (d.s ! Ten) Ten numform ;
-- Digit -> Sub10 -> Sub100 ; d * 10 + n
pot1plus d n =
let unit = (n.s ! Unit ! NCard ! NumNominative) in
let
unit = (n.s ! Unit ! NCard ! NumNom) ;
numform : NumForm = case d.n of {
Num1 => Num11_19 ;
_ => Num20_99
}
in
mkForm2
(unit ++ "u" ++ (d.s ! Ten ! NCard ! NumNominative))
(artDef ++ unit ++ "u" ++ (d.s ! Ten ! NCard ! NumNominative))
(unit ++ "u" ++ (d.s ! Ten ! NCard ! NumNom))
(unit ++ "u" ++ (d.s ! Ten ! NCard ! NumNom))
Ten
numform
;
-- Sub100 -> Sub1000 ; coercion of 1..99
@@ -285,39 +264,33 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt
s = m.s ! Hund ;
thou = {
s = case m.n of {
Num_Sg => "mitt" ; -- Special case for "mitt elf"
Num_Dl => "mitejn" ; -- Special case for "mitejn elf"
Num1 => "mitt" ; -- Special case for "mitt elf"
Num2 => "mitejn" ; -- Special case for "mitejn elf"
_ => m.thou.s
} ;
treatAs = Hund ;
} ;
n = Num_Pl ;
n = Num0 ;
f = Hund ;
} ;
-- Sub10 -> Sub100 -> Sub1000 ; m * 100 + n
pot2plus m n =
let
hund : Str = m.s ! Hund ! NCard ! NumNominative
hund : Str = m.s ! Hund ! NCard ! NumNom ;
in {
s = table {
NCard => table {
NumNominative => hund ++ "u" ++ n.s ! NCard ! NumNominative ;
NumAdjectival => hund ++ "u" ++ n.s ! NCard ! NumAdjectival
s = \\cardord,numcase => case n.n of {
Num1 => hund ++ "u" ;
_ => hund ++ "u" ++ n.s ! NCard ! numcase
} ;
NOrd => table {
NumNominative => artDef ++ hund ++ "u" ++ n.s ! NCard ! NumNominative ;
NumAdjectival => artDef ++ hund ++ "u" ++ n.s ! NCard ! NumAdjectival
}
} ;
thou = {
s = hund ++ "u" ++ n.thou.s ;
treatAs = case n.n of {
Num_Sg => Ten ; -- specific case for mija u wiehed elf
_ => n.f -- eg So that "106,000" is treated as "6,000"
Num1 => Ten ; -- specific case for mija u wiehed elf
_ => n.f -- So that "106,000" is treated as "6,000"
} ;
} ;
n = Num_Pl ;
n = case n.n of { Num2 => Num3_10 ; _ => n.n } ;
f = Hund ;
} ;
@@ -328,27 +301,17 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt
pot3 m = {
s =
case <m.n, m.thou.treatAs> of {
<Num_Sg ,_> => numTable "elf" ; -- 1 * 1000
<Num_Dl,_> => numTable "elfejn" ; -- 2 * 2000
<Num_Pl ,Unit> => numTable m.thou.s "elef" ; -- 3-10 * 1000
<Num_Pl ,_> => numTable m.thou.s "elf" -- 11+ * 1000
<Num1,_> => numTable "elf" ; -- 1 * 1000
<Num2,_> => numTable "elfejn" ; -- 2 * 1000
<_,Unit> => numTable m.thou.s "elef" ; -- 3-10 * 1000
<_,_> => numTable m.thou.s "elf" -- 11+ * 1000
} ;
{-
case m.f of {
Unit => numTable m.thou "elef" ; --
_ => case m.n of {
Num_Sg => numTable "elf" ; --
Num_Dl => numTable "elfejn" ; --
Num_Pl => numTable m.thou "elf" --
}
} ;
-}
thou = {
s = m.thou.s ;
treatAs = m.f ;
} ;
n = Num_Pl ;
f = Hund ; -- NOT IMPORTANT
n = Num0 ;
f = Thou ; -- NOT IMPORTANT
} ;
-- Sub1000 -> Sub1000 -> Sub1000000 ; m * 1000 + n
@@ -356,70 +319,37 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt
s =
let
ukemm = table {
NumNominative => "u" ++ (n.s ! NCard ! NumNominative) ;
NumAdjectival => "u" ++ (n.s ! NCard ! NumAdjectival)
NumNom => "u" ++ (n.s ! NCard ! NumNom) ;
NumAdj => "u" ++ (n.s ! NCard ! NumAdj)
}
in
case <m.n, m.thou.treatAs> of {
<Num_Sg ,_> => numTable "elf" ukemm ;
<Num_Dl,_> => numTable "elfejn" ukemm ;
<Num_Pl ,Unit> => numTable (m.thou.s ++ "elef") ukemm ;
<Num_Pl ,_> => numTable (m.thou.s ++ "elf") ukemm
<Num1,_> => numTable "elf" ukemm ;
<Num2,_> => numTable "elfejn" ukemm ;
<_,Unit> => numTable (m.thou.s ++ "elef") ukemm ;
<_,_> => numTable (m.thou.s ++ "elf") ukemm
} ;
{-
Num_Sg => elf2 "elf" ukemm ;
Num_Dl => elf2 "elfejn" ukemm ;
Num_Pl => case m.f of {
Unit => elf2 m.thou ("elef" ++ ukemm) ;
_ => elf2 m.thou ("elf" ++ ukemm)
}
-}
thou = {
s = m.thou.s ;
treatAs = m.f ;
} ;
n = Num_Pl ;
n = case n.n of { Num2 => Num3_10 ; _ => n.n } ;
f = Hund ; -- NOT IMPORTANT
} ;
oper
-- Build "x thousand" table
numTable : (CardOrd => Num_Case => Str) = overload {
numTable : (CardOrd => NumCase => Str) = overload {
numTable : Str -> (CardOrd => Num_Case => Str) = \thou -> table {
NCard => \\numcase => thou ;
NOrd => \\numcase => artDef ++ thou
} ;
numTable : Str -> (CardOrd => NumCase => Str) = \thou ->
\\cardord,numcase => thou ;
numTable : Str -> Str -> (CardOrd => Num_Case => Str) = \thou,attach -> table {
NCard => \\numcase => thou ++ attach ;
NOrd => \\numcase => artDef ++ thou ++ attach
} ;
numTable : Str -> (Num_Case => Str) -> (CardOrd => Num_Case => Str) = \thou,attach -> table {
NCard => table {
NumNominative => thou ++ (attach ! NumNominative) ;
NumAdjectival => thou ++ (attach ! NumAdjectival)
} ;
NOrd => table {
NumNominative => artDef ++ thou ++ (attach ! NumNominative) ;
NumAdjectival => artDef ++ thou ++ (attach ! NumAdjectival)
}
} ;
numTable : Str -> Str -> (CardOrd => NumCase => Str) = \thou,attach ->
\\cardord,numcase => thou ++ attach ;
numTable : Str -> (NumCase => Str) -> (CardOrd => NumCase => Str) = \thou,attach ->
\\cardord,numcase => thou ++ (attach ! numcase) ;
} ;
{-
-- elf : (CardOrd => Str) = overload {
elf : Str -> (CardOrd => Num_Case => Str) = \m -> table {
NCard => \\numcase => m ;
NOrd => \\numcase => addDefiniteArticle m
} ;
elf2 : Str -> Str -> (CardOrd => Num_Case => Str) = \m,n -> table {
NCard => \\numcase => m ++ n ;
NOrd => \\numcase => (addDefiniteArticle m) ++ n
} ;
-}
-- } ;
{-
Numerals as sequences of digits have a separate, simpler grammar
@@ -438,22 +368,17 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt
lincat
Dig = {
s : Str ;
n : Num_Number
s : NumCase => Str ;
n : NumForm ;
-- i : Int ; -- internal counter
} ;
oper
-- Helper for making a Dig object. Specifying no number inplies plural.
mkDig : Dig = overload {
mkDig : Str -> Dig = \digit -> lin Dig {
s = digit ;
n = Num_Pl
-- Helper for making a Dig object.
mkDig : Str -> NumForm -> Dig = \digit,num -> lin Dig {
s = \\numcase => digit ;
n = num
} ;
mkDig : Str -> Num_Number -> Dig = \digit,num -> lin Dig {
s = digit ;
n = num
} ;
} ;
-- For correct comma placement in Digits
commaIf : DTail -> Str = \t -> case t of {
@@ -467,25 +392,46 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt
} ;
lin
D_0 = mkDig "0" ;
D_1 = mkDig "1" Num_Sg ;
D_2 = mkDig "2" Num_Dl ;
D_3 = mkDig "3" ;
D_4 = mkDig "4" ;
D_5 = mkDig "5" ;
D_6 = mkDig "6" ;
D_7 = mkDig "7" ;
D_8 = mkDig "8" ;
D_9 = mkDig "9" ;
-- Dig
D_0 = mkDig "0" Num0 ;
D_1 = mkDig "1" Num1 ;
D_2 = mkDig "2" Num2 ;
D_3 = mkDig "3" Num3_10 ;
D_4 = mkDig "4" Num3_10 ;
D_5 = mkDig "5" Num3_10 ;
D_6 = mkDig "6" Num3_10 ;
D_7 = mkDig "7" Num3_10 ;
D_8 = mkDig "8" Num3_10 ;
D_9 = mkDig "9" Num3_10 ;
-- Create Digits from a Dig
-- Dig -> Digits
IDig d = d ** {tail = T1} ;
-- Create Digits from combining Dig with Digits
IIDig d i = {
s = d.s ++ (commaIf i.tail) ++ i.s ;
n = Num_Pl ;
tail = inc i.tail
} ;
-- Dig -> Digits -> Digits
IIDig d i =
let
digits = d.s ! NumNom ++ (commaIf i.tail) ++ i.s ! NumNom;
numform = case <d.n,i.n> of {
<Num0,num> => num ; -- 0 x
<Num1,Num0> => Num3_10 ; -- 1 0
<Num1,_> => Num11_19 ; -- 1 1
<Num2,_> => Num20_99 ; -- 2 x
<Num3_10,_> => Num20_99 ; -- [3-9] x
<Num20_99,_> => Num20_99 ;
<_,_> => Num20_99 --- how to handle overwrap? see i:Int in lincat Dig above
} ;
in {
s = table {
NumNom => digits ;
NumAdj => case numform of {
Num11_19 => glue digits "-il" ;
_ => digits
}
} ;
n = numform ;
tail = inc i.tail
} ;
}

View File

@@ -1,7 +1,8 @@
-- ParadigmsMlt.gf: morphological paradigms
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Angelo Zammit 2012
-- Licensed under LGPL
--# -path=.:../abstract:../../prelude:../common
@@ -110,7 +111,6 @@ resource ParadigmsMlt = open
mkN : Str -> Str -> Gender -> N = \sing,plural,gender ->
mk5N sing [] [] plural [] gender ;
-- Takes all 5 forms, inferring gender
-- Params:
-- Singulative, eg KOXXA
@@ -184,14 +184,38 @@ resource ParadigmsMlt = open
-- Build a noun using 5 forms, and a gender
mk5N : (_,_,_,_,_ : Str) -> Gender -> N ;
mk5N = \sing,coll,dual,det,ind,gen -> lin N (mkNoun sing coll dual det ind gen) ;
mk5N = \sing,coll,dual,det,ind,gen -> lin N (
mkNoun sing coll dual det ind gen
) ;
-- Make a proper noun
-- Proper noun
mkPN : Str -> Gender -> Number -> ProperNoun = \name,g,n -> {
s = name ;
a = mkAgr g n P3 ;
} ;
mkN2 = overload {
mkN2 : N -> Prep -> N2 = prepN2 ;
mkN2 : N -> Str -> N2 = \n,s -> prepN2 n (mkPrep s);
-- mkN2 : Str -> Str -> N2 = \n,s -> prepN2 (regN n) (mkPrep s);
mkN2 : N -> N2 = \n -> prepN2 n (mkPrep "ta'") ;
-- mkN2 : Str -> N2 = \s -> prepN2 (regN s) (mkPrep "ta'")
} ;
prepN2 : N -> Prep -> N2 ;
prepN2 = \n,p -> lin N2 (n ** {c2 = p.s}) ;
-- Mark a noun as taking possessive enclitic pronouns
possN : N -> N ;
-- possN = \n -> n ** { takesPron = True } ;
possN = \n -> lin N {
s = n.s ;
g = n.g ;
hasColl = n.hasColl ;
hasDual = n.hasDual ;
takesPron = True ;
} ;
{-
-- Correctly abbreviate definite prepositions and join with noun
-- Params:
@@ -254,21 +278,12 @@ resource ParadigmsMlt = open
});
mkN2 = overload {
mkN2 : N -> Prep -> N2 = prepN2 ;
mkN2 : N -> Str -> N2 = \n,s -> prepN2 n (mkPrep s);
-- mkN2 : Str -> Str -> N2 = \n,s -> prepN2 (regN n) (mkPrep s);
mkN2 : N -> N2 = \n -> prepN2 n (mkPrep "ta'") ;
-- mkN2 : Str -> N2 = \s -> prepN2 (regN s) (mkPrep "ta'")
} ;
prepN2 : N -> Prep -> N2 ;
prepN2 = \n,p -> lin N2 (n ** {c2 = p.s}) ;
{- Prepositions ------------------------------------------------------- -}
mkPrep : Str -> Prep ; -- e.g. "in front of"
noPrep : Prep ; -- no preposition
mkPrep p = lin Prep (ss p) ;
noPrep : Prep ; -- no preposition
noPrep = mkPrep [] ;
@@ -1043,4 +1058,18 @@ resource ParadigmsMlt = open
_ => (init fem) + "i" -- BRAVA
} ;
{- Quantitifer paradigms ---------------------------------------------- -}
mkQuant : (dak, dik, dawk : Str) -> Bool -> Quant = \dak,dik,dawk,isdemo -> lin Quant {
s = table {
GSg Masc => dak ;
GSg Fem => dik ;
GPl => dawk
} ;
clitic = [] ;
isPron = False ;
isDemo = isdemo ;
} ;
}

View File

@@ -1,8 +0,0 @@
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Licensed under LGPL
resource PatternsMlt = {
flags coding=utf8 ;
}

View File

@@ -1,7 +1,7 @@
-- PhraseMlt.gf: suprasentential phrases
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
concrete PhraseMlt of Phrase = CatMlt ** open ParamX, Prelude, ResMlt in {

View File

@@ -1,7 +1,7 @@
-- QuestionMlt.gf: questions and interrogatives
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
concrete QuestionMlt of Question = CatMlt ** open ResMlt, ParamX, Prelude in {

View File

@@ -1,7 +1,7 @@
-- RelativeMlt.gf: relational clauses and pronouns
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
concrete RelativeMlt of Relative = CatMlt ** open ResMlt in {

View File

@@ -1,7 +1,7 @@
-- ResMlt.gf: Language-specific parameter types, morphology, VP formation
--
-- Maltese Resource Grammar Library
-- John J. Camilleri 2009 -- 2013
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Angelo Zammit 2012
-- Licensed under LGPL
@@ -68,26 +68,65 @@ resource ResMlt = ParamX ** open Prelude, Predef in {
CardOrd = NCard | NOrd ;
-- Order of magnitude
DForm =
Unit -- 0..10
| Teen -- 11-19
--| TeenIl -- 11-19
| Ten -- 20-99
| Hund -- 100..999
--| Thou -- 1000+
Unit -- 0..10
| Teen -- 11..19
| Ten -- 20..99
| Hund -- 100..999
| Thou -- 1000+
;
Num_Number =
Num_Sg
| Num_Dl
| Num_Pl
-- Indicate how a corresponding object should be treated
--- Overlap between Num Sg and Num1, but leaving as is for now
NumForm =
Num Number -- Sg | Pl
| Num0 -- 0 (l-edba SIEGĦA)
| Num1 -- 1, 101... (SIEGĦA, mija u SIEGĦA)
| Num2 -- 2 (SAGĦTEJN)
| Num3_10 -- 3..10, 102, 103... (tlett SIEGĦAT, għaxar SIEGĦAT, mija u żewġ SIEGĦAT, mija u tlett SIEGĦAT)
| Num11_19 -- 11..19, 111... (ħdax-il SIEGĦA, mija u dsatax-il SIEGĦA)
| Num20_99 -- 20..99, 120... (għoxrin SIEGĦA, disa' u disgħajn SIEGĦA)
;
Num_Case =
NumNominative -- TNEJN, ĦAMSA, TNAX, MIJA
| NumAdjectival -- ŻEWĠ, ĦAMES, TNAX-IL, MITT
NumCase =
NumNom -- "Type B" in {MDG, 133}, e.g. TNEJN, ĦAMSA, TNAX, MIJA
| NumAdj -- "Type A" in {MDG, 133}, e.g. ŻEWĠ, ĦAMES, TNAX-IL, MITT
;
{- Determiners etc. ----------------------------------------------------- -}
oper
-- [AZ]
Determiner : Type = {
s : Gender => Str ;
n : NumForm ;
clitic : Str ;
hasNum : Bool ;
isPron : Bool ;
} ;
-- Determiner = {
-- s : NPCase => Gender => NumCase => Str ;
-- s2 : NPCase => Gender => Str ; -- tieghi (possessive pronoun)
-- -- size : Num_Size ; -- One (agreement feature for noun)
-- isNum : Bool ; -- True (a numeral is present)
-- isDemo : Bool ; -- True (is a demostrative)
-- isDefn : Bool ;-- True (is definite)
-- } ;
-- [AZ]
Quantifier : Type = {
s : GenNum => Str ;
clitic : Str ;
isPron : Bool ;
isDemo : Bool ; -- Demonstrative (this/that/those/these)
} ;
-- Quantifier = {
-- s : NPCase => Gender => NumForm => Str ;
-- s2 : NPCase => Gender => NumForm => Str ;
-- isDemo : Bool ; -- Demonstrative (this/that/those/these)
-- isDefn : Bool ;
-- } ;
{- Nouns ---------------------------------------------------------------- -}
@@ -95,6 +134,9 @@ resource ResMlt = ParamX ** open Prelude, Predef in {
Noun : Type = {
s : Noun_Number => Str ;
g : Gender ;
hasColl : Bool ; -- has a collective form? e.g. BAQAR
hasDual : Bool ; -- has a dual form? e.g. SAGĦTEJN
takesPron : Bool ; -- takes enclitic pronon? e.g. MISSIERI
-- anim : Animacy ; -- is the noun animate? e.g. TABIB
} ;
@@ -127,9 +169,9 @@ resource ResMlt = ParamX ** open Prelude, Predef in {
{- Pronoun -------------------------------------------------------------- -}
oper
-- [AZ]
Pronoun = {
s : PronForm => {c1, c2: Str} ;
-- s : PronForm => {c1, c2: Str} ;
s : PronForm => Str ; -- cases like omm-i / hi-ja are handled elsewhere
a : Agr ;
} ;
@@ -447,13 +489,18 @@ resource ResMlt = ParamX ** open Prelude, Predef in {
{- ~~~ Conversions ~~~ -}
numnum2nounnum : Num_Number -> Noun_Number = \n ->
numform2nounnum : NumForm -> Noun_Number = \n ->
case n of {
Num_Sg => Singular Singulative ;
_ => Plural Determinate
Num Sg => Singular Singulative ;
Num Pl => Plural Indeterminate ;
Num0 => Singular Singulative ;
Num1 => Singular Singulative ;
Num2 => Dual ;
Num3_10 => Singular Collective ;
Num11_19 => Singular Singulative ;
Num20_99 => Plural Indeterminate
} ;
{- ~~~ Useful helper functions ~~~ -}
-- Non-existant form
@@ -588,24 +635,11 @@ resource ResMlt = ParamX ** open Prelude, Predef in {
_ => [] -- ?
} ;
artIndef : Str =
pre {
"lill-" ;
"lil" / strs { "a" ; "e" ; "i" ; "o" ; "u" ; "h" ; "għ" } ;
"liċ-" ++ BIND / strs { "ċ" } ;
"lid-" ++ BIND / strs { "d" } ;
"lin-" ++ BIND / strs { "n" } ;
"lir-" ++ BIND / strs { "r" } ;
"lis-" ++ BIND / strs { "s" } ;
"lit-" ++ BIND / strs { "t" } ;
"lix-" ++ BIND / strs { "x" } ;
"liż-" ++ BIND / strs { "ż" } ;
"liz-" ++ BIND / strs { "z" }
} ;
artIndef : Str = "" ;
artDef : Str =
pre {
"il-" ;
"il- &+" ; --- ugly hack! but won't let me use ++
"l-" ++ BIND / strs { "a" ; "e" ; "i" ; "o" ; "u" ; "h" ; "għ" } ;
"iċ-" ++ BIND / strs { "ċ" } ;
"id-" ++ BIND / strs { "d" } ;
@@ -637,6 +671,9 @@ resource ResMlt = ParamX ** open Prelude, Predef in {
Plural Indeterminate => ind
} ;
g = gen ;
takesPron = False ;
hasDual = notB (isNil dual) ;
hasColl = notB (isNil coll) ;
-- anim = Inanimate ;
} ;

View File

@@ -1,7 +1,8 @@
-- SentenceMlt.gf: clauses and sentences
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Angelo Zammit 2012
-- Licensed under LGPL
--# -path=.:abstract:common:prelude

View File

@@ -1,7 +1,7 @@
-- StructuralMlt.gf: lexicon of structural words
--
-- Maltese Resource Grammar Library
-- John J. Camilleri 2009 -- 2013
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
concrete StructuralMlt of Structural = CatMlt **
@@ -15,21 +15,42 @@ concrete StructuralMlt of Structural = CatMlt **
{- Pronoun -------------------------------------------------------------- -}
he_Pron = mkPron "hu" "u" "h" "u" "h" "lu" singular P3 masculine ; --- also HUWA
i_Pron = mkPron "jien" "i" "ja" "ni" [] "li" singular P1 masculine ; --- also JIENA
-- it_Pron = mkPron "it" "it" "its" "its" singular P3 nonhuman ;
she_Pron = mkPron "hi" "ha" singular P3 feminine ; --- also HIJA
they_Pron = mkPron "huma" "hom" plural P3 masculine ;
we_Pron = mkPron "aħna" "na" plural P1 masculine ;
youSg_Pron = mkPron "int" "ek" "ok" "ek" "k" "lek" singular P2 masculine ; -- also INTI
youPl_Pron = mkPron "intom" "kom" plural P2 masculine ;
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" "u" "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 ;
youPol_Pron = youSg_Pron ;
-- it_Pron = mkPron "it" "it" "its" "its" singular P3 nonhuman ;
{- Determiner ----------------------------------------------------------- -}
all_Predet = ss "kollha" ;
-- every_Det = mkDeterminerSpec singular "every" "everyone" False ;
few_Det = mkDeterminer plural "ftit" ;
many_Det = mkDeterminer plural "ħafna" ; -- bosta
-- most_Predet = ss "most" ;
-- much_Det = mkDeterminer singular "much" ;
only_Predet = ss "biss" ;
someSg_Det = mkDeterminer singular "xi" ;
somePl_Det = mkDeterminer plural "xi" ;
-- not_predet = {s = "not" ; lock_Predet = <>} ;
{- Quantifier ----------------------------------------------------------- -}
that_Quant = mkQuant "dak" "dik" "dawk" True ;
this_Quant = mkQuant "dan" "din" "dawn" True ;
no_Quant = let l_ebda = artDef ++ "ebda" in
mkQuant l_ebda l_ebda l_ebda False ;
-- which_IQuant = {s = \\_ => "which"} ;
{- Others --------------------------------------------------------------- -}
-- above_Prep = mkPrep "above" ;
-- after_Prep = mkPrep "after" ;
-- all_Predet = ss "all" ;
-- almost_AdA = mkAdA "almost" ;
-- almost_AdN = mkAdN "almost" ;
-- although_Subj = ss "although" ;
@@ -58,10 +79,8 @@ concrete StructuralMlt of Structural = CatMlt **
-- during_Prep = mkPrep "during" ;
-- either7or_DConj = mkConj "either" "or" singular ;
-- everybody_NP = regNP "everybody" singular ;
-- every_Det = mkDeterminerSpec singular "every" "everyone" False ;
-- everything_NP = regNP "everything" singular ;
-- everywhere_Adv = mkAdv "everywhere" ;
-- few_Det = mkDeterminer plural "few" ;
-- for_Prep = mkPrep "for" ;
-- from_Prep = mkPrep "from" ;
-- here_Adv = mkAdv "here" ;
@@ -74,10 +93,8 @@ concrete StructuralMlt of Structural = CatMlt **
-- in8front_Prep = mkPrep ["in front of"] ;
-- in_Prep = mkPrep "in" ;
-- less_CAdv = C.mkCAdv "less" "than" ;
-- many_Det = mkDeterminer plural "many" ;
-- more_CAdv = C.mkCAdv "more" "than" ;
-- most_Predet = ss "most" ;
-- much_Det = mkDeterminer singular "much" ;
-- must_VV = {
-- s = table {
-- VVF VInf => ["have to"] ;
@@ -92,7 +109,6 @@ concrete StructuralMlt of Structural = CatMlt **
-- } ;
-- no_Utt = ss "no" ;
-- on_Prep = mkPrep "on" ;
-- only_Predet = ss "only" ;
-- or_Conj = mkConj "or" singular ;
-- otherwise_PConj = ss "otherwise" ;
-- part_Prep = mkPrep "of" ;
@@ -101,16 +117,12 @@ concrete StructuralMlt of Structural = CatMlt **
-- quite_Adv = mkAdv "quite" ;
-- so_AdA = mkAdA "so" ;
-- somebody_NP = regNP "somebody" singular ;
-- someSg_Det = mkDeterminer singular "some" ;
-- somePl_Det = mkDeterminer plural "some" ;
-- something_NP = regNP "something" singular ;
-- somewhere_Adv = mkAdv "somewhere" ;
-- that_Quant = mkQuant "that" "those" ;
-- there_Adv = mkAdv "there" ;
-- there7to_Adv = mkAdv "there" ;
-- there7from_Adv = mkAdv ["from there"] ;
-- therefore_PConj = ss "therefore" ;
-- this_Quant = mkQuant "this" "these" ;
-- through_Prep = mkPrep "through" ;
-- too_AdA = mkAdA "too" ;
-- to_Prep = mkPrep "to" ;
@@ -122,7 +134,6 @@ concrete StructuralMlt of Structural = CatMlt **
-- when_IAdv = ss "when" ;
-- when_Subj = ss "when" ;
-- where_IAdv = ss "where" ;
-- which_IQuant = {s = \\_ => "which"} ;
-- whoPl_IP = mkIP "who" "whom" "whose" plural ;
-- whoSg_IP = mkIP "who" "whom" "whose" singular ;
-- why_IAdv = ss "why" ;
@@ -130,8 +141,6 @@ concrete StructuralMlt of Structural = CatMlt **
-- with_Prep = mkPrep "with" ;
-- yes_Utt = ss "yes" ;
-- not_predet = {s = "not" ; lock_Predet = <>} ;
-- no_Quant = mkQuant "no" "no" "none" "none" ;
-- if_then_Conj = mkConj "if" "then" singular ;
-- nobody_NP = regNP "nobody" singular ;
-- nothing_NP = regNP "nothing" singular ;

View File

@@ -1,5 +1,7 @@
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- SymbolMlt.gf
--
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
--# -path=.:../abstract:../common

View File

@@ -1,7 +1,7 @@
-- TextMlt.gf: many-phrase texts
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
concrete IdiomMlt of Idiom = CatMlt ** open Prelude, ResMlt in {

View File

@@ -1,7 +1,8 @@
-- VerbMlt.gf: verb phrases
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Maltese GF Resource Grammar
-- John J. Camilleri 2011 -- 2013
-- Angelo Zammit 2012
-- Licensed under LGPL
concrete VerbMlt of Verb = CatMlt ** open Prelude, ResMlt in {