forked from GitHub/gf-core
Significant advances in Maltese verb morphology
This commit is contained in:
@@ -4,63 +4,115 @@
|
||||
-- John J. Camilleri, 2012
|
||||
-- Licensed under LGPL
|
||||
|
||||
--concrete CatMlt of Cat = CommonX ** open ResMlt, Prelude, ParamX in {
|
||||
{-
|
||||
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 optimize=all_subs ;
|
||||
|
||||
flags
|
||||
optimize=all_subs ;
|
||||
|
||||
lincat
|
||||
-- S = {s : Str} ;
|
||||
-- Cl = {s : ResMlt.Tense => Bool => Str} ;
|
||||
-- NP = ResMlt.NP ; -- {s : Case => {clit,obj : Str ; isClit : Bool} ; a : Agr} ;
|
||||
-- VP = ResMlt.VP ; -- {v : Verb ; clit : Str ; clitAgr : ClitAgr ; obj : Agr => Str} ;
|
||||
-- AP = {s : Gender => Number => Str ; isPre : Bool} ;
|
||||
-- CN = ResMlt.Noun ; -- {s : Number => Str ; g : Gender} ;
|
||||
-- Det = {s : Gender => Case => Str ; n : Number} ;
|
||||
N = ResMlt.Noun ;
|
||||
N2 = ResMlt.Noun ;
|
||||
N3 = ResMlt.Noun ;
|
||||
A = ResMlt.Adj ;
|
||||
V = ResMlt.Verb ;
|
||||
-- V2 = ResMlt.Verb ** {c : Case} ;
|
||||
-- AdA = {s : Str} ;
|
||||
-- Pol = {s : Str ; b : Bool} ;
|
||||
-- Tense = {s : Str ; t : ResMlt.Tense} ;
|
||||
-- Conj = {s : Str ; n : Number} ;
|
||||
|
||||
-- Tensed/Untensed
|
||||
|
||||
-- Cardinal or ordinal in WORDS (not digits)
|
||||
-- S = {s : Str} ;
|
||||
-- QS = {s : QForm => Str} ;
|
||||
-- RS = {s : Agr => Str ; c : NPCase} ; -- c for it clefts
|
||||
-- SSlash = {s : Str ; c2 : Str} ;
|
||||
|
||||
-- Sentence
|
||||
|
||||
-- Cl = {s : ResMlt.Tense => Anteriority => Polarity => Order => Str} ;
|
||||
-- ClSlash = {
|
||||
-- s : ResMlt.Tense => Anteriority => Polarity => Order => Str ;
|
||||
-- c2 : Str
|
||||
-- } ;
|
||||
-- Imp = {s : Polarity => ImpForm => Str} ;
|
||||
|
||||
-- Question
|
||||
|
||||
-- QCl = {s : ResMlt.Tense => Anteriority => Polarity => QForm => Str} ;
|
||||
-- IP = {s : NPCase => Str ; n : Number} ;
|
||||
-- IComp = {s : Str} ;
|
||||
-- IDet = {s : Str ; n : Number} ;
|
||||
-- IQuant = {s : Number => Str} ;
|
||||
|
||||
-- Relative
|
||||
|
||||
-- RCl = {
|
||||
-- s : ResMlt.Tense => Anteriority => Polarity => Agr => Str ;
|
||||
-- c : NPCase
|
||||
-- } ;
|
||||
-- RP = {s : RCase => Str ; a : RAgr} ;
|
||||
|
||||
-- Verb
|
||||
|
||||
-- VP = ResMlt.VP ;
|
||||
-- VPSlash = ResMlt.VP ** {c2 : Str} ;
|
||||
-- Comp = {s : Agr => Str} ;
|
||||
|
||||
-- Adjective
|
||||
|
||||
-- AP = {s : Agr => Str ; isPre : Bool} ;
|
||||
AP = {s : GenNum => Str ; isPre : Bool} ;
|
||||
|
||||
-- Noun
|
||||
|
||||
CN = Noun ;
|
||||
NP = {s : NPCase => Str ; a : Agr} ;
|
||||
-- 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} ;
|
||||
-- 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} ;
|
||||
|
||||
-- Numeral
|
||||
|
||||
-- Cardinal or ordinal in WORDS (not digits) [JJC]
|
||||
Numeral = {
|
||||
s : CardOrd => Num_Case => Str ;
|
||||
n : Num_Number
|
||||
} ;
|
||||
|
||||
-- Cardinal or ordinal in DIGITS (not words)
|
||||
-- Cardinal or ordinal in DIGITS (not words) [JJC]
|
||||
Digits = {
|
||||
s : Str ; -- No need for CardOrd, i.e. no 1st, 2nd etc in Maltese
|
||||
n : Num_Number ;
|
||||
tail : DTail
|
||||
};
|
||||
|
||||
{-
|
||||
-- These below are just examples, I believe they came form Italian.
|
||||
S = {s : Str} ;
|
||||
Cl = {s : ResMlt.Tense => Bool => Str} ;
|
||||
NP = {s : Case => {clit,obj : Str ; isClit : Bool} ; a : Agr} ;
|
||||
VP = {v : Verb ; clit : Str ; clitAgr : ClitAgr ; obj : Agr => Str} ;
|
||||
AP = {s : Gender => Number => Str ; isPre : Bool} ;
|
||||
CN = {s : Number => Str ; g : Gender} ;
|
||||
Det = {s : Gender => Case => Str ; n : Number} ;
|
||||
N = {s : Number => Str ; g : Gender} ;
|
||||
N2 = {s : Number => Str ; g : Gender} ;
|
||||
A = {s : Number => Str ; isPre : Bool} ;
|
||||
V = ResMlt.Verb ;
|
||||
V2 = ResMlt.Verb ** {c : Case} ;
|
||||
AdA = {s : Str} ;
|
||||
Pol = {s : Str ; b : Bool} ;
|
||||
Tense = {s : Str ; t : ResMlt.Tense} ;
|
||||
Conj = {s : Str ; n : Number} ;
|
||||
-}
|
||||
|
||||
-- Structural
|
||||
|
||||
-- Conj = {s1,s2 : Str ; n : Number} ;
|
||||
-- ---b Conj = {s : Str ; n : Number} ;
|
||||
-- ---b DConj = {s1,s2 : Str ; n : Number} ;
|
||||
-- Subj = {s : Str} ;
|
||||
Prep = {s : Str} ;
|
||||
|
||||
-- Open lexical classes, e.g. Lexicon
|
||||
|
||||
V, VS, VQ, VA = Verb ; -- = {s : VForm => Str} ;
|
||||
V2, V2A, V2Q, V2S = Verb ** {c2 : Str} ;
|
||||
V3 = Verb ** {c2, c3 : Str} ;
|
||||
-- VV = {s : VVForm => Str ; typ : VVType} ;
|
||||
-- V2V = Verb ** {c2,c3 : Str ; typ : VVType} ;
|
||||
|
||||
-- [JJC]
|
||||
A = Adjective ** {hasComp : Bool} ; -- Does the adjective have a comparative form (e.g. ISBAĦ)?
|
||||
-- A2 = Adjective ** {c2 : Str} ;
|
||||
|
||||
-- [JJC]
|
||||
N, N3 = Noun ;
|
||||
N2 = Noun ** {c2 : Str} ;
|
||||
-- N3 = Noun ** {c2,c3 : Str} ;
|
||||
PN = ProperNoun ;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user