home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9202 / grampars / prolog / alparser.pro < prev    next >
Encoding:
Text File  |  1992-01-08  |  4.8 KB  |  181 lines

  1. ausdruck(e,n,m,[x,y]) :- formel(e,n,m,[x,y]).
  2.  
  3. formel(e,n_,m,[x,y]) :- formel_(twice,p,n,m,[x,z]), rest-formel(p,e,n_,n,[z,y]).
  4.  
  5. formel_(w,p,n_,m,[x,y]) :- primary(f,n,m,[x,z]), rest-formel_(w,f,p,n_,n,[z,y]).
  6.  
  7. primary(p,n,m,[x,y]) :-
  8.    wort('that',[x,u]),
  9.    formel_(twice,p,n,m,[u,y]).
  10. primary([o-a,p,q],n,m,[x,y]) :-
  11.    wort(o,[x,z]),
  12.    conc-junktor(o,o_,o-a),
  13.    primary(p,m_,m,[z,u]),
  14.    wort(o_,[u,v]),
  15.    primary(q,n,m_,[v,y]).
  16. primary(q,n,m,[x,y]) :-
  17.    wort(p,[x,z]),
  18.    diff-oder-gleich([p_,p],m,m_),
  19.    relativs(p_,q_,n_,m_,[z,u]),
  20.    conc-primary(q_,q,n,n_,[u,y]).
  21.  
  22. relativs(p,[o-a,p,p_],n,m,[x,y]) :-
  23.    wort('who',[x,z]),
  24.    wort(o,[z,u]),
  25.    verb-junktor(o,o-a),
  26.    primary(p_,n,m,[u,y]).
  27. relativs(p,q,n,m,[x,y]) :-
  28.    wort('who',[x,z]),
  29.    rest-formel_(twice,p,q,n,m,[z,y]).
  30. relativs(p,p,n,n,[x,x]).
  31.  
  32. conc-primary(p,[and,p,p_],n,m,[x,y]) :-
  33.    wort(',',[x,z]),
  34.    primary(p_,n,m,[z,y]).
  35. conc-primary(p,[o-a,p,p_],n,m,[x,y]) :-
  36.    wort(o,[x,z]),
  37.    conc-junktor(o,o-a),
  38.    primary(p_,n,m,[z,y]).
  39. conc-primary(p,p,n,n,[x,x]).
  40.  
  41. rest-formel_(w,p,[o-a,p,[o-a_,q1,p]],n,m,[x,y]) :-
  42.    wort(v-erb,[x,z]),
  43.    verb-junktor(v-erb,o-a),
  44.    wort(v-erb_,[z,u]),
  45.    verb-junktor(v-erb_,o-a_),
  46.    wort('by',[u,v]),
  47.    formel_(once,q1,n,m,[v,y]).
  48. rest-formel_(w,p,[o-a,p,q1,[o-a_,q1,q2]],n,m,[x,y]) :-
  49.    wort(v-erb,[x,k]),
  50.    verb-junktor(v-erb,o-a),
  51.    formel_(once,q1,n_,m,[k,u]),
  52.    wort(t-o,[u,z]),
  53.    wort(o,[z,r]),
  54.    verb-junktor(t-o,o,o-a_),
  55.    formel_(once,q2,n,n_,[r,y]).
  56. rest-formel_(w,p,[o-a,p,[o-a_,p,q2]],n,m,[x,y]) :-
  57.    wort(v-erb,[x,u]),
  58.    verb-junktor(v-erb,o-a),
  59.    wort(t-o,[u,z]),
  60.    wort(o,[z,r]),
  61.    verb-junktor(t-o,o,o-a_),
  62.    formel_(once,q2,n,m,[r,y]).
  63. rest-formel_(w,p,q,n,m,[x,y]) :-
  64.    hv-junktor(o-a,p,p_,q,[x,z]),
  65.    wort(o,[z,u]),
  66.    verb-junktor(o,o-a),
  67.    formel_(once,p_,n,m,[u,y]).
  68. rest-formel_(twice,p,[o-a,p,p_],n,m,[x,y]) :-
  69.    wort(o,[x,z]),
  70.    verb-junktor(o,o-a),
  71.    formel_(once,p_,n,m,[z,y]).
  72. rest-formel_(w,e,e,m,m,[x,x]).
  73.  
  74. hv-junktor(o-a__,p,p_,[o-a_ ; o-a,[o-a__,p,p_]],[x,y]) :-
  75.    wort(o_,[x,z]),
  76.    hilfs-junktor(o_,o-a_),
  77.    wort(o,[z,y]),
  78.    negation-junktor(o,o-a).
  79. hv-junktor(o-a_,p,p_,[o-a,[o-a_,p,p_]],[x,y]) :-
  80.    wort(o,[x,y]),
  81.    hilfs-junktor(o,o-a).
  82.  
  83. rest-formel(p,[o-a,p,p_],n,m,[x,y]) :-
  84.    wort(o,[x,z]),
  85.    verb-junktor(o,o-a),
  86.    formel(p_,n,m,[z,y]).
  87. rest-formel(e,e,m,m,[x,x]).
  88.  
  89. wort(a,[a;x,x]).
  90.  
  91. diff-oder-gleich([k,n],nil,[k,n];nil).
  92. diff-oder-gleich([k,n],[k,m];q,[k,m];q) :- eq(n,m).
  93. diff-oder-gleich([k,n],[k_,m];q,[k_,m];p) :-
  94.    dif(n,m),
  95.    diff-oder-gleich([k,n],q,p).
  96.  
  97. lesen(nil) :- next-char_('.') / in-char_('.').
  98. lesen(a;b) :- in-word(a,x) / lesen(b).
  99. lesen(a;b) :- in-char_(a), lesen(b).
  100.  
  101. terminologie :-
  102.    line,
  103.    write('Namen:              Eigennamen'),
  104.    write('Sprachjunktoren:    Verben').
  105.  
  106. grammatik :-
  107.    terminologie,
  108.    repeat,
  109.    line,
  110.    write('Ausdruck:   '),
  111.    lesen(p),
  112.    analysiere(p,e),
  113.    write('Semantik:   '),
  114.    outl(e),
  115.    fail.
  116.  
  117. /* repeat. */
  118. /* repeat :- repeat. */
  119.  
  120. analysiere(p,e) :- ausdruck(e,n,nil,[p,nil]) .
  121. analysiere(p,e) :- write('            ...  ist nicht wohlgeformt'), fail.
  122.  
  123. /***********   DATENBANK  (Junktoren)   ***********/
  124.  
  125. verb-junktor('believes',believe).
  126. verb-junktor('wants',want).
  127. verb-junktor('asks',ask).
  128. verb-junktor('knows',know).
  129. verb-junktor('loves',love).
  130. verb-junktor('finds',find).
  131. verb-junktor('sees',see).
  132. verb-junktor('believe',believe).
  133. verb-junktor('want',want) .
  134. verb-junktor('ask',ask) .
  135. verb-junktor('know',know) .
  136. verb-junktor('love',love) .
  137. verb-junktor('find',find) .
  138. verb-junktor('see',see) .
  139. verb-junktor('to','believe',to-believe) .
  140. verb-junktor('to','want',to-want) .
  141. verb-junktor('to','ask',to-ask) .
  142. verb-junktor('to','know',to-know) .
  143. verb-junktor('to','love',to-love) .
  144. verb-junktor('to','find',to-find) .
  145. verb-junktor('to','see',to-see) .
  146. verb-junktor('is',be-passive) .
  147. verb-junktor('are',be-passive) .
  148. verb-junktor('was',be-passive) .
  149. verb-junktor('were',be-passive) .
  150. verb-junktor('believed',believe) .
  151. verb-junktor('wanted',want) .
  152. verb-junktor('asked',ask) .
  153. verb-junktor('knew',know) .
  154. verb-junktor('known',know) .
  155. verb-junktor('loved',love) .
  156. verb-junktor('found',find) .
  157. verb-junktor('saw',see) .
  158. verb-junktor('seen',see) .
  159.  
  160. hilfs-junktor('do',do) .
  161. hilfs-junktor('does',do) .
  162. hilfs-junktor('did',do) .
  163. hilfs-junktor('can',can) .
  164. hilfs-junktor('could',can) .
  165. hilfs-junktor('shall',shall) .
  166. hilfs-junktor('should',shall) .
  167. hilfs-junktor('will',will) .
  168. hilfs-junktor('would',will) .
  169. hilfs-junktor('may',may) .
  170. hilfs-junktor('might',may) .
  171.  
  172. negation-junktor('not',not) .
  173.  
  174. conc-junktor('and',and) .
  175. conc-junktor('or',or) .
  176. conc-junktor('neither','nor',neither-nor) .
  177. conc-junktor('either','or',either-or) .
  178.  
  179. /* .End world: Normal */
  180.  
  181.