summaryrefslogtreecommitdiff
path: root/examples/computer/ComputerFin.gf
blob: 01d6fdbd139bf81e0fa5296c6287404cfb18c791 (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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
--# -path=.:alltenses

concrete ComputerFin of Computer = DatorFin, NumeralFin, GrammarFin [

-- used to be the "mini" resource of GF book, chapter 9, but now larger

-- cat
    S,     -- sentence
    Cl,    -- clause
    NP,    -- noun phrase
    VP,    -- verb phrase
    AP,    -- adjectival phrase
    CN,    -- common noun
    Det,   -- determiner
    N,     -- noun
    A,     -- adjective
    V,     -- verb (one-place, intransitive)
    V2,    -- two-place verb (two-place, transitive or prepositional)
    AdA,   -- ad-adjective
    Tense, -- tense
    Pol,   -- polarity
    Conj,  -- conjunction

    Pron,  -- pronoun
    Numeral,

--  fun
    UseCl  , -- Tense -> Pol -> Cl -> S,
    PredVP , -- NP -> VP -> Cl,
---    ComplV2, -- V2 -> NP -> VP,
    DetCN  , -- Det -> CN -> NP,
    UsePron,
---    ModCN  , -- AP -> CN -> CN,

---    CompAP , -- AP -> VP,
    AdAP   , -- AdA -> AP -> AP,

---    ConjS  , -- Conj -> S  -> S  -> S,
---    ConjAP , -- Conj -> AP -> AP -> AP,
---    ConjNP , -- Conj -> NP -> NP -> NP,

    UseV   , -- V -> VP,
    UseN   , -- N -> CN,
    PositA, -- A -> AP,

---    a_Det, the_Det, 
    every_Det, -- Det,
---    this_Det, these_Det, -- Det,
---    that_Det, those_Det, -- Det,
    i_Pron, youSg_Pron, he_Pron, she_Pron, we_Pron, youPl_Pron, they_Pron, -- NP,
    very_AdA, -- AdA,

    TTAnt, -- Tense -> Ant -> Temp ;
    PPos, PNeg, -- Pol,
    TPres, TPast, TFut, TCond, -- Tense,
       STense, SCond, SFut, SPast, SPres, -- scand tense
    ASimul, AAnter,

    and_Conj, or_Conj, -- Conj,

-- extension of the mini grammar

--  cat
    Text,    -- text (with punctuation)          e.g. "Who knows it?"
    Utt,     -- utterance (sentence or question) e.g. "does she walk"
    QS,      -- question (fixed tense)           e.g. "who doesn't walk"
    QCl,     -- question clause (variable tense) e.g. "who walks"
    ClSlash, -- clause missing noun phrase       e.g. "she walks with"
    Adv,     -- adverb                           e.g. "here"
    Prep,    -- preposition (and/or case)        e.g. "with"
    VS,      -- sentence-complement verb         e.g. "know"
    VQ,      -- question-complement verb         e.g. "wonder"
    VV,      -- verb-phrase-complement verb      e.g. "want"
    IP,      -- interrogative pronoun            e.g. "who"
    PN,      -- proper name                      e.g. "John"
    Subj,    -- subjunction                      e.g. "because"
    IAdv,    -- interrogative adverb             e.g. "why"

    ListAP,
    ListNP,
    ListS,
    Temp,
    Comp,
    Ant,

    Imp, Bool, True, False, Voc,

--  fun

    UttS , -- S -> Utt,
    UttQS, -- QS -> Utt,

    UseQCl, -- Tense -> Pol -> QCl -> QS,
    
    QuestCl   , -- Cl -> QCl,             -- does she walk
    QuestVP   , -- IP -> VP -> QCl,       -- who walks
    QuestSlash, -- IP -> ClSlash -> QCl,  -- who does she walk with
    QuestIAdv , -- IAdv -> Cl -> QCl,     -- why does she walk

    SubjCl, -- Cl -> Subj -> S -> Cl,     -- she walks because we run

    PrepNP , -- Prep -> NP -> Adv, -- in the house

    ComplVS, -- VS -> S  -> VP,  -- know that she walks
    ComplVQ, -- VQ -> QS -> VP,  -- wonder who walks
    ComplVV, -- VV -> VP -> VP,  -- want to walk

---    SlashV2  , -- NP -> V2 -> ClSlash,   -- she loves
---    SlashPrep, -- Cl -> Prep -> ClSlash, -- she walks with

    AdvVP, -- VP -> Adv -> VP, -- walk in the city

    UsePN, -- PN -> NP,        -- John
---    AdvNP, -- NP -> Adv -> NP, -- the man in the city

    whoSg_IP , -- IP,
    here_Adv, -- Adv,
    by_Prep, in_Prep, of_Prep, with_Prep, -- Prep,
    can_VV, must_VV, want_VV, -- VV,
    although_Subj, because_Subj, when_Subj, if_Subj, -- Subj,
    when_IAdv, where_IAdv, why_IAdv-- IAdv,

] ** open SyntaxFin, (S = SyntaxFin) in {

-- functions with different type

lin
   TextS s = mkText (lin S s) ;
   TextQS qs = mkText (lin QS qs) ;
   TextImp vp = mkText (mkImp (lin VP vp)) ;

   ComplV2 v np = mkVP v np ;
   ModCN ap cn = lin CN (mkCN <lin AP ap : AP> <lin CN cn : CN>) ;
   CompAP ap = mkVP (lin AP ap) ;
   ConjS co x y = mkS (lin Conj co) (lin S x) (lin S y) ;
   ConjAP co x y = mkAP co x y ;
   ConjNP co x y = mkNP co x y ;
   a_Det = mkDet a_Quant ;
   the_Det = mkDet the_Quant ;
   aPl_Det = mkDet a_Quant plNum ;
   thePl_Det = mkDet the_Quant plNum ;
   this_Det = S.this_Det ;
   these_Det = S.these_Det ;
   that_Det = S.that_Det ;
   those_Det = S.those_Det ;
   possDet p = S.mkDet <p : Pron> ;
   numeralDet n = S.mkDet <n : Numeral> ;
   SubjS subj a b = mkS (S.mkAdv <subj : Subj> <a : S>) b ;
   CompAdv p pp = mkVP (S.mkAdv <p : Prep> <pp : NP>) ;
   SlashV2 np v2 = mkClSlash np v2 ;
   SlashPrep cl p = mkClSlash (lin Cl cl) <p : Prep> ;
   AdvCN cn p pp = mkCN <lin CN cn : CN> (mkAdv <p : Prep> <pp : NP>) ;
}