diff --git a/src/albanian/AdjectiveSqi.gf b/src/albanian/AdjectiveSqi.gf new file mode 100644 index 00000000..0ae8d9ed --- /dev/null +++ b/src/albanian/AdjectiveSqi.gf @@ -0,0 +1,11 @@ +concrete AdjectiveSqi of Adjective = CatSqi ** open ResSqi in { + + lin + PositA a = { + s = \\spec,c,g,n => case a.clit of { + True => link_clitic ! Indef ! c ! g ! n ++ a.s ! c ! g ! n ; + False => a.s ! c ! g ! n + } + } ; + +} diff --git a/src/albanian/CatSqi.gf b/src/albanian/CatSqi.gf index b789b557..b2a7972f 100644 --- a/src/albanian/CatSqi.gf +++ b/src/albanian/CatSqi.gf @@ -16,4 +16,11 @@ lincat Numeral = {s : Str} ; lincat Digits = {s : Str; n : Number; tail : DTail} ; lincat Decimal = {s : Str; n : Number; hasDot : Bool} ; +lincat AP = {s: Species => Case => Gender => Number => Str} ; +lincat CN = Noun ; +lincat Num = {s : Str; n : Number} ; +lincat Quant = {s : Str; spec : Species} ; +lincat Det = {s : Str; spec : Species; n : Number} ; +lincat NP = {s: Case => Str; a : Agr} ; + } diff --git a/src/albanian/GrammarSqi.gf b/src/albanian/GrammarSqi.gf index 94469cd9..ee625cfb 100644 --- a/src/albanian/GrammarSqi.gf +++ b/src/albanian/GrammarSqi.gf @@ -1,4 +1,6 @@ concrete GrammarSqi of Grammar = + NounSqi, + AdjectiveSqi, NumeralSqi ** { diff --git a/src/albanian/NounSqi.gf b/src/albanian/NounSqi.gf new file mode 100644 index 00000000..b8ccd1fc --- /dev/null +++ b/src/albanian/NounSqi.gf @@ -0,0 +1,38 @@ +concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in { + + flags optimize=all_subs ; + + lin + DetCN det cn = { + s = \\c => det.s ++ cn.s ! det.spec ! c ! det.n ; + a = agrgP3 cn.g det.n + } ; + + DetQuant quant num = { + s = quant.s ++ num.s ; + n = num.n ; + spec = quant.spec + } ; + + NumSg = {s = []; n = Sg} ; + NumPl = {s = []; n = Pl} ; + + DefArt = { + s = [] ; + spec = Def + } ; + + IndefArt = { + s = "një" ; + spec = Indef + } ; + + UseN n = n ; + UseN2 n = n ; + + AdjCN ap cn = { + s = \\spec,c,n => cn.s ! spec ! c ! n ++ ap.s ! spec ! c ! cn.g ! n ; + g = cn.g + } ; + +} diff --git a/src/albanian/ParadigmsSqi.gf b/src/albanian/ParadigmsSqi.gf index 5eba161b..a9e7fc15 100644 --- a/src/albanian/ParadigmsSqi.gf +++ b/src/albanian/ParadigmsSqi.gf @@ -1,4 +1,9 @@ resource ParadigmsSqi = MorphoSqi ** open Predef, Prelude, CatSqi, ResSqi in { + +oper + singular : Number = Sg ; + plural : Number = Pl ; + oper regN : Str -> N -- s;Indef;Nom;Sg = \form -> case form of { @@ -1226,8 +1231,8 @@ mkInterj : Str -> Interj = \s -> lin Interj {s=s} ; mkVoc : Str -> Voc = \s -> lin Voc {s=s} ; mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ; mkSubj : Str -> Subj = \s -> lin Subj {s=s} ; -mkQuant : Str -> Quant = \s -> lin Quant {s=s} ; -mkDet : Str -> Det = \s -> lin Det {s=s} ; +mkQuant : Str -> Quant = \s -> lin Quant {s=s; spec=Indef} ; +mkDet : Str -> Number -> Det = \s,n -> lin Det {s=s; spec=Indef; n=n} ; mkConj : Str -> Conj = \s -> lin Conj {s=s} ; mkPConj : Str -> PConj = \s -> lin PConj {s=s} ; mkPron : Str -> Pron = \s -> lin Pron {s=s} ; diff --git a/src/albanian/ResSqi.gf b/src/albanian/ResSqi.gf index 08bf87f0..1dcebbae 100644 --- a/src/albanian/ResSqi.gf +++ b/src/albanian/ResSqi.gf @@ -2,9 +2,13 @@ resource ResSqi = ParamX-[Tense,Past,Pres] ** open Prelude in { oper Compl = {s : Str} ; -param Species = Def | Indef ; +param Species = Indef | Def ; param Case = Nom | Acc | Dat | Ablat ; param Gender = Masc | Fem ; + +param GenNum = GSg Gender | GPl ; +oper Agr = {gn : GenNum; p : Person} ; + oper Noun = {s: Species => Case => Number => Str; g: Gender} ; -- 3978 oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun = \f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,g -> @@ -244,4 +248,14 @@ oper link_clitic : Species => Case => Gender => Number => Str = } } } ; + +oper genNum : Gender -> Number -> GenNum = \g,n -> + case n of { + Sg => GSg g ; + Pl => GPl + } ; + + agrgP3 : Gender -> Number -> Agr = + \g,n -> {gn=genNum g n; p=P3} ; + }