summaryrefslogtreecommitdiff
path: root/next-lib/src/romance/RelativeRomance.gf
blob: 40b83c1b3619c250bb8bce40205a613c5a90a2de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
incomplete concrete RelativeRomance of Relative = 
  CatRomance ** open Prelude, CommonRomance, ResRomance in {

  flags optimize=all_subs ;

  lin

    RelCl cl = {
      s = \\ag,t,a,p,m => pronSuch ! ag ++ conjThat ++ 
                          cl.s ! DDir ! t ! a ! p ! m ;
      c = Nom
      } ;

    --- more efficient to compile than case inside mkClause; see log.txt
    RelVP rp vp = case rp.hasAgr of {
      True => {s = \\ag =>
          (mkClause
                    (rp.s ! False ! {g = ag.g ; n = ag.n} ! Nom) False
                    {g = rp.a.g ; n = rp.a.n ; p = P3}
                    vp).s ! DDir ; c = Nom} ;
      False => {s = \\ag =>
          (mkClause
                    (rp.s ! False ! {g = ag.g ; n = ag.n} ! Nom) False
                    ag
                    vp).s ! DDir ; c = Nom
         }
      } ;

    RelSlash rp slash = {
      s = \\ag,t,a,p,m => 
          let aag = {g = ag.g ; n = ag.n} 
          in
          slash.c2.s ++ 
          rp.s ! False ! aag ! slash.c2.c ++ 
          slash.s ! aag ! DDir ! t ! a ! p ! m ;    --- ragr
      c = Acc
      } ;

    FunRP p np rp = {
      s = \\_,a,c => np.s ! Ton Nom ++ p.s ++ rp.s ! True ! a ! p.c ;
      a = {g = np.a.g ; n = np.a.n} ; 
      hasAgr = True
      } ;
    IdRP = {
      s = relPron ; 
      a = {g = Masc ; n = Sg} ; 
      hasAgr = False
      } ;

}