Maltese RGL: removed 'case' inflections from nouns

This commit is contained in:
john.j.camilleri
2012-02-21 14:39:19 +00:00
parent cf221bd363
commit 8c00c7bcd6
29 changed files with 1672 additions and 1668 deletions

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,66 +1,66 @@
-- CatMlt.gf: the common type system -- CatMlt.gf: the common type system
-- --
-- Maltese Resource Grammar Library -- Maltese Resource Grammar Library
-- John J. Camilleri, 2011 -- John J. Camilleri, 2012
-- Licensed under LGPL -- Licensed under LGPL
--concrete CatMlt of Cat = CommonX ** open ResMlt, Prelude, ParamX in { --concrete CatMlt of Cat = CommonX ** open ResMlt, Prelude, ParamX in {
concrete CatMlt of Cat = CommonX ** open ResMlt, Prelude in { concrete CatMlt of Cat = CommonX ** open ResMlt, Prelude in {
flags optimize=all_subs ; flags optimize=all_subs ;
lincat lincat
-- S = {s : Str} ; -- S = {s : Str} ;
-- Cl = {s : ResMlt.Tense => Bool => Str} ; -- Cl = {s : ResMlt.Tense => Bool => Str} ;
-- NP = ResMlt.NP ; -- {s : Case => {clit,obj : Str ; isClit : Bool} ; a : Agr} ; -- NP = ResMlt.NP ; -- {s : Case => {clit,obj : Str ; isClit : Bool} ; a : Agr} ;
-- VP = ResMlt.VP ; -- {v : Verb ; clit : Str ; clitAgr : ClitAgr ; obj : Agr => Str} ; -- VP = ResMlt.VP ; -- {v : Verb ; clit : Str ; clitAgr : ClitAgr ; obj : Agr => Str} ;
-- AP = {s : Gender => Number => Str ; isPre : Bool} ; -- AP = {s : Gender => Number => Str ; isPre : Bool} ;
-- CN = ResMlt.Noun ; -- {s : Number => Str ; g : Gender} ; -- CN = ResMlt.Noun ; -- {s : Number => Str ; g : Gender} ;
-- Det = {s : Gender => Case => Str ; n : Number} ; -- Det = {s : Gender => Case => Str ; n : Number} ;
N = ResMlt.Noun ; N = ResMlt.Noun ;
N2 = ResMlt.Noun ; N2 = ResMlt.Noun ;
N3 = ResMlt.Noun ; N3 = ResMlt.Noun ;
A = ResMlt.Adj ; A = ResMlt.Adj ;
V = ResMlt.Verb ; V = ResMlt.Verb ;
-- V2 = ResMlt.Verb ** {c : Case} ; -- V2 = ResMlt.Verb ** {c : Case} ;
-- AdA = {s : Str} ; -- AdA = {s : Str} ;
-- Pol = {s : Str ; b : Bool} ; -- Pol = {s : Str ; b : Bool} ;
-- Tense = {s : Str ; t : ResMlt.Tense} ; -- Tense = {s : Str ; t : ResMlt.Tense} ;
-- Conj = {s : Str ; n : Number} ; -- Conj = {s : Str ; n : Number} ;
-- Cardinal or ordinal in WORDS (not digits) -- Cardinal or ordinal in WORDS (not digits)
Numeral = { Numeral = {
s : CardOrd => Num_Case => Str ; s : CardOrd => Num_Case => Str ;
n : Num_Number n : Num_Number
} ; } ;
-- Cardinal or ordinal in DIGITS (not words) -- Cardinal or ordinal in DIGITS (not words)
Digits = { Digits = {
s : Str ; -- No need for CardOrd, i.e. no 1st, 2nd etc in Maltese s : Str ; -- No need for CardOrd, i.e. no 1st, 2nd etc in Maltese
n : Num_Number ; n : Num_Number ;
tail : DTail tail : DTail
}; };
{- {-
-- These below are just examples, I believe they came form Italian. -- These below are just examples, I believe they came form Italian.
S = {s : Str} ; S = {s : Str} ;
Cl = {s : ResMlt.Tense => Bool => Str} ; Cl = {s : ResMlt.Tense => Bool => Str} ;
NP = {s : Case => {clit,obj : Str ; isClit : Bool} ; a : Agr} ; NP = {s : Case => {clit,obj : Str ; isClit : Bool} ; a : Agr} ;
VP = {v : Verb ; clit : Str ; clitAgr : ClitAgr ; obj : Agr => Str} ; VP = {v : Verb ; clit : Str ; clitAgr : ClitAgr ; obj : Agr => Str} ;
AP = {s : Gender => Number => Str ; isPre : Bool} ; AP = {s : Gender => Number => Str ; isPre : Bool} ;
CN = {s : Number => Str ; g : Gender} ; CN = {s : Number => Str ; g : Gender} ;
Det = {s : Gender => Case => Str ; n : Number} ; Det = {s : Gender => Case => Str ; n : Number} ;
N = {s : Number => Str ; g : Gender} ; N = {s : Number => Str ; g : Gender} ;
N2 = {s : Number => Str ; g : Gender} ; N2 = {s : Number => Str ; g : Gender} ;
A = {s : Number => Str ; isPre : Bool} ; A = {s : Number => Str ; isPre : Bool} ;
V = ResMlt.Verb ; V = ResMlt.Verb ;
V2 = ResMlt.Verb ** {c : Case} ; V2 = ResMlt.Verb ** {c : Case} ;
AdA = {s : Str} ; AdA = {s : Str} ;
Pol = {s : Str ; b : Bool} ; Pol = {s : Str ; b : Bool} ;
Tense = {s : Str ; t : ResMlt.Tense} ; Tense = {s : Str ; t : ResMlt.Tense} ;
Conj = {s : Str ; n : Number} ; Conj = {s : Str ; n : Number} ;
-} -}
} }

View File

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

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
-- GrammarMlt.gf: common syntax -- GrammarMlt.gf: common syntax
-- --
-- Maltese Resource Grammar Library -- Maltese Resource Grammar Library
-- John J. Camilleri, 2011 -- John J. Camilleri, 2012
-- Licensed under LGPL -- Licensed under LGPL
--# -path=.:../abstract:../common:../prelude --# -path=.:../abstract:../common:../prelude
@@ -22,6 +22,6 @@ concrete GrammarMlt of Grammar =
IdiomMlt IdiomMlt
** { ** {
flags coding=utf8 ; flags coding=utf8 ;
} }

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,396 +1,396 @@
-- LexiconMlt.gf: test lexicon of 300 content words -- LexiconMlt.gf: test lexicon of 300 content words
-- --
-- Maltese Resource Grammar Library -- Maltese Resource Grammar Library
-- John J. Camilleri, 2011 -- John J. Camilleri, 2012
-- Licensed under LGPL -- Licensed under LGPL
--# -path=.:../abstract:../common:../prelude --# -path=.:../abstract:../common:../prelude
concrete LexiconMlt of Lexicon = CatMlt ** concrete LexiconMlt of Lexicon = CatMlt **
--open ParadigmsMlt, ResMlt, Prelude in { --open ParadigmsMlt, ResMlt, Prelude in {
open ParadigmsMlt, IrregMlt, ResMlt in { open ParadigmsMlt, IrregMlt, ResMlt in {
flags optimize=values ; coding=utf8 ; flags optimize=values ; coding=utf8 ;
lin lin
{- ===== My Verbs ===== -} {- ===== My Verbs ===== -}
{- {-
cut_V2 = mkVerb "qata'" "aqta'" "aqtgħu" ; cut_V2 = mkVerb "qata'" "aqta'" "aqtgħu" ;
write_V2 = mkVerb "kiteb" ; write_V2 = mkVerb "kiteb" ;
break_V2 = mkVerb "kiser" ; break_V2 = mkVerb "kiser" ;
find_V2 = mkVerb "sab" ; find_V2 = mkVerb "sab" ;
throw_V2 = mkVerb "tefa'" ; throw_V2 = mkVerb "tefa'" ;
hear_V2 = mkVerb "sama'" "isma'" "isimgħu" ; hear_V2 = mkVerb "sama'" "isma'" "isimgħu" ;
fear_V2 = mkVerb "beża'" ; fear_V2 = mkVerb "beża'" ;
pray_V = mkVerb "talab" "itlob" "itolbu" ; pray_V = mkVerb "talab" "itlob" "itolbu" ;
understand_V2 = mkVerb "fehem" ; understand_V2 = mkVerb "fehem" ;
pull_V2 = mkVerb "ġibed" ; pull_V2 = mkVerb "ġibed" ;
walk_V = mkVerb "mexa'" ; walk_V = mkVerb "mexa'" ;
-} -}
-- die_V = mkVerb "miet" ; -- die_V = mkVerb "miet" ;
die_V = mkVerb "qarmeċ" ; die_V = mkVerb "qarmeċ" ;
{- ===== My Nouns ===== -} {- ===== My Nouns ===== -}
--airplane_N = mkNoun "ajruplan" Masc ; --airplane_N = mkNoun "ajruplan" Masc ;
airplane_N = mkNoun "ajruplan" ; airplane_N = mkNoun "ajruplan" ;
--apple_N = mkNoun "tuffieħa" Fem ; --apple_N = mkNoun "tuffieħa" Fem ;
apple_N = mkNounColl "tuffieħ" ; apple_N = mkNounColl "tuffieħ" ;
bench_N = mkNoun "bank" "bankijiet" ; bench_N = mkNoun "bank" "bankijiet" ;
{- ===== Required by RGL ===== -} {- ===== Required by RGL ===== -}
-- add_V3 -- add_V3
-- alas_Interj -- alas_Interj
-- already_Adv -- already_Adv
animal_N = mkNoun "annimal" ; animal_N = mkNoun "annimal" ;
-- answer_V2S -- answer_V2S
apartment_N = mkNoun "appartament" ; apartment_N = mkNoun "appartament" ;
art_N = mkNounNoPlural "arti" Fem ; art_N = mkNounNoPlural "arti" Fem ;
-- ashes_N = mkNoun "rmied" ; -- ashes_N = mkNoun "rmied" ;
-- ask_V2Q -- ask_V2Q
baby_N = mkNoun "tarbija" "trabi" ; baby_N = mkNoun "tarbija" "trabi" ;
back_N = mkNoun "dahar" "dhur" ; back_N = mkNoun "dahar" "dhur" ;
-- bad_A -- bad_A
bank_N = mkNoun "bank" "bankijiet" ; -- BANEK is for lotto booths! bank_N = mkNoun "bank" "bankijiet" ; -- BANEK is for lotto booths!
bark_N = mkNoun "qoxra" "qoxriet" ; bark_N = mkNoun "qoxra" "qoxriet" ;
-- beautiful_A -- beautiful_A
-- become_VA -- become_VA
beer_N = mkNoun "birra" "birer" ; beer_N = mkNoun "birra" "birer" ;
-- beg_V2V -- beg_V2V
belly_N = mkNoun "żaqq" "żquq" ; belly_N = mkNoun "żaqq" "żquq" ;
-- big_A -- big_A
bike_N = mkNoun "rota" ; bike_N = mkNoun "rota" ;
bird_N = mkNoun "għasfur" "għasafar" ; -- what about GĦASFURA? bird_N = mkNoun "għasfur" "għasafar" ; -- what about GĦASFURA?
-- bite_V2 -- bite_V2
-- black_A -- black_A
blood_N = mkNoun [] "demm" [] "dmija" [] ; blood_N = mkNoun [] "demm" [] "dmija" [] ;
-- blow_V -- blow_V
-- blue_A -- blue_A
boat_N = mkNoun "dgħajsa" "dgħajjes" ; boat_N = mkNoun "dgħajsa" "dgħajjes" ;
bone_N = mkNounColl "għadam" ; bone_N = mkNounColl "għadam" ;
book_N = mkNoun "ktieb" "kotba" ; book_N = mkNoun "ktieb" "kotba" ;
boot_N = mkNoun "żarbun" "żraben" ; -- what about ŻARBUNA? boot_N = mkNoun "żarbun" "żraben" ; -- what about ŻARBUNA?
boss_N = mkNoun "mgħallem" "mgħallmin" ; boss_N = mkNoun "mgħallem" "mgħallmin" ;
boy_N = mkNoun "tifel" "tfal" ; boy_N = mkNoun "tifel" "tfal" ;
bread_N = mkNounColl "ħobż" ; bread_N = mkNounColl "ħobż" ;
-- break_V2 -- break_V2
breast_N = mkNoun "sider" "sdur" ; -- also ISDRA breast_N = mkNoun "sider" "sdur" ; -- also ISDRA
-- breathe_V -- breathe_V
-- broad_A -- broad_A
brother_N2 = mkNoun "ħu" "aħwa" ; brother_N2 = mkNoun "ħu" "aħwa" ;
-- brown_A -- brown_A
-- burn_V -- burn_V
butter_N = mkNoun [] "butir" [] "butirijiet" [] ; butter_N = mkNoun [] "butir" [] "butirijiet" [] ;
-- buy_V2 -- buy_V2
camera_N = mkNoun "kamera" "kameras" ; camera_N = mkNoun "kamera" "kameras" ;
cap_N = mkNoun "beritta" ; cap_N = mkNoun "beritta" ;
car_N = mkNoun "karozza" ; car_N = mkNoun "karozza" ;
carpet_N = mkNoun "tapit" ; -- TAPITI or TWAPET ? carpet_N = mkNoun "tapit" ; -- TAPITI or TWAPET ?
cat_N = mkNoun "qattus" "qtates" ; -- what about QATTUSA ? cat_N = mkNoun "qattus" "qtates" ; -- what about QATTUSA ?
ceiling_N = mkNoun "saqaf" "soqfa"; ceiling_N = mkNoun "saqaf" "soqfa";
chair_N = mkNoun "siġġu" "siġġijiet" ; chair_N = mkNoun "siġġu" "siġġijiet" ;
cheese_N = mkNounColl "ġobon" ; cheese_N = mkNounColl "ġobon" ;
-- child_N = mkNoun "tfajjel" ; -- Not an easy one... -- child_N = mkNoun "tfajjel" ; -- Not an easy one...
church_N = mkNoun "knisja" "knejjes" ; church_N = mkNoun "knisja" "knejjes" ;
city_N = mkNoun "belt" "bliet" Fem ; city_N = mkNoun "belt" "bliet" Fem ;
-- clean_A -- clean_A
-- clever_A -- clever_A
-- close_V2 -- close_V2
cloud_N = mkNounColl "sħab" ; cloud_N = mkNounColl "sħab" ;
coat_N = mkNoun "kowt" "kowtijiet" ; coat_N = mkNoun "kowt" "kowtijiet" ;
-- cold_A -- cold_A
-- come_V -- come_V
computer_N = mkNoun "kompjuter" "kompjuters" ; computer_N = mkNoun "kompjuter" "kompjuters" ;
-- correct_A -- correct_A
-- count_V2 -- count_V2
country_N = mkNoun "pajjiż" ; country_N = mkNoun "pajjiż" ;
cousin_N = mkNoun "kuġin" ; cousin_N = mkNoun "kuġin" ;
cow_N = mkNoun "baqra" "baqar" "baqartejn" [] [] ; cow_N = mkNoun "baqra" "baqar" "baqartejn" [] [] ;
-- cut_V2 -- cut_V2
day_N = mkNoun "ġurnata" "ġranet" ; day_N = mkNoun "ġurnata" "ġranet" ;
-- dig_V -- dig_V
-- dirty_A -- dirty_A
distance_N3 = mkNoun "distanza" ; distance_N3 = mkNoun "distanza" ;
-- do_V2 -- do_V2
doctor_N = mkNoun "tabib" "tobba" ; -- what about TABIBA ? doctor_N = mkNoun "tabib" "tobba" ; -- what about TABIBA ?
dog_N = mkNoun "kelb" "klieb" ; dog_N = mkNoun "kelb" "klieb" ;
door_N = mkNoun "bieb" "bibien" ; -- what about BIEBA ? door_N = mkNoun "bieb" "bibien" ; -- what about BIEBA ?
-- drink_V2 -- drink_V2
-- dry_A -- dry_A
-- dull_A -- dull_A
dust_N = mkNounColl "trab" ; -- not sure but sounds right dust_N = mkNounColl "trab" ; -- not sure but sounds right
ear_N = mkNounDual "widna" ; ear_N = mkNounDual "widna" ;
earth_N = mkNoun "art" "artijiet" Fem ; earth_N = mkNoun "art" "artijiet" Fem ;
-- easy_A2V -- easy_A2V
-- eat_V2 -- eat_V2
egg_N = mkNounColl "bajd" ; egg_N = mkNounColl "bajd" ;
-- empty_A -- empty_A
enemy_N = mkNoun "għadu" "għedewwa" ; enemy_N = mkNoun "għadu" "għedewwa" ;
eye_N = mkNounWorst "għajn" [] "għajnejn" "għajnejn" "għejun" Fem ; eye_N = mkNounWorst "għajn" [] "għajnejn" "għajnejn" "għejun" Fem ;
factory_N = mkNoun "fabbrika" ; factory_N = mkNoun "fabbrika" ;
-- fall_V -- fall_V
-- far_Adv -- far_Adv
fat_N = mkNounColl "xaħam" ; fat_N = mkNounColl "xaħam" ;
father_N2 = mkNoun "missier" "missierijiet" ; father_N2 = mkNoun "missier" "missierijiet" ;
-- fear_V2 -- fear_V2
-- fear_VS -- fear_VS
feather_N = mkNounColl "rix" ; feather_N = mkNounColl "rix" ;
-- fight_V2 -- fight_V2
-- find_V2 -- find_V2
fingernail_N = mkNoun "difer" [] "difrejn" "dwiefer" [] ; fingernail_N = mkNoun "difer" [] "difrejn" "dwiefer" [] ;
fire_N = mkNoun "nar" "nirien" ; fire_N = mkNoun "nar" "nirien" ;
fish_N = mkNounColl "ħut" ; fish_N = mkNounColl "ħut" ;
-- float_V -- float_V
earth_N = mkNoun "art" "artijiet" Fem ; earth_N = mkNoun "art" "artijiet" Fem ;
-- flow_V -- flow_V
flower_N = mkNoun "fjura" ; flower_N = mkNoun "fjura" ;
-- fly_V -- fly_V
fog_N = mkNoun [] "ċpar" [] [] [] ; fog_N = mkNoun [] "ċpar" [] [] [] ;
foot_N = mkNounWorst "sieq" [] "saqajn" "saqajn" [] Fem ; foot_N = mkNounWorst "sieq" [] "saqajn" "saqajn" [] Fem ;
forest_N = mkNoun "foresta" ; -- also MASĠAR forest_N = mkNoun "foresta" ; -- also MASĠAR
-- forget_V2 -- forget_V2
-- freeze_V -- freeze_V
fridge_N = mkNoun "friġġ" "friġġijiet" ; fridge_N = mkNoun "friġġ" "friġġijiet" ;
friend_N = mkNoun "ħabib" "ħbieb" ; friend_N = mkNoun "ħabib" "ħbieb" ;
fruit_N = mkNounColl "frott" ; fruit_N = mkNounColl "frott" ;
-- full_A -- full_A
-- fun_AV -- fun_AV
garden_N = mkNoun "ġnien" "ġonna" ; garden_N = mkNoun "ġnien" "ġonna" ;
girl_N = mkNoun "tifla" "tfal" ; girl_N = mkNoun "tifla" "tfal" ;
-- give_V3 -- give_V3
glove_N = mkNoun "ingwanta" ; glove_N = mkNoun "ingwanta" ;
-- go_V -- go_V
gold_N = mkNoun [] "deheb" [] "dehbijiet" [] ; gold_N = mkNoun [] "deheb" [] "dehbijiet" [] ;
-- good_A -- good_A
grammar_N = mkNoun "grammatika" ; grammar_N = mkNoun "grammatika" ;
grass_N = mkNounWorst "ħaxixa" "ħaxix" [] [] "ħxejjex" Masc ; -- Dict says ĦAXIX = n.koll.m.s., f. -a, pl.ind. ĦXEJJEX grass_N = mkNounWorst "ħaxixa" "ħaxix" [] [] "ħxejjex" Masc ; -- Dict says ĦAXIX = n.koll.m.s., f. -a, pl.ind. ĦXEJJEX
-- green_A -- green_A
guts_N = mkNoun "musrana" [] [] "musraniet" "msaren" ; guts_N = mkNoun "musrana" [] [] "musraniet" "msaren" ;
hair_N = mkNoun "xagħar" [] [] "xagħariet" "xgħur" ; hair_N = mkNoun "xagħar" [] [] "xagħariet" "xgħur" ;
hand_N = mkNounWorst "id" [] "idejn" "idejn" [] Fem ; hand_N = mkNounWorst "id" [] "idejn" "idejn" [] Fem ;
harbour_N = mkNoun "port" "portijiet" ; harbour_N = mkNoun "port" "portijiet" ;
hat_N = mkNoun "kappell" "kpiepel" ; hat_N = mkNoun "kappell" "kpiepel" ;
-- hate_V2 -- hate_V2
head_N = mkNoun "ras" "rjus" Fem ; head_N = mkNoun "ras" "rjus" Fem ;
-- hear_V2 -- hear_V2
heart_N = mkNoun "qalb" "qlub" Fem ; heart_N = mkNoun "qalb" "qlub" Fem ;
-- heavy_A -- heavy_A
hill_N = mkNoun "għolja" "għoljiet" ; hill_N = mkNoun "għolja" "għoljiet" ;
-- hit_V2 -- hit_V2
-- hold_V2 -- hold_V2
-- hope_VS -- hope_VS
horn_N = mkNoun "ħorn" "ħornijiet" ; horn_N = mkNoun "ħorn" "ħornijiet" ;
horse_N = mkNoun "żiemel" "żwiemel" ; horse_N = mkNoun "żiemel" "żwiemel" ;
-- hot_A -- hot_A
house_N = mkNoun "dar" "djar" Fem ; house_N = mkNoun "dar" "djar" Fem ;
-- hunt_V2 -- hunt_V2
husband_N = mkNoun "raġel" "rġiel" ; husband_N = mkNoun "raġel" "rġiel" ;
ice_N = mkNoun "silġ" "silġiet" ; ice_N = mkNoun "silġ" "silġiet" ;
-- important_A -- important_A
industry_N = mkNoun "industrija" ; industry_N = mkNoun "industrija" ;
iron_N = mkNounWorst "ħadida" "ħadid" [] "ħadidiet" "ħdejjed" Masc ; iron_N = mkNounWorst "ħadida" "ħadid" [] "ħadidiet" "ħdejjed" Masc ;
-- john_PN -- john_PN
-- jump_V -- jump_V
-- kill_V2 -- kill_V2
king_N = mkNoun "re" "rejjiet" ; king_N = mkNoun "re" "rejjiet" ;
knee_N = mkNoun "rkoppa" [] "rkopptejn" "rkoppiet" [] ; -- TODO use mkNounDual knee_N = mkNoun "rkoppa" [] "rkopptejn" "rkoppiet" [] ; -- TODO use mkNounDual
-- know_V2 -- know_V2
-- know_VQ -- know_VQ
-- know_VS -- know_VS
lake_N = mkNoun "għadira" "għadajjar" ; lake_N = mkNoun "għadira" "għadajjar" ;
lamp_N = mkNoun "lampa" ; lamp_N = mkNoun "lampa" ;
language_N = mkNoun "lingwa" ; -- lsien? language_N = mkNoun "lingwa" ; -- lsien?
-- laugh_V -- laugh_V
leaf_N = mkNoun "werqa" "weraq" "werqtejn" "werqiet" [] ; leaf_N = mkNoun "werqa" "weraq" "werqtejn" "werqiet" [] ;
-- learn_V2 -- learn_V2
leather_N = mkNoun "ġilda" "ġild" [] "ġildiet" "ġlud" ; -- mkNounColl "ġild" ; leather_N = mkNoun "ġilda" "ġild" [] "ġildiet" "ġlud" ; -- mkNounColl "ġild" ;
-- leave_V2 -- leave_V2
-- left_Ord -- left_Ord
leg_N = mkNoun "riġel" [] "riġlejn" [] [] ; -- sieq? leg_N = mkNoun "riġel" [] "riġlejn" [] [] ; -- sieq?
-- lie_V -- lie_V
-- like_V2 -- like_V2
-- listen_V2 -- listen_V2
-- live_V -- live_V
liver_N = mkNoun "fwied" [] [] [] "ifdwa" ; liver_N = mkNoun "fwied" [] [] [] "ifdwa" ;
-- long_A -- long_A
-- lose_V2 -- lose_V2
louse_N = mkNoun "qamla" "qamliet" ; louse_N = mkNoun "qamla" "qamliet" ;
love_N = mkNoun "mħabba" "mħabbiet" ; -- hmmm love_N = mkNoun "mħabba" "mħabbiet" ; -- hmmm
-- love_V2 -- love_V2
man_N = mkNoun "raġel" "rġiel" ; man_N = mkNoun "raġel" "rġiel" ;
-- married_A2 -- married_A2
meat_N = mkNoun "laħam" [] [] "laħmiet" "laħmijiet" ; meat_N = mkNoun "laħam" [] [] "laħmiet" "laħmijiet" ;
milk_N = mkNoun [] "ħalib" [] "ħalibijiet" "ħlejjeb" ; milk_N = mkNoun [] "ħalib" [] "ħalibijiet" "ħlejjeb" ;
moon_N = mkNoun "qamar" "oqmra" ; -- qmura? moon_N = mkNoun "qamar" "oqmra" ; -- qmura?
mother_N2 = mkNoun "omm" "ommijiet" Fem ; mother_N2 = mkNoun "omm" "ommijiet" Fem ;
mountain_N = mkNoun "muntanja" ; mountain_N = mkNoun "muntanja" ;
mouth_N = mkNoun "ħalq" "ħluq" ; mouth_N = mkNoun "ħalq" "ħluq" ;
music_N = mkNoun "musika" ; -- plural? music_N = mkNoun "musika" ; -- plural?
name_N = mkNoun "isem" "ismijiet" ; name_N = mkNoun "isem" "ismijiet" ;
-- narrow_A -- narrow_A
-- near_A -- near_A
neck_N = mkNoun "għonq" "għenuq" ; neck_N = mkNoun "għonq" "għenuq" ;
-- new_A -- new_A
newspaper_N = mkNoun "gazzetta" ; newspaper_N = mkNoun "gazzetta" ;
night_N = mkNoun "lejl" "ljieli" ; night_N = mkNoun "lejl" "ljieli" ;
nose_N = mkNoun "mnieħer" "mniħrijiet" ; nose_N = mkNoun "mnieħer" "mniħrijiet" ;
-- now_Adv -- now_Adv
number_N = mkNoun "numru" ; number_N = mkNoun "numru" ;
oil_N = mkNoun "żejt" "żjut" ; oil_N = mkNoun "żejt" "żjut" ;
-- old_A -- old_A
-- open_V2 -- open_V2
-- paint_V2A -- paint_V2A
paper_N = mkNoun "karta" ; paper_N = mkNoun "karta" ;
-- paris_PN -- paris_PN
peace_N = mkNoun "paċi" "paċijiet" Fem ; peace_N = mkNoun "paċi" "paċijiet" Fem ;
pen_N = mkNoun "pinna" "pinen" ; pen_N = mkNoun "pinna" "pinen" ;
person_N = mkNounWorst [] "persuna" [] "persuni" [] Masc ; person_N = mkNounWorst [] "persuna" [] "persuni" [] Masc ;
planet_N = mkNoun "pjaneta" ; planet_N = mkNoun "pjaneta" ;
plastic_N = mkNounNoPlural "plastik" ; plastic_N = mkNounNoPlural "plastik" ;
-- play_V -- play_V
-- play_V2 -- play_V2
policeman_N = mkNounNoPlural "pulizija" ; policeman_N = mkNounNoPlural "pulizija" ;
priest_N = mkNoun "qassis" "qassisin" ; priest_N = mkNoun "qassis" "qassisin" ;
-- probable_AS -- probable_AS
-- pull_V2 -- pull_V2
-- push_V2 -- push_V2
-- put_V2 -- put_V2
queen_N = mkNoun "reġina" "rġejjen" ; queen_N = mkNoun "reġina" "rġejjen" ;
question_N = mkNoun "mistoqsija" "mistoqsijiet" ; -- domanda? question_N = mkNoun "mistoqsija" "mistoqsijiet" ; -- domanda?
radio_N = mkNoun "radju" "radjijiet" ; radio_N = mkNoun "radju" "radjijiet" ;
rain_N = mkNounNoPlural "xita" ; rain_N = mkNounNoPlural "xita" ;
-- rain_V0 -- rain_V0
-- read_V2 -- read_V2
-- ready_A -- ready_A
reason_N = mkNoun "raġun" "raġunijiet" ; reason_N = mkNoun "raġun" "raġunijiet" ;
-- red_A -- red_A
religion_N = mkNoun "reliġjon" "reliġjonijiet" ; religion_N = mkNoun "reliġjon" "reliġjonijiet" ;
restaurant_N = mkNoun "restorant" ; restaurant_N = mkNoun "restorant" ;
-- right_Ord -- right_Ord
river_N = mkNoun "xmara" "xmajjar" ; river_N = mkNoun "xmara" "xmajjar" ;
road_N = mkNounWorst "triq" [] [] "triqat" "toroq" Fem ; road_N = mkNounWorst "triq" [] [] "triqat" "toroq" Fem ;
rock_N = mkNoun "blata" "blat" [] "blatiet" "blajjiet" ; -- in dictionary BLAT and BLATA are separate! rock_N = mkNoun "blata" "blat" [] "blatiet" "blajjiet" ; -- in dictionary BLAT and BLATA are separate!
roof_N = mkNoun "saqaf" "soqfa" ; roof_N = mkNoun "saqaf" "soqfa" ;
root_N = mkNoun "qħerq" "qħeruq" ; root_N = mkNoun "qħerq" "qħeruq" ;
rope_N = mkNoun "ħabel" "ħbula" ; rope_N = mkNoun "ħabel" "ħbula" ;
-- rotten_A -- rotten_A
-- round_A -- round_A
-- rub_V2 -- rub_V2
rubber_N = mkNoun "gomma" "gomom" ; rubber_N = mkNoun "gomma" "gomom" ;
rule_N = mkNoun "regola" ; rule_N = mkNoun "regola" ;
-- run_V -- run_V
salt_N = mkNoun "melħ" "melħiet" ; salt_N = mkNoun "melħ" "melħiet" ;
sand_N = mkNoun "ramla" "ramel" [] "ramliet" "rmiel" ; sand_N = mkNoun "ramla" "ramel" [] "ramliet" "rmiel" ;
-- say_VS -- say_VS
school_N = mkNoun "skola" "skejjel" ; school_N = mkNoun "skola" "skejjel" ;
science_N = mkNoun "xjenza" ; science_N = mkNoun "xjenza" ;
-- scratch_V2 -- scratch_V2
sea_N = mkNoun "baħar" [] "baħrejn" "ibħra" [] ; sea_N = mkNoun "baħar" [] "baħrejn" "ibħra" [] ;
-- see_V2 -- see_V2
seed_N = mkNoun "żerriegħa" "żerrigħat" ; seed_N = mkNoun "żerriegħa" "żerrigħat" ;
-- seek_V2 -- seek_V2
-- sell_V3 -- sell_V3
-- send_V3 -- send_V3
-- sew_V -- sew_V
-- sharp_A -- sharp_A
sheep_N = mkNoun "nagħġa" "nagħaġ" [] "nagħġiet" [] ; sheep_N = mkNoun "nagħġa" "nagħaġ" [] "nagħġiet" [] ;
ship_N = mkNoun "vapur" ; ship_N = mkNoun "vapur" ;
shirt_N = mkNoun "qmis" "qomos" Fem ; shirt_N = mkNoun "qmis" "qomos" Fem ;
shoe_N = mkNoun "żarbun" "żraben" ; shoe_N = mkNoun "żarbun" "żraben" ;
shop_N = mkNoun "ħanut" "ħwienet" ; shop_N = mkNoun "ħanut" "ħwienet" ;
-- short_A -- short_A
silver_N = mkNoun "fidda" "fided" ; silver_N = mkNoun "fidda" "fided" ;
-- sing_V -- sing_V
sister_N = mkNoun "oħt" "aħwa" Fem ; sister_N = mkNoun "oħt" "aħwa" Fem ;
-- sit_V -- sit_V
skin_N = mkNoun "ġilda" "ġildiet" ; skin_N = mkNoun "ġilda" "ġildiet" ;
sky_N = mkNoun "sema" "smewwiet" Masc ; sky_N = mkNoun "sema" "smewwiet" Masc ;
-- sleep_V -- sleep_V
-- small_A -- small_A
-- smell_V -- smell_V
smoke_N = mkNoun "duħħan" "dħaħen" ; smoke_N = mkNoun "duħħan" "dħaħen" ;
-- smooth_A -- smooth_A
snake_N = mkNoun "serp" "sriep" ; snake_N = mkNoun "serp" "sriep" ;
snow_N = mkNoun [] "borra" [] [] [] ; snow_N = mkNoun [] "borra" [] [] [] ;
sock_N = mkNoun "kalzetta" ; sock_N = mkNoun "kalzetta" ;
song_N = mkNoun "kanzunetta" ; song_N = mkNoun "kanzunetta" ;
-- speak_V2 -- speak_V2
-- spit_V -- spit_V
-- split_V2 -- split_V2
-- squeeze_V2 -- squeeze_V2
-- stab_V2 -- stab_V2
-- stand_V -- stand_V
star_N = mkNoun "stilla" "stilel" ; star_N = mkNoun "stilla" "stilel" ;
steel_N = mkNounNoPlural "azzar" ; steel_N = mkNounNoPlural "azzar" ;
stick_N = mkNoun "lasta" ; stick_N = mkNoun "lasta" ;
stone_N = mkNoun "ġebla" "ġebel" [] "ġebliet" "ġbiel" ; stone_N = mkNoun "ġebla" "ġebel" [] "ġebliet" "ġbiel" ;
-- stop_V -- stop_V
stove_N = mkNoun "kuker" "kukers" ; -- fuklar? stove_N = mkNoun "kuker" "kukers" ; -- fuklar?
-- straight_A -- straight_A
student_N = mkNoun "student" ; student_N = mkNoun "student" ;
-- stupid_A -- stupid_A
-- suck_V2 -- suck_V2
sun_N = mkNoun "xemx" "xmux" Fem ; sun_N = mkNoun "xemx" "xmux" Fem ;
-- swell_V -- swell_V
-- swim_V -- swim_V
-- switch8off_V2 -- switch8off_V2
-- switch8on_V2 -- switch8on_V2
table_N = mkNoun "mejda" "mwejjed" ; table_N = mkNoun "mejda" "mwejjed" ;
tail_N = mkNoun "denb" "dnieb" ; tail_N = mkNoun "denb" "dnieb" ;
-- talk_V3 -- talk_V3
-- teach_V2 -- teach_V2
teacher_N = mkNoun "għalliem" "għalliema" ; -- għalliema ? teacher_N = mkNoun "għalliem" "għalliema" ; -- għalliema ?
television_N = mkNoun "televixin" "televixins" ; television_N = mkNoun "televixin" "televixins" ;
-- thick_A -- thick_A
-- thin_A -- thin_A
-- think_V -- think_V
-- throw_V2 -- throw_V2
-- tie_V2 -- tie_V2
-- today_Adv -- today_Adv
tongue_N = mkNoun "lsien" "ilsna" ; tongue_N = mkNoun "lsien" "ilsna" ;
tooth_N = mkNoun "sinna" [] [] "sinniet" "snien" ; -- darsa? tooth_N = mkNoun "sinna" [] [] "sinniet" "snien" ; -- darsa?
train_N = mkNoun "ferrovija" ; train_N = mkNoun "ferrovija" ;
-- travel_V -- travel_V
tree_N = mkNoun "siġra" "siġar" [] "siġriet" [] ; tree_N = mkNoun "siġra" "siġar" [] "siġriet" [] ;
-- turn_V -- turn_V
-- ugly_A -- ugly_A
-- uncertain_A -- uncertain_A
-- understand_V2 -- understand_V2
university_N = mkNoun "università" "universitàjiet" ; university_N = mkNoun "università" "universitàjiet" ;
village_N = mkNoun "raħal" "rħula" ; -- villaġġ ? village_N = mkNoun "raħal" "rħula" ; -- villaġġ ?
-- vomit_V -- vomit_V
-- wait_V2 -- wait_V2
-- walk_V -- walk_V
war_N = mkNoun "gwerra" "gwerrer" ; war_N = mkNoun "gwerra" "gwerrer" ;
-- warm_A -- warm_A
-- wash_V2 -- wash_V2
-- watch_V2 -- watch_V2
water_N = mkNoun "ilma" "ilmijiet" Masc ; water_N = mkNoun "ilma" "ilmijiet" Masc ;
-- wet_A -- wet_A
-- white_A -- white_A
-- wide_A -- wide_A
wife_N = mkNoun "mara" "nisa" ; wife_N = mkNoun "mara" "nisa" ;
-- win_V2 -- win_V2
wind_N = mkNoun "riħ" [] [] "rjieħ" "rjiħat" ; wind_N = mkNoun "riħ" [] [] "rjieħ" "rjiħat" ;
window_N = mkNoun "tieqa" "twieqi" ; window_N = mkNoun "tieqa" "twieqi" ;
wine_N = mkNoun [] "nbid" [] [] "nbejjed" ; wine_N = mkNoun [] "nbid" [] [] "nbejjed" ;
wing_N = mkNoun "ġewnaħ" "ġwienaħ" ; wing_N = mkNoun "ġewnaħ" "ġwienaħ" ;
-- wipe_V2 -- wipe_V2
woman_N = mkNoun "mara" "nisa" ; woman_N = mkNoun "mara" "nisa" ;
-- wonder_VQ -- wonder_VQ
wood_N = mkNoun "injam" "injamiet" ; wood_N = mkNoun "injam" "injamiet" ;
worm_N = mkNoun "dudu" "dud" [] "dudiet" "dwied" ; -- duda worm_N = mkNoun "dudu" "dud" [] "dudiet" "dwied" ; -- duda
-- write_V2 -- write_V2
year_N = mkNoun "sena" [] "sentejn" "snin" [] ; year_N = mkNoun "sena" [] "sentejn" "snin" [] ;
-- yellow_A -- yellow_A
-- young_A -- young_A
} ; } ;

View File

@@ -1,10 +1,10 @@
-- MorphoMlt.gf: morphology -- MorphoMlt.gf: morphology
-- --
-- Maltese Resource Grammar Library -- Maltese Resource Grammar Library
-- John J. Camilleri, 2011 -- John J. Camilleri, 2012
-- Licensed under LGPL -- Licensed under LGPL
resource MorphoMlt = ResMlt ** open Prelude in { resource MorphoMlt = ResMlt ** open Prelude in {
flags optimize=all ; coding=utf8 ; flags optimize=all ; coding=utf8 ;
} }

View File

@@ -1,11 +1,11 @@
-- NounMlt.gf: noun phrases and nouns -- NounMlt.gf: noun phrases and nouns
-- --
-- Maltese Resource Grammar Library -- Maltese Resource Grammar Library
-- John J. Camilleri, 2011 -- John J. Camilleri, 2012
-- Licensed under LGPL -- Licensed under LGPL
concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in { concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in {
flags optimize=noexpand ; flags optimize=noexpand ;
-- Card -- Card
-- CN -- CN

View File

@@ -1,495 +1,491 @@
-- NumeralMlt.gf: cardinals and ordinals -- NumeralMlt.gf: cardinals and ordinals
-- --
-- Maltese Resource Grammar Library -- Maltese Resource Grammar Library
-- John J. Camilleri, 2011 -- John J. Camilleri, 2012
-- Licensed under LGPL -- Licensed under LGPL
concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt in { concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt in {
flags coding=utf8 ; flags coding=utf8 ;
-- Numeral, Digit -- Numeral, Digit
-- Dig, Digits -- Dig, Digits
{- {-
-- This code taken from examples/numerals/maltese.sty in GF darcs repository, July 2011. -- This code taken from examples/numerals/maltese.sty in GF darcs repository, July 2011.
-- Original author unknown -- Original author unknown
-- ABSTRACT definitions copied from lib/src/abstract/Numeral.gf -- ABSTRACT definitions copied from lib/src/abstract/Numeral.gf
-- Numerals from 1 to 999999 in decimal notation -- Numerals from 1 to 999999 in decimal notation
cat cat
Numeral ; -- 0.. Numeral ; -- 0..
Digit ; -- 2..9 Digit ; -- 2..9
Sub10 ; -- 1..9 Sub10 ; -- 1..9
Sub100 ; -- 1..99 Sub100 ; -- 1..99
Sub1000 ; -- 1..999 Sub1000 ; -- 1..999
Sub1000000 ; -- 1..999999 Sub1000000 ; -- 1..999999
data data
num : Sub1000000 -> Numeral ; num : Sub1000000 -> Numeral ;
n2, n3, n4, n5, n6, n7, n8, n9 : Digit ; n2, n3, n4, n5, n6, n7, n8, n9 : Digit ;
pot01 : Sub10 ; -- 1 pot01 : Sub10 ; -- 1
pot0 : Digit -> Sub10 ; -- d * 1 pot0 : Digit -> Sub10 ; -- d * 1
pot110 : Sub100 ; -- 10 pot110 : Sub100 ; -- 10
pot111 : Sub100 ; -- 11 pot111 : Sub100 ; -- 11
pot1to19 : Digit -> Sub100 ; -- 10 + d pot1to19 : Digit -> Sub100 ; -- 10 + d
pot0as1 : Sub10 -> Sub100 ; -- coercion of 1..9 pot0as1 : Sub10 -> Sub100 ; -- coercion of 1..9
pot1 : Digit -> Sub100 ; -- d * 10 pot1 : Digit -> Sub100 ; -- d * 10
pot1plus : Digit -> Sub10 -> Sub100 ; -- d * 10 + n pot1plus : Digit -> Sub10 -> Sub100 ; -- d * 10 + n
pot1as2 : Sub100 -> Sub1000 ; -- coercion of 1..99 pot1as2 : Sub100 -> Sub1000 ; -- coercion of 1..99
pot2 : Sub10 -> Sub1000 ; -- m * 100 pot2 : Sub10 -> Sub1000 ; -- m * 100
pot2plus : Sub10 -> Sub100 -> Sub1000 ; -- m * 100 + n pot2plus : Sub10 -> Sub100 -> Sub1000 ; -- m * 100 + n
pot2as3 : Sub1000 -> Sub1000000 ; -- coercion of 1..999 pot2as3 : Sub1000 -> Sub1000000 ; -- coercion of 1..999
pot3 : Sub1000 -> Sub1000000 ; -- m * 1000 pot3 : Sub1000 -> Sub1000000 ; -- m * 1000
pot3plus : Sub1000 -> Sub1000 -> Sub1000000 ; -- m * 1000 + n pot3plus : Sub1000 -> Sub1000 -> Sub1000000 ; -- m * 1000 + n
-} -}
oper oper
Form1 = { Form1 = {
s : DForm => CardOrd => Num_Case => Str ; s : DForm => CardOrd => Num_Case => Str ;
--thou : CardOrd => Str ; --thou : CardOrd => Str ;
thou : { s : Str ; treatAs : DForm } ; thou : { s : Str ; treatAs : DForm } ;
n : Num_Number ; n : Num_Number ;
} ; } ;
Form2 = { Form2 = {
s : CardOrd => Num_Case => Str ; s : CardOrd => Num_Case => Str ;
--thou : CardOrd => Str ; --thou : CardOrd => Str ;
thou : { s : Str ; treatAs : DForm } ; thou : { s : Str ; treatAs : DForm } ;
n : Num_Number ; n : Num_Number ;
f : DForm ; f : DForm ;
} ; } ;
lincat lincat
Digit = Form1 ; Digit = Form1 ;
Sub10 = Form1 ; Sub10 = Form1 ;
Sub100 = Form2 ; Sub100 = Form2 ;
Sub1000 = Form2 ; Sub1000 = Form2 ;
Sub1000000 = Form2 ; Sub1000000 = Form2 ;
oper oper
-- Make a "number" (in this case a Form1) -- Make a "number" (in this case a Form1)
-- Should be moved to ResMlt ? -- Should be moved to ResMlt ?
-- Params: -- Params:
-- unit, eg TNEJN -- unit, eg TNEJN
-- ordinal unit (without article), eg TIENI -- ordinal unit (without article), eg TIENI
-- adjectival, eg ŻEWĠ -- adjectival, eg ŻEWĠ
-- teen, eg TNAX -- teen, eg TNAX
-- ten, eg GĦOXRIN -- ten, eg GĦOXRIN
-- number, eg NumDual -- number, eg NumDual
--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 -> 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 -> mkNum : Str -> Str -> Str -> Str -> Str -> Num_Number -> Form1 = \unit,ordunit,adjectival,teen,ten,num ->
let let
hundred = case num of { hundred = case num of {
NumSg => "mija" ; NumSg => "mija" ;
NumDual => "mitejn" ; NumDual => "mitejn" ;
_ => adjectival _ => adjectival
} ; } ;
thousand = case num of { thousand = case num of {
NumSg => "wieħed" ; NumSg => "wieħed" ;
NumDual => "elfejn" ; NumDual => "elfejn" ;
_ => case adjectival of { _ => case adjectival of {
_ + "'" => (init adjectival) + "t" ; -- eg SEBA' -> SEBAT _ + "'" => (init adjectival) + "t" ; -- eg SEBA' -> SEBAT
_ + "t" => adjectival ; -- eg SITT -> SITT _ + "t" => adjectival ; -- eg SITT -> SITT
_ => adjectival + "t" -- eg ĦAMES -> ĦAMEST _ => adjectival + "t" -- eg ĦAMES -> ĦAMEST
} }
} }
in { in {
s = table { s = table {
Unit => table { Unit => table {
NCard => table { NCard => table {
NumNominative => unit ; -- eg TNEJN NumNominative => unit ; -- eg TNEJN
NumAdjectival => adjectival -- eg ŻEWĠ NumAdjectival => adjectival -- eg ŻEWĠ
} ; } ;
NOrd => \\numcase => definiteArticle ++ ordunit -- eg IT-TIENI NOrd => \\numcase => definiteArticle ++ ordunit -- eg IT-TIENI
} ; } ;
Teen => table { Teen => table {
NCard => table { NCard => table {
NumNominative => teen ; -- eg TNAX NumNominative => teen ; -- eg TNAX
NumAdjectival => teen + "-il" -- eg TNAX-IL NumAdjectival => teen + "-il" -- eg TNAX-IL
} ; } ;
NOrd => table { NOrd => table {
NumNominative => definiteArticle ++ teen ; -- eg IT-TNAX NumNominative => definiteArticle ++ teen ; -- eg IT-TNAX
NumAdjectival => definiteArticle ++ (teen + "-il") -- eg IT-TNAX-IL NumAdjectival => definiteArticle ++ (teen + "-il") -- eg IT-TNAX-IL
} }
} ; } ;
Ten => table { Ten => table {
NCard => \\numcase => ten ; -- eg TLETIN NCard => \\numcase => ten ; -- eg TLETIN
NOrd => \\numcase => definiteArticle ++ ten -- eg IT-TLETIN NOrd => \\numcase => definiteArticle ++ ten -- eg IT-TLETIN
} ; } ;
Hund => table { Hund => table {
NCard => case num of { NCard => case num of {
NumSg => table { NumSg => table {
NumNominative => "mija" ; -- ie MIJA NumNominative => "mija" ; -- ie MIJA
NumAdjectival => "mitt" -- ie MITT suldat NumAdjectival => "mitt" -- ie MITT suldat
} ; } ;
NumDual => \\numcase => hundred ; -- ie MITEJN NumDual => \\numcase => hundred ; -- ie MITEJN
_ => table { _ => table {
NumNominative => hundred ++ "mija" ; -- eg MIJA, SEBA' MIJA NumNominative => hundred ++ "mija" ; -- eg MIJA, SEBA' MIJA
NumAdjectival => hundred ++ "mitt" -- eg MITT, SEBA' MITT suldat NumAdjectival => hundred ++ "mitt" -- eg MITT, SEBA' MITT suldat
} }
} ; } ;
NOrd => case num of { NOrd => case num of {
NumSg => table { NumSg => table {
NumNominative => definiteArticle ++ "mija" ; -- ie IL-MIJA NumNominative => definiteArticle ++ "mija" ; -- ie IL-MIJA
NumAdjectival => definiteArticle ++ "mitt" -- ie IL-MITT suldat NumAdjectival => definiteArticle ++ "mitt" -- ie IL-MITT suldat
} ; } ;
NumDual => \\numcase => definiteArticle ++ hundred ; -- ie IL-MITEJN, IL-MITEJN suldat NumDual => \\numcase => definiteArticle ++ hundred ; -- ie IL-MITEJN, IL-MITEJN suldat
_ => table { _ => table {
NumNominative => definiteArticle ++ hundred ++ "mija" ; -- eg IS-SEBA' MIJA NumNominative => definiteArticle ++ hundred ++ "mija" ; -- eg IS-SEBA' MIJA
NumAdjectival => definiteArticle ++ hundred ++ "mitt" -- eg IS-SEBA' MITT suldat NumAdjectival => definiteArticle ++ hundred ++ "mitt" -- eg IS-SEBA' MITT suldat
} }
} }
} }
} ; } ;
-- thou = thousand ; -- thou = thousand ;
thou = { s = thousand ; treatAs = Unit } ; thou = { s = thousand ; treatAs = Unit } ;
n = num ; n = num ;
} ; } ;
lin lin
-- Unit Ord.Unit Adjectival Teen Ten Number -- Unit Ord.Unit Adjectival Teen Ten Number
n2 = mkNum "tnejn" "tieni" "żewġ" "tnax" "għoxrin" NumDual ; n2 = mkNum "tnejn" "tieni" "żewġ" "tnax" "għoxrin" NumDual ;
n3 = mkNum "tlieta" "tielet" "tlett" "tlettax" "tletin" NumPl ; -- TODO tlett / tliet ? n3 = mkNum "tlieta" "tielet" "tlett" "tlettax" "tletin" NumPl ; -- TODO tlett / tliet ?
n4 = mkNum "erbgħa" "raba'" "erba'" "erbatax" "erbgħin" NumPl ; n4 = mkNum "erbgħa" "raba'" "erba'" "erbatax" "erbgħin" NumPl ;
n5 = mkNum "ħamsa" "ħames" "ħames" "ħmistax" "ħamsin" NumPl ; n5 = mkNum "ħamsa" "ħames" "ħames" "ħmistax" "ħamsin" NumPl ;
n6 = mkNum "sitta" "sitt" "sitt" "sittax" "sittin" NumPl ; n6 = mkNum "sitta" "sitt" "sitt" "sittax" "sittin" NumPl ;
n7 = mkNum "sebgħa" "seba'" "seba'" "sbatax" "sebgħin" NumPl ; n7 = mkNum "sebgħa" "seba'" "seba'" "sbatax" "sebgħin" NumPl ;
n8 = mkNum "tmienja" "tmin" "tmin" "tmintax" "tmenin" NumPl ; n8 = mkNum "tmienja" "tmin" "tmin" "tmintax" "tmenin" NumPl ;
n9 = mkNum "disgħa" "disa'" "disa'" "dsatax" "disgħin" NumPl ; n9 = mkNum "disgħa" "disa'" "disa'" "dsatax" "disgħin" NumPl ;
oper oper
-- Helper functions for below -- Helper functions for below
mkForm2 : Form2 = overload { mkForm2 : Form2 = overload {
-- Infer adjectival, thousands -- Infer adjectival, thousands
mkForm2 : Str -> Str -> DForm -> Form2 = \card,ord,form -> { mkForm2 : Str -> Str -> DForm -> Form2 = \card,ord,form -> {
s = table { s = table {
NCard => \\numcase => card ; NCard => \\numcase => card ;
NOrd => \\numcase => ord NOrd => \\numcase => ord
} ; } ;
--thou = card ; --thou = card ;
thou = { s = card ; treatAs = form } ; thou = { s = card ; treatAs = form } ;
n = NumPl ; n = NumPl ;
f = form ; f = form ;
} ; } ;
-- Explicit everything -- Explicit everything
mkForm2 : Str -> Str -> Str -> Str -> DForm -> Form2 = \card,ord,adj,thousand,form -> { mkForm2 : Str -> Str -> Str -> Str -> DForm -> Form2 = \card,ord,adj,thousand,form -> {
s = table { s = table {
NCard => table { NCard => table {
NumNominative => card ; NumNominative => card ;
NumAdjectival => adj NumAdjectival => adj
} ; } ;
--NOrd => \\numcase => addDefiniteArticle ord --NOrd => \\numcase => addDefiniteArticle ord
NOrd => table { NOrd => table {
NumNominative => definiteArticle ++ ord ; NumNominative => definiteArticle ++ ord ;
NumAdjectival => definiteArticle ++ adj NumAdjectival => definiteArticle ++ adj
} }
} ; } ;
--thou = thousand ; --thou = thousand ;
thou = { s = thousand ; treatAs = form } ; thou = { s = thousand ; treatAs = form } ;
n = NumPl ; n = NumPl ;
f = form ; f = form ;
} ; } ;
-- Given an existing table -- Given an existing table
mkForm2 : (CardOrd => Num_Case => Str) -> DForm -> Form2 = \tab,form -> { mkForm2 : (CardOrd => Num_Case => Str) -> DForm -> Form2 = \tab,form -> {
s = tab ; s = tab ;
thou = { thou = {
s = case form of { s = case form of {
Teen => tab ! NCard ! NumAdjectival ; Teen => tab ! NCard ! NumAdjectival ;
_ => tab ! NCard ! NumNominative _ => tab ! NCard ! NumNominative
} ; } ;
treatAs = form ; treatAs = form ;
} ; } ;
n = NumPl ; n = NumPl ;
f = form ; f = form ;
} ; } ;
}; -- end of mkForm2 overload }; -- end of mkForm2 overload
lin lin
-- Sub1000000 -> Numeral -- Sub1000000 -> Numeral
num x = x ; num x = x ;
-- Sub10 ; 1 -- Sub10 ; 1
-- Unit Ord.Unit Adjectival Teen Ten Number -- Unit Ord.Unit Adjectival Teen Ten Number
pot01 = mkNum "wieħed" "ewwel" "wieħed" [] [] NumSg ; pot01 = mkNum "wieħed" "ewwel" "wieħed" [] [] NumSg ;
-- Digit -> Sub10 ; d * 1 -- Digit -> Sub10 ; d * 1
pot0 d = d ** {n = case d.n of { NumDual => NumDual ; _ => NumPl } } ; pot0 d = d ** {n = case d.n of { NumDual => NumDual ; _ => NumPl } } ;
-- Sub100 ; 10, 11 -- Sub100 ; 10, 11
-- Cardinal Ordinal Adjectival Thousand Form -- Cardinal Ordinal Adjectival Thousand Form
pot110 = mkForm2 "għaxra" "għaxar" "għaxar" "għaxart" Unit ; pot110 = mkForm2 "għaxra" "għaxar" "għaxar" "għaxart" Unit ;
pot111 = mkForm2 "ħdax" "ħdax" "ħdax-il" "ħdax-il" Teen ; pot111 = mkForm2 "ħdax" "ħdax" "ħdax-il" "ħdax-il" Teen ;
{- {-
pot110 = { pot110 = {
s = table { s = table {
NCard => table { NCard => table {
NumNominative => "għaxra" ; NumNominative => "għaxra" ;
NumAdjectival => "għaxar" NumAdjectival => "għaxar"
} ; } ;
NOrd => \\numcase => addDefiniteArticle "għaxar" NOrd => \\numcase => addDefiniteArticle "għaxar"
} ; } ;
thou = table { thou = table {
NCard => "għaxart" ; NCard => "għaxart" ;
NOrd => addDefiniteArticle "għaxart" NOrd => addDefiniteArticle "għaxart"
} ; } ;
n = NumPl ; n = NumPl ;
f = Ten ; f = Ten ;
} ; } ;
-} -}
-- Digit -> Sub100 ; 10 + d -- Digit -> Sub100 ; 10 + d
pot1to19 d = pot1to19 d =
mkForm2 mkForm2
(d.s ! Teen) (d.s ! Teen)
Teen Teen
; ;
-- Sub10 -> Sub100 ; coercion of 1..9 -- Sub10 -> Sub100 ; coercion of 1..9
pot0as1 d = { pot0as1 d = {
s = d.s ! Unit ; s = d.s ! Unit ;
thou = d.thou ; thou = d.thou ;
n = d.n ; n = d.n ;
f = Unit ; f = Unit ;
} ; } ;
-- Digit -> Sub100 ; d * 10 -- Digit -> Sub100 ; d * 10
pot1 d = pot1 d =
mkForm2 mkForm2
(d.s ! Ten) (d.s ! Ten)
Ten Ten
; ;
-- Digit -> Sub10 -> Sub100 ; d * 10 + n -- Digit -> Sub10 -> Sub100 ; d * 10 + n
pot1plus d n = pot1plus d n =
let unit = (n.s ! Unit ! NCard ! NumNominative) in let unit = (n.s ! Unit ! NCard ! NumNominative) in
mkForm2 mkForm2
(unit ++ "u" ++ (d.s ! Ten ! NCard ! NumNominative)) (unit ++ "u" ++ (d.s ! Ten ! NCard ! NumNominative))
(definiteArticle ++ unit ++ "u" ++ (d.s ! Ten ! NCard ! NumNominative)) (definiteArticle ++ unit ++ "u" ++ (d.s ! Ten ! NCard ! NumNominative))
Ten Ten
; ;
-- Sub100 -> Sub1000 ; coercion of 1..99 -- Sub100 -> Sub1000 ; coercion of 1..99
pot1as2 m = m ; pot1as2 m = m ;
-- Sub10 -> Sub1000 ; m * 100 -- Sub10 -> Sub1000 ; m * 100
pot2 m = { pot2 m = {
s = m.s ! Hund ; s = m.s ! Hund ;
thou = { thou = {
s = case m.n of { s = case m.n of {
NumSg => "mitt" ; -- Special case for "mitt elf" NumSg => "mitt" ; -- Special case for "mitt elf"
NumDual => "mitejn" ; -- Special case for "mitejn elf" NumDual => "mitejn" ; -- Special case for "mitejn elf"
_ => m.thou.s _ => m.thou.s
} ; } ;
treatAs = Hund ; treatAs = Hund ;
} ; } ;
n = NumPl ; n = NumPl ;
f = Hund ; f = Hund ;
} ; } ;
-- Sub10 -> Sub100 -> Sub1000 ; m * 100 + n -- Sub10 -> Sub100 -> Sub1000 ; m * 100 + n
pot2plus m n = pot2plus m n =
let let
hund : Str = m.s ! Hund ! NCard ! NumNominative hund : Str = m.s ! Hund ! NCard ! NumNominative
in { in {
s = table { s = table {
NCard => table { NCard => table {
NumNominative => hund ++ "u" ++ n.s ! NCard ! NumNominative ; NumNominative => hund ++ "u" ++ n.s ! NCard ! NumNominative ;
NumAdjectival => hund ++ "u" ++ n.s ! NCard ! NumAdjectival NumAdjectival => hund ++ "u" ++ n.s ! NCard ! NumAdjectival
} ; } ;
NOrd => table { NOrd => table {
NumNominative => definiteArticle ++ hund ++ "u" ++ n.s ! NCard ! NumNominative ; NumNominative => definiteArticle ++ hund ++ "u" ++ n.s ! NCard ! NumNominative ;
NumAdjectival => definiteArticle ++ hund ++ "u" ++ n.s ! NCard ! NumAdjectival NumAdjectival => definiteArticle ++ hund ++ "u" ++ n.s ! NCard ! NumAdjectival
} }
} ; } ;
thou = { thou = {
s = hund ++ "u" ++ n.thou.s ; s = hund ++ "u" ++ n.thou.s ;
treatAs = case n.n of { treatAs = case n.n of {
NumSg => Ten ; -- specific case for mija u wiehed elf NumSg => Ten ; -- specific case for mija u wiehed elf
_ => n.f -- eg So that "106,000" is treated as "6,000" _ => n.f -- eg So that "106,000" is treated as "6,000"
} ; } ;
} ; } ;
n = NumPl ; n = NumPl ;
f = Hund ; f = Hund ;
} ; } ;
-- Sub1000 -> Sub1000000 ; coercion of 1..999 -- Sub1000 -> Sub1000000 ; coercion of 1..999
pot2as3 m = m ; pot2as3 m = m ;
-- Sub1000 -> Sub1000000 ; m * 1000 -- Sub1000 -> Sub1000000 ; m * 1000
pot3 m = { pot3 m = {
s = s =
case m.n of { case <m.n, m.thou.treatAs> of {
NumSg => numTable "elf" ; -- 1 * 1000 <NumSg ,_> => numTable "elf" ; -- 1 * 1000
NumDual => numTable "elfejn" ; -- 2 * 2000 <NumDual,_> => numTable "elfejn" ; -- 2 * 2000
NumPl => case m.thou.treatAs of { <NumPl ,Unit> => numTable m.thou.s "elef" ; -- 3-10 * 1000
Unit => numTable m.thou.s "elef" ; -- 3-10 * 1000 <NumPl ,_> => numTable m.thou.s "elf" -- 11+ * 1000
_ => numTable m.thou.s "elf" -- 11+ * 1000 } ;
}
} ;
{- {-
case m.f of { case m.f of {
Unit => numTable m.thou "elef" ; -- Unit => numTable m.thou "elef" ; --
_ => case m.n of { _ => case m.n of {
NumSg => numTable "elf" ; -- NumSg => numTable "elf" ; --
NumDual => numTable "elfejn" ; -- NumDual => numTable "elfejn" ; --
NumPl => numTable m.thou "elf" -- NumPl => numTable m.thou "elf" --
} }
} ; } ;
-} -}
thou = { thou = {
s = m.thou.s ; s = m.thou.s ;
treatAs = m.f ; treatAs = m.f ;
} ; } ;
n = NumPl ; n = NumPl ;
f = Hund ; -- NOT IMPORTANT f = Hund ; -- NOT IMPORTANT
} ; } ;
-- Sub1000 -> Sub1000 -> Sub1000000 ; m * 1000 + n -- Sub1000 -> Sub1000 -> Sub1000000 ; m * 1000 + n
pot3plus m n = { pot3plus m n = {
s = s =
let let
ukemm = table { ukemm = table {
NumNominative => "u" ++ (n.s ! NCard ! NumNominative) ; NumNominative => "u" ++ (n.s ! NCard ! NumNominative) ;
NumAdjectival => "u" ++ (n.s ! NCard ! NumAdjectival) NumAdjectival => "u" ++ (n.s ! NCard ! NumAdjectival)
} }
in in
case m.n of { case <m.n, m.thou.treatAs> of {
<NumSg ,_> => numTable "elf" ukemm ;
<NumDual,_> => numTable "elfejn" ukemm ;
<NumPl ,Unit> => numTable (m.thou.s ++ "elef") ukemm ;
<NumPl ,_> => numTable (m.thou.s ++ "elf") ukemm
} ;
{- {-
NumSg => elf2 "elf" ukemm ; NumSg => elf2 "elf" ukemm ;
NumDual => elf2 "elfejn" ukemm ; NumDual => elf2 "elfejn" ukemm ;
NumPl => case m.f of { NumPl => case m.f of {
Unit => elf2 m.thou ("elef" ++ ukemm) ; Unit => elf2 m.thou ("elef" ++ ukemm) ;
_ => elf2 m.thou ("elf" ++ ukemm) _ => elf2 m.thou ("elf" ++ ukemm)
} }
-} -}
NumSg => numTable "elf" ukemm ; thou = {
NumDual => numTable "elfejn" ukemm ; s = m.thou.s ;
NumPl => case m.thou.treatAs of { treatAs = m.f ;
Unit => numTable (m.thou.s ++ "elef") ukemm ; } ;
_ => numTable (m.thou.s ++ "elf") ukemm n = NumPl ;
} f = Hund ; -- NOT IMPORTANT
} ; } ;
thou = {
s = m.thou.s ;
treatAs = m.f ;
} ;
n = NumPl ;
f = Hund ; -- NOT IMPORTANT
} ;
oper oper
-- Build "x thousand" table -- Build "x thousand" table
numTable : (CardOrd => Num_Case => Str) = overload { numTable : (CardOrd => Num_Case => Str) = overload {
numTable : Str -> (CardOrd => Num_Case => Str) = \thou -> table { numTable : Str -> (CardOrd => Num_Case => Str) = \thou -> table {
NCard => \\numcase => thou ; NCard => \\numcase => thou ;
NOrd => \\numcase => definiteArticle ++ thou NOrd => \\numcase => definiteArticle ++ thou
} ; } ;
numTable : Str -> Str -> (CardOrd => Num_Case => Str) = \thou,attach -> table { numTable : Str -> Str -> (CardOrd => Num_Case => Str) = \thou,attach -> table {
NCard => \\numcase => thou ++ attach ; NCard => \\numcase => thou ++ attach ;
NOrd => \\numcase => definiteArticle ++ thou ++ attach NOrd => \\numcase => definiteArticle ++ thou ++ attach
} ; } ;
numTable : Str -> (Num_Case => Str) -> (CardOrd => Num_Case => Str) = \thou,attach -> table { numTable : Str -> (Num_Case => Str) -> (CardOrd => Num_Case => Str) = \thou,attach -> table {
NCard => table { NCard => table {
NumNominative => thou ++ (attach ! NumNominative) ; NumNominative => thou ++ (attach ! NumNominative) ;
NumAdjectival => thou ++ (attach ! NumAdjectival) NumAdjectival => thou ++ (attach ! NumAdjectival)
} ; } ;
NOrd => table { NOrd => table {
NumNominative => definiteArticle ++ thou ++ (attach ! NumNominative) ; NumNominative => definiteArticle ++ thou ++ (attach ! NumNominative) ;
NumAdjectival => definiteArticle ++ thou ++ (attach ! NumAdjectival) NumAdjectival => definiteArticle ++ thou ++ (attach ! NumAdjectival)
} }
} ; } ;
} ; } ;
{- {-
-- elf : (CardOrd => Str) = overload { -- elf : (CardOrd => Str) = overload {
elf : Str -> (CardOrd => Num_Case => Str) = \m -> table { elf : Str -> (CardOrd => Num_Case => Str) = \m -> table {
NCard => \\numcase => m ; NCard => \\numcase => m ;
NOrd => \\numcase => addDefiniteArticle m NOrd => \\numcase => addDefiniteArticle m
} ; } ;
elf2 : Str -> Str -> (CardOrd => Num_Case => Str) = \m,n -> table { elf2 : Str -> Str -> (CardOrd => Num_Case => Str) = \m,n -> table {
NCard => \\numcase => m ++ n ; NCard => \\numcase => m ++ n ;
NOrd => \\numcase => (addDefiniteArticle m) ++ n NOrd => \\numcase => (addDefiniteArticle m) ++ n
} ; } ;
-} -}
-- } ; -- } ;
{- {-
Numerals as sequences of digits have a separate, simpler grammar Numerals as sequences of digits have a separate, simpler grammar
================================================================ ================================================================
cat cat
Dig ; -- single digit 0..9 Dig ; -- single digit 0..9
data data
IDig : Dig -> Digits ; -- 8 IDig : Dig -> Digits ; -- 8
IIDig : Dig -> Digits -> Digits ; -- 876 IIDig : Dig -> Digits -> Digits ; -- 876
D_0, D_1, D_2, D_3, D_4, D_5, D_6, D_7, D_8, D_9 : Dig ; D_0, D_1, D_2, D_3, D_4, D_5, D_6, D_7, D_8, D_9 : Dig ;
-} -}
lincat lincat
Dig = { Dig = {
s : Str ; s : Str ;
n : Num_Number n : Num_Number
} ; } ;
oper oper
-- Helper for making a Dig object. Specifying no number inplies plural. -- Helper for making a Dig object. Specifying no number inplies plural.
mkDig : Dig = overload { mkDig : Dig = overload {
mkDig : Str -> Dig = \digit -> lin Dig { mkDig : Str -> Dig = \digit -> lin Dig {
s = digit ; s = digit ;
n = NumPl n = NumPl
} ; } ;
mkDig : Str -> Num_Number -> Dig = \digit,num -> lin Dig { mkDig : Str -> Num_Number -> Dig = \digit,num -> lin Dig {
s = digit ; s = digit ;
n = num n = num
} ; } ;
} ; } ;
-- For correct comma placement in Digits -- For correct comma placement in Digits
commaIf : DTail -> Str = \t -> case t of { commaIf : DTail -> Str = \t -> case t of {
T3 => "," ; T3 => "," ;
_ => [] _ => []
} ; } ;
inc : DTail -> DTail = \t -> case t of { inc : DTail -> DTail = \t -> case t of {
T1 => T2 ; T1 => T2 ;
T2 => T3 ; T2 => T3 ;
T3 => T1 T3 => T1
} ; } ;
lin lin
D_0 = mkDig "0" ; D_0 = mkDig "0" ;
D_1 = mkDig "1" NumSg ; D_1 = mkDig "1" NumSg ;
D_2 = mkDig "2" NumDual ; D_2 = mkDig "2" NumDual ;
D_3 = mkDig "3" ; D_3 = mkDig "3" ;
D_4 = mkDig "4" ; D_4 = mkDig "4" ;
D_5 = mkDig "5" ; D_5 = mkDig "5" ;
D_6 = mkDig "6" ; D_6 = mkDig "6" ;
D_7 = mkDig "7" ; D_7 = mkDig "7" ;
D_8 = mkDig "8" ; D_8 = mkDig "8" ;
D_9 = mkDig "9" ; D_9 = mkDig "9" ;
-- Create Digits from a Dig -- Create Digits from a Dig
IDig d = d ** {tail = T1} ; IDig d = d ** {tail = T1} ;
-- Create Digits from combining Dig with Digits -- Create Digits from combining Dig with Digits
IIDig d i = { IIDig d i = {
s = d.s ++ (commaIf i.tail) ++ i.s ; s = d.s ++ (commaIf i.tail) ++ i.s ;
n = NumPl ; n = NumPl ;
tail = inc i.tail tail = inc i.tail
} ; } ;
} }

View File

@@ -1,9 +1,9 @@
-- Maltese Resource Grammar Library -- Maltese Resource Grammar Library
-- John J. Camilleri, 2011 -- John J. Camilleri, 2012
-- Licensed under LGPL -- Licensed under LGPL
resource OrthoMlt = open Prelude, Predef in { resource OrthoMlt = open Prelude, Predef in {
flags coding=utf8 ; flags coding=utf8 ;
} }

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,311 +1,311 @@
-- ResMlt.gf: Language-specific parameter types, morphology, VP formation -- ResMlt.gf: Language-specific parameter types, morphology, VP formation
-- --
-- Maltese Resource Grammar Library -- Maltese Resource Grammar Library
-- John J. Camilleri, 2011 -- John J. Camilleri, 2012
-- Licensed under LGPL -- Licensed under LGPL
--# -path=.:../abstract:../common:../prelude --# -path=.:../abstract:../common:../prelude
{- {-
Verb types summary: Verb types summary:
=================== ===================
- Strong verb: none of radicals are semi-vowels eg ĦAREĠ (Ħ-R-Ġ) - Strong verb: none of radicals are semi-vowels eg ĦAREĠ (Ħ-R-Ġ)
- Defective verb: third radical is semivowel GĦ eg QATA' (Q-T-GĦ) - Defective verb: third radical is semivowel GĦ eg QATA' (Q-T-GĦ)
- Weak verb: third radical is semivowel J eg MEXA (M-X-J) - Weak verb: third radical is semivowel J eg MEXA (M-X-J)
- Hollow verb: long A or IE btw radicals 1 & 3 eg QAL (Q-W-L) or SAB (S-J-B) - Hollow verb: long A or IE btw radicals 1 & 3 eg QAL (Q-W-L) or SAB (S-J-B)
- Double/Geminated verb: radicals 2 & 3 identical eg ĦABB (Ħ-B-B) - Double/Geminated verb: radicals 2 & 3 identical eg ĦABB (Ħ-B-B)
- Quadriliteral verb: 4 radicals eg QARMEĊ (Q-R-M-Ċ) - Quadriliteral verb: 4 radicals eg QARMEĊ (Q-R-M-Ċ)
-} -}
resource ResMlt = PatternsMlt ** open Prelude in { resource ResMlt = PatternsMlt ** open Prelude in {
flags coding=utf8 ; flags coding=utf8 ;
param param
-- Used in the NumeralMlt module -- Used in the NumeralMlt module
CardOrd = NCard | NOrd ; CardOrd = NCard | NOrd ;
DTail = T1 | T2 | T3 ; -- This is already defined in ParamX... DTail = T1 | T2 | T3 ; -- This is already defined in ParamX...
Num_Number = Num_Number =
NumSg NumSg
| NumDual | NumDual
| NumPl | NumPl
; ;
DForm = DForm =
Unit -- 0..10 Unit -- 0..10
| Teen -- 11-19 | Teen -- 11-19
--| TeenIl -- 11-19 --| TeenIl -- 11-19
| Ten -- 20-99 | Ten -- 20-99
| Hund -- 100..999 | Hund -- 100..999
--| Thou -- 1000+ --| Thou -- 1000+
; ;
Num_Case = Num_Case =
NumNominative NumNominative
| NumAdjectival ; | NumAdjectival ;
{- {-
Note: NNQ = Non-numerically quantifiable Note: NNQ = Non-numerically quantifiable
Nouns can have the following forms: Nouns can have the following forms:
o Singular o Singular
- Singulative (1, >10) - Singulative (1, >10)
- Collective (NNQ) - Collective (NNQ)
o Dual (2) o Dual (2)
o Plural o Plural
- Determinate (2-10) - Determinate (2-10)
- Indeterminate (NNQ) - Indeterminate (NNQ)
- Sound - Sound
- Broken - Broken
- Plural of Plural - Plural of Plural
Typical combinations thereof (* marks base form): Typical combinations thereof (* marks base form):
- Singulative, no plural! - Singulative, no plural!
- Singulative*, Plural - Singulative*, Plural
- Singulative* (1), Dual (2), Plural (>2) - Singulative* (1), Dual (2), Plural (>2)
- Singulative (1, >10), Collective* (NNQ), Determinate Plural (2-10) - Singulative (1, >10), Collective* (NNQ), Determinate Plural (2-10)
- Singulative, Collective*, Determinate Plural, Indeterminate Plural -> very few nouns have these 4 forms - Singulative, Collective*, Determinate Plural, Indeterminate Plural -> very few nouns have these 4 forms
-} -}
Noun_Sg_Type = Noun_Sg_Type =
Singulative -- eg ĦUTA Singulative -- eg ĦUTA
| Collective -- eg ĦUT | Collective -- eg ĦUT
; ;
Noun_Pl_Type = Noun_Pl_Type =
Determinate -- eg ĦUTIET Determinate -- eg ĦUTIET
| Indeterminate -- eg ĦWIET | Indeterminate -- eg ĦWIET
; ;
Noun_Number = Noun_Number =
Singular Noun_Sg_Type -- eg ĦUTA / ĦUT Singular Noun_Sg_Type -- eg ĦUTA / ĦUT
| Dual -- eg WIDNEJN | Dual -- eg WIDNEJN
| Plural Noun_Pl_Type -- eg ĦUTIET / ĦWIET | Plural Noun_Pl_Type -- eg ĦUTIET / ĦWIET
; ;
{- {-
Noun_PluralType = Noun_PluralType =
Sound -- External (affix), eg FERGĦA -> FERGĦAT Sound -- External (affix), eg FERGĦA -> FERGĦAT
| Broken -- Internal, eg FERGĦA -> FRIEGĦI | Broken -- Internal, eg FERGĦA -> FRIEGĦI
| Irregular -- eg MARA -> NISA | Irregular -- eg MARA -> NISA
| PluralOfPlural -- eg TARF -> TRUF -> TRUFIJIET | PluralOfPlural -- eg TARF -> TRUF -> TRUFIJIET
| Foreign -- eg KARTI, PRATTIĊI, TELEVIXINS | Foreign -- eg KARTI, PRATTIĊI, TELEVIXINS
; ;
-} -}
Gender = Masc | Fem ; Gender = Masc | Fem ;
Animacy = Animacy =
Animate Animate
| Inanimate | Inanimate
; ;
Definiteness = Definiteness =
Definite -- eg IL-KARTA. In this context same as Determinate Definite -- eg IL-KARTA. In this context same as Determinate
| Indefinite -- eg KARTA | Indefinite -- eg KARTA
; ;
{- {-
-- CASE AS DEFINED BY GRAMMATIKA MALTIJA, p132 -- CASE AS DEFINED BY GRAMMATIKA MALTIJA, p132
-- Noun cases -- Noun cases
Case = Case =
Nominative -- referent as subject, eg IT-TARBIJA ... Nominative -- referent as subject, eg IT-TARBIJA ...
| Genitive -- referent as possessor, eg ... TAT-TARBIJA | Genitive -- referent as possessor, eg ... TAT-TARBIJA
| Accusative -- referent as direct object | Accusative -- referent as direct object
| Dative -- referent as indirect object, eg ... LIT-TARBIJA | Dative -- referent as indirect object, eg ... LIT-TARBIJA
| Ablative -- referent as instrument, cause, location, source or time, eg ... MINN TARBIJA | Ablative -- referent as instrument, cause, location, source or time, eg ... MINN TARBIJA
| Vocative -- referent being adressed, eg AA TARBIJA (lol) | Vocative -- referent being adressed, eg AA TARBIJA (lol)
; ;
-} -}
{-
-- CASE AS DEFINED BY ME
-- Noun cases (note my examples include DEFINITE ARTICLE)
-- Commented lines mean that noun iflection is unchanged, not that the case does not occur in Maltese!
Case =
-- Absessive -- lack or absence of referent (MINGĦAJR)
-- | Ablative -- referent as instrument, cause, location, source or time
-- | Absolutive -- subject of intransitive or object of transitive verb (in ergative-absolutive languages)
-- | Accusative -- referent as direct object (in nominative-accusative languages)
-- | Allative -- motion towards referent (LEJN)
-- | Additive -- synonym of Allative (above)
Benefactive -- referent as recipient, eg GĦAT-TARBIJA. cf Dative.
-- | Causative -- referent as the cause of a situation (MINĦABBA)
| Comitative -- with, eg MAT-TARBIJA
| Dative -- referent as indirect object, eg LIT-TARBIJA. cf Benefactive.
-- | Delative -- motion downward from referent
| Elative -- motion away from referent, eg MIT-TARBIJA
| Equative -- likeness or identity, eg BĦAT-TARBIJA
-- | Ergative -- subject of transitive verb (in ergative-absolutive languages)
-- | Essive -- temporary state / while / in capacity of (BĦALA)
| Genitive -- referent as possessor, eg TAT-TARBIJA
-- | Illative -- motion into / towards referent, eg SAT-TARBIJA. cf Allative.
| Inessive -- within referent, eg ĠOT-TARBIJA, FIT-TARBIJA
| Instrumental -- referent as instrument, eg BIT-TARBIJA. cf Ablative.
| Lative -- motion up to referent, eg SAT-TARBIJA
-- | Locative -- location at referent
| Nominative -- referent as subject, eg IT-TARBIJA
-- | Partitive -- partial nature of referent
-- | Prolative -- motion along / beside referent
-- | Superessive -- on / upon (FUQ)
-- | Translative -- referent noun or adjective as result of process of change
-- | Vocative -- referent being adressed, eg AA TARBIJA (lol)
;
-}
-- Person = P1 | P2 | P3 ;
-- State = Def | Indef | Const ;
-- Mood = Ind | Cnj | Jus ;
-- Voice = Act | Pas ;
Origin =
Semitic
| Romance
| English
;
-- Order = Verbal | Nominal ;
-- CASE AS DEFINED BY ME -- Just for my own use
-- Noun cases (note my examples include DEFINITE ARTICLE) -- Mamma = Per3 Sg Masc ;
-- Commented lines mean that noun iflection is unchanged, not that the case does not occur in Maltese!
Case =
-- Absessive -- lack or absence of referent (MINGĦAJR)
-- | Ablative -- referent as instrument, cause, location, source or time
-- | Absolutive -- subject of intransitive or object of transitive verb (in ergative-absolutive languages)
-- | Accusative -- referent as direct object (in nominative-accusative languages)
-- | Allative -- motion towards referent (LEJN)
-- | Additive -- synonym of Allative (above)
Benefactive -- referent as recipient, eg GĦAT-TARBIJA. cf Dative.
-- | Causative -- referent as the cause of a situation (MINĦABBA)
| Comitative -- with, eg MAT-TARBIJA
| Dative -- referent as indirect object, eg LIT-TARBIJA. cf Benefactive.
-- | Delative -- motion downward from referent
| Elative -- motion away from referent, eg MIT-TARBIJA
| Equative -- likeness or identity, eg BĦAT-TARBIJA
-- | Ergative -- subject of transitive verb (in ergative-absolutive languages)
-- | Essive -- temporary state / while / in capacity of (BĦALA)
| Genitive -- referent as possessor, eg TAT-TARBIJA
-- | Illative -- motion into / towards referent, eg SAT-TARBIJA. cf Allative.
| Inessive -- within referent, eg ĠOT-TARBIJA, FIT-TARBIJA
| Instrumental -- referent as instrument, eg BIT-TARBIJA. cf Ablative.
| Lative -- motion up to referent, eg SAT-TARBIJA
-- | Locative -- location at referent
| Nominative -- referent as subject, eg IT-TARBIJA
-- | Partitive -- partial nature of referent
-- | Prolative -- motion along / beside referent
-- | Superessive -- on / upon (FUQ)
-- | Translative -- referent noun or adjective as result of process of change
-- | Vocative -- referent being adressed, eg AA TARBIJA (lol)
;
-- Person = P1 | P2 | P3 ; -- Shortcut type
-- State = Def | Indef | Const ; -- GenNum = gn Gender Number2 ;
-- Mood = Ind | Cnj | Jus ;
-- Voice = Act | Pas ;
Origin =
Semitic
| Romance
| English
;
-- Order = Verbal | Nominal ;
-- Just for my own use
-- Mamma = Per3 Sg Masc ;
-- Shortcut type
-- GenNum = gn Gender Number2 ;
Person_Number = Sg | Pl ; Person_Number = Sg | Pl ;
-- Agreement features -- Agreement features
Agr = Agr =
Per1 Person_Number -- Jiena, Aħna Per1 Person_Number -- Jiena, Aħna
| Per2 Person_Number -- Inti, Intom | Per2 Person_Number -- Inti, Intom
| Per3Sg Gender -- Huwa, Hija | Per3Sg Gender -- Huwa, Hija
| Per3Pl -- Huma | Per3Pl -- Huma
; ;
-- Possible tenses -- Possible tenses
Tense = Tense =
Perf -- Perfect tense, eg SERAQ Perf -- Perfect tense, eg SERAQ
| Impf -- Imperfect tense, eg JISRAQ | Impf -- Imperfect tense, eg JISRAQ
| Imp -- Imperative, eg ISRAQ | Imp -- Imperative, eg ISRAQ
-- | PresPart -- Present Particible. Intransitive and 'motion' verbs only, eg NIEŻEL -- | PresPart -- Present Particible. Intransitive and 'motion' verbs only, eg NIEŻEL
-- | PastPart -- Past Particible. Both verbal & adjectival function, eg MISRUQ -- | PastPart -- Past Particible. Both verbal & adjectival function, eg MISRUQ
-- | VerbalNoun -- Verbal Noun, eg SERQ -- | VerbalNoun -- Verbal Noun, eg SERQ
; ;
-- Possible verb forms (tense + person) -- Possible verb forms (tense + person)
VForm = VForm =
VPerf Agr -- Perfect tense in all pronoun cases VPerf Agr -- Perfect tense in all pronoun cases
| VImpf Agr -- Imperfect tense in all pronoun cases | VImpf Agr -- Imperfect tense in all pronoun cases
| VImp Person_Number -- Imperative is always Per2, Sg & Pl | VImp Person_Number -- Imperative is always Per2, Sg & Pl
-- | VPresPart GenNum -- Present Particible for Gender/Number -- | VPresPart GenNum -- Present Particible for Gender/Number
-- | VPastPart GenNum -- Past Particible for Gender/Number -- | VPastPart GenNum -- Past Particible for Gender/Number
-- | VVerbalNoun -- Verbal Noun -- | VVerbalNoun -- Verbal Noun
; ;
-- Possible verb types -- Possible verb types
VType = VType =
Strong -- Strong verb: none of radicals are semi-vowels eg ĦAREĠ (Ħ-R-Ġ) Strong -- Strong verb: none of radicals are semi-vowels eg ĦAREĠ (Ħ-R-Ġ)
| Defective -- Defective verb: third radical is semivowel GĦ eg QATA' (Q-T-GĦ) | Defective -- Defective verb: third radical is semivowel GĦ eg QATA' (Q-T-GĦ)
| Weak -- Weak verb: third radicl is semivowel J eg MEXA (M-X-J) | Weak -- Weak verb: third radicl is semivowel J eg MEXA (M-X-J)
| Hollow -- Hollow verb: long A or IE btw radicals 1 & 3 eg QAL (Q-W-L) or SAB (S-J-B) | Hollow -- Hollow verb: long A or IE btw radicals 1 & 3 eg QAL (Q-W-L) or SAB (S-J-B)
| Double -- Double/Geminated verb: radicals 2 & 3 identical eg ĦABB (Ħ-B-B) | Double -- Double/Geminated verb: radicals 2 & 3 identical eg ĦABB (Ħ-B-B)
| Quad -- Quadliteral verb eg KARKAR (K-R-K-R), MAQDAR (M-Q-D-R), LEMBEB (L-M-B-B) | Quad -- Quadliteral verb eg KARKAR (K-R-K-R), MAQDAR (M-Q-D-R), LEMBEB (L-M-B-B)
; ;
oper oper
-- Roots & Patterns -- Roots & Patterns
Pattern : Type = {v1, v2 : Str} ; -- vowel1, vowel2 Pattern : Type = {v1, v2 : Str} ; -- vowel1, vowel2
-- Root3 : Type = {K, T, B : Str} ; -- Root3 : Type = {K, T, B : Str} ;
-- Root4 : Type = Root3 ** {L : Str} ; -- Root4 : Type = Root3 ** {L : Str} ;
Root : Type = {K, T, B, L : Str} ; Root : Type = {K, T, B, L : Str} ;
-- Some classes. I need to include "c" because currently "ċ" gets downgraded to "c" in input :/ -- Some classes. I need to include "c" because currently "ċ" gets downgraded to "c" in input :/
Consonant : pattern Str = #( "b" | "c" | "ċ" | "d" | "f" | "ġ" | "g" | "għ" | "ħ" | "h" | "j" | "k" | "l" | "m" | "n" | "p" | "q" | "r" | "s" | "t" | "v" | "w" | "x" | "ż" | "z" ); Consonant : pattern Str = #( "b" | "c" | "ċ" | "d" | "f" | "ġ" | "g" | "għ" | "ħ" | "h" | "j" | "k" | "l" | "m" | "n" | "p" | "q" | "r" | "s" | "t" | "v" | "w" | "x" | "ż" | "z" );
CoronalConsonant : pattern Str = #( "c" | "ċ" | "d" | "n" | "r" | "s" | "t" | "x" | "ż" | "z" ); -- "konsonanti xemxin" CoronalConsonant : pattern Str = #( "c" | "ċ" | "d" | "n" | "r" | "s" | "t" | "x" | "ż" | "z" ); -- "konsonanti xemxin"
LiquidCons : pattern Str = #( "l" | "m" | "n" | "r" | "għ" ); LiquidCons : pattern Str = #( "l" | "m" | "n" | "r" | "għ" );
Vowel : pattern Str = #( "a" | "e" | "i" | "o" | "u" ); Vowel : pattern Str = #( "a" | "e" | "i" | "o" | "u" );
Digraph : pattern Str = #( "ie" ); Digraph : pattern Str = #( "ie" );
SemiVowel : pattern Str = #( "għ" | "j" ); SemiVowel : pattern Str = #( "għ" | "j" );
{- ===== Type declarations ===== -} {- ===== Type declarations ===== -}
-- VP = { -- VP = {
-- v : Verb ; -- v : Verb ;
-- clit : Str ; -- clit : Str ;
-- clitAgr : ClitAgr ; -- clitAgr : ClitAgr ;
-- obj : Agr => Str -- obj : Agr => Str
-- } ; -- } ;
-- NP = { -- NP = {
-- s : Case => {clit,obj : Str ; isClit : Bool} ; -- s : Case => {clit,obj : Str ; isClit : Bool} ;
-- a : Agr -- a : Agr
-- } ; -- } ;
{- {-
Noun : Type = { Noun : Type = {
s : Number5 => Str ; s : Number5 => Str ;
g : Gender ; g : Gender ;
} ; } ;
-} -}
Noun : Type = { Noun : Type = {
s : Noun_Number => Definiteness => Case => Str ; s : Noun_Number => Definiteness => Str ;
g : Gender ; g : Gender ;
} ; } ;
Adj : Type = { Adj : Type = {
s : Gender => Person_Number => Str ; s : Gender => Person_Number => Str ;
-- isPre : Bool ; -- isPre : Bool ;
} ; } ;
Verb : Type = { Verb : Type = {
s : VForm => Str ; -- Give me the form (tense, person etc) and I'll give you the string s : VForm => Str ; -- Give me the form (tense, person etc) and I'll give you the string
t : VType ; -- Inherent - Strong/Hollow etc t : VType ; -- Inherent - Strong/Hollow etc
o : Origin ; -- Inherent - a verb of Semitic or Romance origins? o : Origin ; -- Inherent - a verb of Semitic or Romance origins?
} ; } ;
{- ===== Useful helper functions ===== -} {- ===== Useful helper functions ===== -}
addDefinitePreposition : Str -> Str -> Str = \prep,n -> (getDefinitePreposition prep n) ++ n ; addDefinitePreposition : Str -> Str -> Str = \prep,n -> (getDefinitePreposition prep n) ++ n ;
addDefiniteArticle = addDefinitePreposition "il" ; addDefiniteArticle = addDefinitePreposition "il" ;
getDefiniteArticle = getDefinitePreposition "il" ; getDefiniteArticle = getDefinitePreposition "il" ;
-- Correctly inflect definite preposition -- Correctly inflect definite preposition
-- A more generic version of getDefiniteArticle -- A more generic version of getDefiniteArticle
-- Params: -- Params:
-- preposition (eg TAL, MAL, BĦALL) -- preposition (eg TAL, MAL, BĦALL)
-- noun -- noun
-- NOTE trying to call this with a runtime string will cause a world of pain. Design around it. -- NOTE trying to call this with a runtime string will cause a world of pain. Design around it.
getDefinitePreposition : Str -> Str -> Str = \prep,noun -> getDefinitePreposition : Str -> Str -> Str = \prep,noun ->
let let
-- Remove either 1 or 2 l's -- Remove either 1 or 2 l's
prepStem : Str = case prep of { prepStem : Str = case prep of {
_ + "ll" => Predef.tk 2 prep ; _ + "ll" => Predef.tk 2 prep ;
_ + "l" => Predef.tk 1 prep ; _ + "l" => Predef.tk 1 prep ;
_ => prep -- this should never happen, I don't think _ => prep -- this should never happen, I don't think
} }
in in
case noun of { case noun of {
("s"|#LiquidCons) + #Consonant + _ => prep + "-i" ; -- L-ISKOLA ("s"|#LiquidCons) + #Consonant + _ => prep + "-i" ; -- L-ISKOLA
("għ" | #Vowel) + _ => case prep of { -- L-GĦATBA... ("għ" | #Vowel) + _ => case prep of { -- L-GĦATBA...
("fil"|"bil") => (Predef.take 1 prep) + "l-" ; ("fil"|"bil") => (Predef.take 1 prep) + "l-" ;
"il" => "l" + "-" ; "il" => "l" + "-" ;
_ => prep + "-" _ => prep + "-"
}; };
K@#CoronalConsonant + _ => prepStem + K + "-" ; -- IĊ-ĊISK K@#CoronalConsonant + _ => prepStem + K + "-" ; -- IĊ-ĊISK
#Consonant + _ => prep + "-" ; -- IL-QADDIS #Consonant + _ => prep + "-" ; -- IL-QADDIS
_ => [] -- ? _ => [] -- ?
} ; } ;
definiteArticle : Str = definiteArticle : Str =
pre { pre {
"il-" ; "il-" ;
"l-" / strs { "a" ; "e" ; "i" ; "o" ; "u" ; "h" ; "għ" } ; "l-" / strs { "a" ; "e" ; "i" ; "o" ; "u" ; "h" ; "għ" } ;
"iċ-" / strs { "ċ" } ; "iċ-" / strs { "ċ" } ;
"id-" / strs { "d" } ; "id-" / strs { "d" } ;
"in-" / strs { "n" } ; "in-" / strs { "n" } ;
"ir-" / strs { "r" } ; "ir-" / strs { "r" } ;
"is-" / strs { "s" } ; "is-" / strs { "s" } ;
"it-" / strs { "t" } ; "it-" / strs { "t" } ;
"ix-" / strs { "x" } ; "ix-" / strs { "x" } ;
"iż-" / strs { "ż" } ; "iż-" / strs { "ż" } ;
"iz-" / strs { "z" } "iz-" / strs { "z" }
} ; } ;
} }

View File

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

View File

@@ -1,7 +1,7 @@
-- StructuralMlt.gf: lexicon of structural words -- StructuralMlt.gf: lexicon of structural words
-- --
-- Maltese Resource Grammar Library -- Maltese Resource Grammar Library
-- John J. Camilleri, 2011 -- John J. Camilleri, 2012
-- Licensed under LGPL -- Licensed under LGPL
concrete StructuralMlt of Structural = CatMlt ** concrete StructuralMlt of Structural = CatMlt **

View File

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

View File

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

View File

@@ -1,11 +1,11 @@
-- VerbMlt.gf: verb phrases -- VerbMlt.gf: verb phrases
-- --
-- Maltese Resource Grammar Library -- Maltese Resource Grammar Library
-- John J. Camilleri, 2011 -- John J. Camilleri, 2012
-- Licensed under LGPL -- Licensed under LGPL
concrete VerbMlt of Verb = CatMlt ** open Prelude, ResMlt in { concrete VerbMlt of Verb = CatMlt ** open Prelude, ResMlt in {
flags optimize=all_subs ; flags optimize=all_subs ;
-- Comp -- Comp
-- VP -- VP