summaryrefslogtreecommitdiff
path: root/examples/extmini/ParadigmsIta.gf
blob: 210abbc16cb23c1ae5b638edea579a7b15dd2054 (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
resource ParadigmsIta = GrammarIta [N,A,V] ** 
  open ResIta, GrammarIta, Prelude in {

oper
  masculine : Gender = Masc ;
  feminine : Gender = Fem ;

  accusative : Case = Acc ;
  dative : Case = Dat ;
 
  indicative : Mood = Ind ;
  conjunctive : Mood = Con ;

  mkN = overload {
    mkN : (vino : Str) -> N 
      = \n -> lin N (regNoun n) ;
    mkN : (uomo, uomini : Str) -> Gender -> N 
      = \s,p,g -> lin N (mkNoun s p g) ;
    } ;

  mkPN = overload {
    mkPN : (anna : Str) -> PN
      = \p -> let n = regNoun p in lin PN {s = p ; g = n.g} ;
    mkPN : Str -> Gender -> PN
      = \s,g -> lin PN {s = s ; g = g} ;
    } ;

  mkA = overload {
    mkA : (nero : Str) -> A 
      = \a -> lin A (regAdj a) ;
    mkA : (buono,buona,buoni,buone : Str) -> Bool -> A 
      = \sm,sf,pm,pf,p -> lin A (mkAdj sm sf pm pf False) ;
    } ;

  preA : A -> A
      = \a -> lin A {s = a.s ; isPre = True} ;

  mkV = overload {
    mkV : (finire : Str) -> V 
      = \v -> lin V (regVerb v) ;
    mkV : (andare,vado,vadi,va,andiamo,andate,vanno,andava,andro,vada,andassi,andato : Str) -> V 
      = \i,p1,p2,p3,p4,p5,p6,imp,fut,con,conp,p -> 
         lin V (mkVerb i p1 p2 p3 p4 p5 p6 imp fut con conp p Avere) ;
    } ;

  essereV : V -> V
    = \v -> lin V {s = v.s ; aux = Essere} ;

  mkV2 = overload {
    mkV2 : Str -> V2
      = \s -> lin V2 (regVerb s ** {c = accusative}) ;
    mkV2 : V -> V2
      = \v -> lin V2 (v ** {c = accusative}) ;
    mkV2 : V -> Case -> V2
      = \v,c -> lin V2 (v ** {c = c}) ;
    } ;

  mkVS : V -> Mood -> VS = \v,m ->
    lin VS (v ** {m = m}) ;
  mkVQ : V -> VQ = \v ->
    lin VQ v ;
  mkVV : V -> VV = \v ->
    lin VV v ;
}