mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-28 09:28:54 -06:00
83 lines
2.5 KiB
Plaintext
83 lines
2.5 KiB
Plaintext
concrete ConjunctionAra of Conjunction =
|
|
CatAra ** open ResAra, Coordination, Prelude in {
|
|
|
|
lincat
|
|
|
|
[S] = {s1,s2 : Order => Str} ;
|
|
[Adv] = {s1,s2 : Str} ;
|
|
[NP] = {s1,s2 : Case => Str ; a : Agr ; empty : Str} ;
|
|
[AP] = {s1,s2 : Species => Gender => Number => State => Case => Str} ;
|
|
|
|
lin
|
|
|
|
|
|
BaseAdv = twoSS ;
|
|
ConsAdv = consrSS comma ;
|
|
ConjAdv = conjunctSS ;
|
|
|
|
BaseS = twoTable Order ;
|
|
ConsS = consrTable Order comma ;
|
|
ConjS = conjunctTable Order ;
|
|
|
|
BaseNP x y = twoTable Case x y ** {
|
|
a = conjAgr x.a y.a ;
|
|
empty = []
|
|
} ;
|
|
ConsNP xs x = consrTable Case comma xs x ** {
|
|
a = conjAgr xs.a x.a ;
|
|
empty = []
|
|
} ;
|
|
ConjNP conj ss = conjunctTable Case conj ss ** {
|
|
a = let gn = pgn2gn ss.a.pgn in
|
|
{pgn = Per3 gn.g (conjNumber conj.n gn.n) ; isPron = False} ;
|
|
empty = []
|
|
} ;
|
|
|
|
BaseAP = twoTable5 Species Gender Number State Case ;
|
|
ConsAP = consrTable5 Species Gender Number State Case comma ;
|
|
ConjAP = conjunctTable5 Species Gender Number State Case ;
|
|
|
|
|
|
oper
|
|
conjAgr : Agr -> Agr -> Agr = \a,b -> {
|
|
isPron = False ;
|
|
pgn = let gnA = pgn2gn a.pgn ; gnB = pgn2gn b.pgn in
|
|
Per3 (conjGender gnA.g gnB.g) (conjNumber gnA.n gnB.n)
|
|
} ;
|
|
|
|
conjGender : Gender -> Gender -> Gender = \g,h ->
|
|
case g of {Fem => h ; _ => Masc} ;
|
|
|
|
conjNumber : Number -> Number -> Number = \m,n ->
|
|
case m of {Sg => n ; _ => Pl} ;
|
|
|
|
-- move to predef?
|
|
|
|
ListTable5 : PType -> PType -> PType -> PType -> PType -> Type = \P,Q,R,T,S ->
|
|
{s1,s2 : P => Q => R => T => S => Str} ;
|
|
|
|
twoTable5 : (P,Q,R,T,S : PType) -> (_,_ : {s : P => Q => R => T => S => Str}) ->
|
|
ListTable5 P Q R T S =
|
|
\_,_,_,_,_,x,y ->
|
|
{s1 = x.s ; s2 = y.s} ;
|
|
|
|
consrTable5 :
|
|
(P,Q,R,T,S : PType) -> Str -> {s : P => Q => R => T => S => Str} ->
|
|
ListTable5 P Q R T S -> ListTable5 P Q R T S =
|
|
\P,Q,R,T,S,c,x,xs ->
|
|
{s1 = \\p,q,r,t,s => xs.s1 ! p ! q ! r ! t ! s ++ c ++ xs.s2 ! p ! q ! r ! t ! s ;
|
|
s2 = x.s
|
|
} ;
|
|
|
|
conjunctTable5 :
|
|
(P,Q,R,T,S : PType) -> Conjunction -> ListTable5 P Q R T S -> {s : P => Q => R => T => S => Str} =
|
|
\P,Q,R,T,S,or,xs ->
|
|
{s = \\p,q,r,t,s => xs.s1 ! p ! q ! r ! t ! s ++ or.s ++ xs.s2 ! p ! q ! r ! t ! s} ;
|
|
|
|
-- conjunctDistrTable5 :
|
|
-- (P,Q,R,T,S : PType) -> ConjunctionDistr -> ListTable5 P Q R T S ->
|
|
-- {s : P => Q => R => T => S => Str} =
|
|
-- \P,Q,R,T,S,or,xs ->
|
|
-- {s = \\p,q,r,t,s => or.s1++ xs.s1 ! p ! q ! r ! t ! s ++ or.s2 ++ xs.s2 ! p ! q ! r ! t ! s} ;
|
|
}
|