summaryrefslogtreecommitdiff
path: root/examples/tutorial/syntax/Grammar.gf
blob: 5484321ee9061985af2f37b783fc486c5f4fc37c (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
68
69
70
71
72
73
74
75
76
abstract Grammar = {

  flags startcat=Phr ;

  cat
    Phr ;  -- any complete sentence e.g. "Is this pizza good?"
    S ;    -- declarative sentence  e.g. "this pizza is good"
    QS ;   -- question sentence     e.g. "is this pizza good"
    NP ;   -- noun phrase           e.g. "this pizza"
    IP ;   -- interrogative phrase  e.g  "which pizza"
    CN ;   -- common noun phrase    e.g. "very good pizza"
    Det ;  -- determiner            e.g. "this"
    IDet ; -- interrog. determiner  e.g. "which"
    AP ;   -- adjectival phrase     e.g. "very good"
    AdA ;  -- adadjective           e.g. "very"
    VP ;   -- verb phrase           e.g. "is good"
    N ;    -- noun                  e.g. "pizza"
    A ;    -- adjective             e.g. "good"
    V ;    -- intransitive verb     e.g. "boil"
    V2 ;   -- two-place verb        e.g. "eat"
    Pol ;  -- polarity (pos or neg)           
    Conj ; -- conjunction           e.g. "and"

  fun
    PhrS    : S  -> Phr ;
    PhrQS   : QS -> Phr ;

    PredVP  : Pol -> NP -> VP -> S ;
    QuestVP : Pol -> NP -> VP -> QS ;

    IPPredVP : Pol -> IP -> VP -> QS ;
    IPPredV2 : Pol -> IP -> NP -> V2 -> QS ;
 
    ComplV2 : V2 -> NP -> VP ;
    ComplAP : AP -> VP ;

    DetCN   : Det -> CN -> NP ;

    ModCN   : AP -> CN -> CN ;

    AdAP    : AdA -> AP -> AP ;

    IDetCN  : IDet -> CN -> IP ;

    ConjS   : Conj -> S -> S -> S ;
    ConjNP  : Conj -> NP -> NP -> NP ;

  -- lexical insertion

    UseN : N -> CN ;
    UseA : A -> AP ;
    UseV : V -> VP ;

  -- entries of the closed lexicon

    this_Det  : Det ;
    that_Det  : Det ;
    these_Det : Det ;
    those_Det : Det ;
    every_Det : Det ;
    theSg_Det : Det ;
    thePl_Det : Det ;
    indef_Det : Det ;
    plur_Det  : Det ;
    two_Det   : Det ;

    which_IDet : IDet ;

    very_AdA  : AdA ;

    and_Conj  : Conj ;
  -- polarities

    PPos, PNeg : Pol ;

}