summaryrefslogtreecommitdiff
path: root/next-lib/src/interlingua/QuestionIna.gf
blob: 59d578ee3cf2bbbcd6c527108520990e51b59be3 (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
concrete QuestionIna of Question = CatIna ** open ResIna, Prelude in {

  flags optimize=all_subs ;

  lin
    QuestCl cl = {
      s = \\use_irreg,t,a,p => 
        let cls = cl.s ! use_irreg ! t ! a ! p 
        in table {
          OQuest   => cls ! OQuest ;
          ODir => "an" ++ cls ! ODir
        } 
      } ;

    QuestVP qp vp = 
      let cl = mkClause (qp.s ! Nom) Sp3 vp
      in {s = \\use_irreg,t,a,b,_ => cl.s ! use_irreg ! t ! a ! b ! ODir} ;

    QuestSlash ip slash = 
      mkQuestion (ss (slash.p2 ++ ip.s ! slash.c2)) slash ;

    QuestIAdv iadv cl = mkQuestion iadv cl ;

    QuestIComp icomp np = 
      mkQuestion icomp (mkClause (np.s ! Nom) np.a (predV_ esserV)) ;


    PrepIP p ip = {s = p.s ++ ip.s ! Nom} ;

    AdvIP ip adv = {
      s = \\c => ip.s ! c ++ adv.s ;
      n = ip.n
      } ;

    IdetCN idet cn = {
      s = \\c => casePrep [] c ++ idet.s ++ cn.s ! idet.n; 
      n = idet.n
      } ;

    IdetIP idet = {
      s = \\c => casePrep [] c ++ idet.s ;
      n = idet.n
      } ;

    IdetQuant iquant num = {
      s = iquant.s ! num.n ++ num.s ;
      n = num.n
      } ;

    CompIAdv a = a ;

    CompIP ip = ss (ip.s ! Nom) ;

}