Files
gf-rgl/src/ancient_greek/ConjunctionGrc.gf
2016-05-25 12:35:37 +00:00

75 lines
2.0 KiB
Plaintext

--# -path=.:../abstract
concrete ConjunctionGrc of Conjunction =
CatGrc ** open ResGrc, Coordination, Prelude in {
flags optimize=all_subs ;
lin
ConjS = conjunctDistrSS ;
ConjAdv = conjunctDistrSS ;
ConjNP conj ss = -- TODO: adapt to proper nps later
let
bigNPs = conjunctDistrTable Case conj ss
in
{ s = \\c => bigNPs.s ! c } ** {
a = conjAgr (agrP3 conj.n) ss.a ;
e = \\_ => [] ;
isPron = False
} ;
ConjAP conj ss = conjunctDistrTable AForm conj ss ;
ConjCN conj ss =
let bigCNs = conjunctDistrTable2 Number Case conj ss
in
{ s = bigCNs.s ;
s2 = \\n,c => [] ;
isMod = True ;
rel = \\_ => [] ;
g = Neutr -- irrelevant
} ;
-- These fun's are generated from the list cat's.
BaseS = twoSS ;
ConsS = consrSS comma ;
BaseAdv = twoSS ;
ConsAdv = consrSS comma ;
BaseNP x y =
{ s1 = bigNP x ; s2 = bigNP y ; a = conjAgr x.a y.a } ;
ConsNP x xs =
{ s1 = \\c => (bigNP x) ! c ++ comma ++ xs.s1 ! c ;
s2 = xs.s2 ;
a = conjAgr x.a xs.a } ;
BaseAP x y =
{ s1 = bigAP x ; s2 = bigAP y } ;
ConsAP x xs =
{ s1 = \\a => (bigAP x) ! a ++ comma ++ xs.s1 ! a ;
s2 = xs.s2 } ;
BaseCN x y =
{ s1 = bigCN x ; s2 = bigCN y } ;
ConsCN x xs =
{ s1 = \\n,c => bigCN x ! n ! c ++ comma ++ xs.s1 ! n ! c ;
s2 = xs.s2 } ;
lincat
[S] = {s1,s2 : Str} ;
[Adv] = {s1,s2 : Str} ;
[NP] = {s1,s2 : Case => Str ; a : Agr} ;
[AP] = {s1,s2 : AForm => Str} ;
[CN] = {s1,s2 : Number => Case => Str} ;
oper
bigAP : AP -> AForm => Str =
\ap -> \\a => ap.s ! a ; -- TODO: add objects of adjective
bigNP : NP -> Case => Str =
\np -> \\c => case np.isPron of { False => np.s ! c ; True => np.e ! c } ;
bigCN : CN -> Number => Case => Str = -- TODO: add ..., *if* cn.rel is nonempty
\cn -> \\n,c => cn.s2 ! n ! c ++ cn.s ! n ! c ; -- ++ comma ++ cn.rel ! n ;
}