summaryrefslogtreecommitdiff
path: root/next-lib/src/finnish/SentenceFin.gf
blob: 50ef6d447b5a8dbb7d97df42057a8441d459568d (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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
concrete SentenceFin of Sentence = CatFin ** open Prelude, ResFin in {

  flags optimize=all_subs ;

  lin

    PredVP np vp = mkClause (subjForm np vp.sc) np.a vp ;

    PredSCVP sc vp = mkClause (\_ -> sc.s) (agrP3 Sg) vp ;

    ImpVP vp = {
      s = \\pol,n => 
        let 
          agr   = {n = n ; p = P2} ;
          verb  = vp.s ! VIImper ! Simul ! pol ! agr ;
          compl = vp.s2 ! False ! pol ! agr ++ vp.ext  --- False = like inf (osta auto)
        in
        verb.fin ++ verb.inf ++ compl ;
    } ;

-- The object case is formed at the use site of $c2$, in $Relative$ and $Question$.

    SlashVP np vp = { 
      s = \\t,a,p => (mkClause (subjForm np vp.sc) np.a vp).s ! t ! a ! p ! SDecl ;
      c2 = vp.c2
      } ;

    AdvSlash slash adv = {
      s  = \\t,a,b => slash.s ! t ! a ! b ++ adv.s ;
      c2 = slash.c2
      } ;

    SlashPrep cl prep = {
      s = \\t,a,p => cl.s ! t ! a ! p ! SDecl ; 
      c2 = prep
      } ;

    SlashVS np vs slash = { 
      s = \\t,a,p => 
        (mkClause (subjForm np vs.sc) np.a 
          (insertExtrapos ("että" ++ slash.s) 
             (predV vs))
        ).s ! t ! a ! p ! SDecl ;
      c2 = slash.c2
      } ;


    EmbedS  s  = {s = etta_Conj ++ s.s} ;
    EmbedQS qs = {s = qs.s} ;
    EmbedVP vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp Inf1} ; --- case,pol,agr,infform

    UseCl  t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! SDecl} ;
    UseQCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p} ;
    UseRCl t p cl = {
      s = \\r => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! r ;
      c = cl.c
      } ;
    UseSlash t p cl = {
      s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ;
      c2 = cl.c2
    } ;

    AdvS a s = {s = a.s ++ s.s} ;

    RelS s r = {s = s.s ++ "," ++ r.s ! agrP3 Sg} ; ---- mikä

}