summaryrefslogtreecommitdiff
path: root/old-lib/resource/finnish/RelativeFin.gf
blob: 9aab4e8694f87f20fda2a3ad6618898e954861f1 (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
concrete RelativeFin of Relative = CatFin ** open Prelude, ResFin, MorphoFin in {

  flags optimize=all_subs ;

  lin

    RelCl cl = {
      s = \\t,a,p,_ => "siten" ++ "että" ++ cl.s ! t ! a ! p ! SDecl ;
      ---- sellainen
      c = NPCase Nom
      } ;

    RelVP rp vp = {
      s = \\t,ant,b,ag => 
        let 
          agr = case rp.a of {
            RNoAg => ag ;
            RAg a => a
            } ;
          cl = mkClause 
             (subjForm {s = rp.s ! agr.n ; 
                        a = agr ; isPron = False} vp.sc) agr vp
        in
        cl.s ! t ! ant ! b ! SDecl ;
      c = NPCase Nom
      } ;

    RelSlash rp slash = {
      s = \\t,a,p,ag => 
            let 
              cls = slash.s ! t ! a ! p ;
              who = appCompl True p slash.c2 (rp2np ag.n rp)
            in
            who ++ cls ;
      c = slash.c2.c
      } ;

    FunRP p np rp = {
      s = \\n,c => appCompl True Pos p (rp2np n rp) ++ np.s ! c ; --- is c OK?
      a = RAg np.a
      } ;

    IdRP = {
      s = \\n,c => relPron ! n ! npform2case n c ;
      a = RNoAg
      } ;



}