1
0
forked from GitHub/gf-rgl

added basic syntax

This commit is contained in:
Krasimir Angelov
2024-12-05 19:13:13 +01:00
parent d8aaeeb682
commit 108bfb4163
6 changed files with 80 additions and 3 deletions

View File

@@ -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
}
} ;
}

View File

@@ -16,4 +16,11 @@ lincat Numeral = {s : Str} ;
lincat Digits = {s : Str; n : Number; tail : DTail} ; lincat Digits = {s : Str; n : Number; tail : DTail} ;
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ; 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} ;
} }

View File

@@ -1,4 +1,6 @@
concrete GrammarSqi of Grammar = concrete GrammarSqi of Grammar =
NounSqi,
AdjectiveSqi,
NumeralSqi NumeralSqi
** { ** {

38
src/albanian/NounSqi.gf Normal file
View File

@@ -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
} ;
}

View File

@@ -1,4 +1,9 @@
resource ParadigmsSqi = MorphoSqi ** open Predef, Prelude, CatSqi, ResSqi in { resource ParadigmsSqi = MorphoSqi ** open Predef, Prelude, CatSqi, ResSqi in {
oper
singular : Number = Sg ;
plural : Number = Pl ;
oper oper
regN : Str -> N -- s;Indef;Nom;Sg regN : Str -> N -- s;Indef;Nom;Sg
= \form -> case form of { = \form -> case form of {
@@ -1226,8 +1231,8 @@ mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ; mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ; mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ; mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
mkQuant : Str -> Quant = \s -> lin Quant {s=s} ; mkQuant : Str -> Quant = \s -> lin Quant {s=s; spec=Indef} ;
mkDet : Str -> Det = \s -> lin Det {s=s} ; mkDet : Str -> Number -> Det = \s,n -> lin Det {s=s; spec=Indef; n=n} ;
mkConj : Str -> Conj = \s -> lin Conj {s=s} ; mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ; mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
mkPron : Str -> Pron = \s -> lin Pron {s=s} ; mkPron : Str -> Pron = \s -> lin Pron {s=s} ;

View File

@@ -2,9 +2,13 @@ resource ResSqi = ParamX-[Tense,Past,Pres] ** open Prelude in {
oper Compl = {s : Str} ; oper Compl = {s : Str} ;
param Species = Def | Indef ; param Species = Indef | Def ;
param Case = Nom | Acc | Dat | Ablat ; param Case = Nom | Acc | Dat | Ablat ;
param Gender = Masc | Fem ; 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 Noun = {s: Species => Case => Number => Str; g: Gender} ; -- 3978
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun = oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,g -> \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} ;
} }