mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-09-03 09:56:59 -06:00
162 lines
4.2 KiB
Plaintext
162 lines
4.2 KiB
Plaintext
concrete NounFao of Noun = CatFao ** open ResFao, Prelude in {
|
|
lin
|
|
UseN n = n ;
|
|
UseN2 n = n ;
|
|
Use2N3 n = n ** {c2 = n.c2} ;
|
|
Use3N3 n = n ** {c2 = n.c3} ;
|
|
UsePN pn = mkNP pn.s Masc Sg P3 ;
|
|
UsePron p = p ;
|
|
RelNP np rs =
|
|
np ** {s = \\c => np.s ! c ++ "," ++ rs.s ! np.g ! persNum np.n np.p} ;
|
|
DetNP det = {
|
|
s = \\c => det.s ! Masc ! c ;
|
|
g = Masc ;
|
|
n = det.n ;
|
|
p = P3
|
|
} ;
|
|
PredetNP pred np = np ** {
|
|
s = \\c => pred.s ++ np.s ! c
|
|
} ;
|
|
PPartNP np v2 = np ** {
|
|
s = \\c => np.s ! c ++ v2.Participle ! Past
|
|
} ;
|
|
AdvNP np adv = np ** {
|
|
s = \\c => np.s ! c ++ adv.s
|
|
} ;
|
|
ExtAdvNP np adv = np ** {
|
|
s = \\c => np.s ! c ++ "," ++ adv.s
|
|
} ;
|
|
DetCN det cn = {
|
|
s = \\c => det.s ! cn.g ! c ++ cn.s ! det.sp ! det.n ! c ;
|
|
g = cn.g ;
|
|
n = det.n ;
|
|
p = P3
|
|
} ;
|
|
DefArt = {
|
|
s = \\_,_,_,_ => [] ;
|
|
sp = Def ;
|
|
} ;
|
|
IndefArt = {
|
|
s = \\b =>
|
|
table {
|
|
Masc => table {
|
|
Sg => case b of {
|
|
False => table {Nom => "ein" ; Acc => "ein" ; Dat => "einum" ; Gen => "eins"} ;
|
|
True => \\_ => []
|
|
} ;
|
|
Pl => \\_ => []
|
|
} ;
|
|
Fem => table {
|
|
Sg => case b of {
|
|
False => table {Nom => "ein" ; Acc => "eina" ; Dat => "einari" ; Gen => "einar"} ;
|
|
True => \\_ => []
|
|
} ;
|
|
Pl => \\_ => []
|
|
} ;
|
|
Neuter => table {
|
|
Sg => case b of {
|
|
False => table {Nom => "eitt" ; Acc => "eitt" ; Dat => "einum" ; Gen => "eins"} ;
|
|
True => \\_ => []
|
|
} ;
|
|
Pl => \\_ => []
|
|
}
|
|
} ;
|
|
sp = Indef ;
|
|
} ;
|
|
DetQuant quant num = {
|
|
s = \\g,c => quant.s ! num.hasCard ! g ! num.n ! c ++
|
|
num.s ! g ! c ;
|
|
n = num.n ;
|
|
sp = quant.sp
|
|
} ;
|
|
DetQuantOrd quant num ord = {
|
|
s = \\g,c => quant.s ! num.hasCard ! g ! num.n ! c ++
|
|
num.s ! g ! c ++ ord.s ! g ! num.n ! c ;
|
|
n = num.n ;
|
|
sp = quant.sp
|
|
} ;
|
|
NumSg = {
|
|
s = \\_,_ => [] ;
|
|
n = Sg ;
|
|
hasCard = False
|
|
} ;
|
|
NumPl = {
|
|
s = \\_,_ => [] ;
|
|
n = Pl ;
|
|
hasCard = False
|
|
} ;
|
|
NumCard card = card ** {hasCard = True} ;
|
|
NumDigits digits = {s = \\_,_ => digits.s ; n = Pl} ;
|
|
NumDecimal dec = {s = \\_,_ => dec.s ; n = Pl} ;
|
|
NumNumeral numeral = {s=numeral.s ! NCard; n=numeral.n} ;
|
|
AdNum adn card = {s = \\g,c => adn.s ++ card.s ! g ! c ; n = card.n} ;
|
|
OrdDigits digits = {s = \\_,_,_ => digits.s ++ BIND ++ "."} ;
|
|
OrdNumeral numeral = {s = \\g,n,c => numeral.s ! NOrd n ! g ! c} ;
|
|
OrdSuperl a = {s = a.s} ;
|
|
OrdNumeralSuperl numeral a = {
|
|
s = \\g,n,c => numeral.s ! NOrd n ! g ! c ++ a.s ! g ! n ! c
|
|
} ;
|
|
MassNP cn = {
|
|
s = \\c => cn.s ! Indef ! Sg ! c ;
|
|
g = cn.g ;
|
|
n = Sg ;
|
|
p = P3
|
|
} ;
|
|
PossPron pron = {
|
|
s = \\_,_,_,_ => pron.s ! Gen ;
|
|
sp = Def
|
|
} ;
|
|
ComplN2 n2 np = {
|
|
s = \\sp,n,c => n2.s ! sp ! n ! c ++ n2.c2.s ++ np.s ! n2.c2.c ;
|
|
g = n2.g
|
|
} ;
|
|
ComplN3 n3 np = n3 ** {
|
|
s = \\sp,n,c => n3.s ! sp ! n ! c ++ n3.c2.s ++ np.s ! n3.c2.c ;
|
|
c2 = n3.c3
|
|
} ;
|
|
AdjCN ap cn = {
|
|
s = \\sp,n,c => ap.s ! cn.g ! n ! c ++ cn.s ! sp ! n ! c ;
|
|
g = cn.g
|
|
} ;
|
|
RelCN cn rs = {
|
|
s = \\sp,n,c => cn.s ! sp ! n ! c ++ rs.s ! cn.g ! persNum n P3 ;
|
|
g = cn.g
|
|
} ;
|
|
AdvCN cn adv = {
|
|
s = \\sp,n,c => cn.s ! sp ! n ! c ++ adv.s ;
|
|
g = cn.g
|
|
} ;
|
|
SentCN cn sc = {
|
|
s = \\sp,n,c => cn.s ! sp ! n ! c ++ sc.s ;
|
|
g = cn.g
|
|
} ;
|
|
ApposCN cn np = {
|
|
s = \\sp,n,c => cn.s ! sp ! n ! c ++ np.s ! Nom ;
|
|
g = cn.g
|
|
} ;
|
|
PossNP cn np = {
|
|
s = \\sp,n,c => cn.s ! sp ! n ! c ++ np.s ! Gen ;
|
|
g = cn.g
|
|
} ;
|
|
PartNP cn np = {
|
|
s = \\sp,n,c => cn.s ! sp ! n ! c ++ "av" ++ np.s ! Dat ;
|
|
g = cn.g
|
|
} ;
|
|
CountNP det np = {
|
|
s = \\c => det.s ! np.g ! c ++ "av" ++ np.s ! Dat ;
|
|
g = np.g ;
|
|
n = det.n ;
|
|
p = P3
|
|
} ;
|
|
AdjDAP dap ap = dap ** {
|
|
s = \\g,c => dap.s ! g ! c ++ ap.s ! g ! dap.n ! c
|
|
} ;
|
|
DetDAP det = det ;
|
|
QuantityNP dec mu = {
|
|
s = \\_ => dec.s ++ mu.s ;
|
|
g = Neuter ;
|
|
n = Pl ;
|
|
p = P3
|
|
} ;
|
|
}
|