home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9202 / grampars / prolog / plparser.pro < prev   
Encoding:
Text File  |  1992-01-09  |  7.0 KB  |  256 lines

  1.  
  2. ausdruck(e,n,m,[x,y]) :- formel(e,n,m,[x,y]).
  3.  
  4. formel(e,n_,m,[x,y]) :- formel_(twice,p,n,m,[x,z]),
  5.                         rest-formel(p,e,n_,n,[z,y]).
  6.  
  7. formel_(w,p,n_,m,[x,y]) :- primary(f,n,m,[x,z]),
  8.                            rest-formel_(w,f,p,n_,n,[z,y]).
  9.  
  10. primary(p,n,m,[x,y]) :-
  11.    wort('that',[x,u]),
  12.    formel_(twice,p,n,m,[u,y]).
  13. primary([o-a,p,q],n,m,[x,y]) :-
  14.    wort(o,[x,z]),
  15.    conc-junktor(o,o_,o-a),
  16.    primary(p,m_,m,[z,u]),
  17.    wort(o_,[u,v]),
  18.    primary(q,n,m_,[v,y]).
  19. primary(q,n,m,[x,y]) :-
  20.    np(p_,m_,m,[x,z]),
  21.    relativs(p_,q_,n_,m_,[z,u]),
  22.    conc-primary(q_,q,n,n_,[u,y]).
  23.  
  24. np(o-a__,n,m,[x,y]) :-
  25.    praep(o-a,o-a__,[x,x1]),
  26.    wort(o,[x1,z]),
  27.    quantor(p_,[o-a_,q,t],o,o-a),
  28.    wort(p,[z,u]),
  29.    diff-oder-gleich([p_,p,q],m,n_),
  30.    wort(o_,[u,v]),
  31.    conc-junktor(o_,o-a_),
  32.    wort(b,[v,y]),
  33.    diff-oder-gleich([b_,b,t],n_,n).
  34. np(o-a_,n,m,[x,y]) :-
  35.    praep(o-a,o-a_,[x,x1]),
  36.    wort(o,[x1,z]),
  37.    quantor(p_,q,o,o-a),
  38.    wort(p,[z,y]),
  39.    diff-oder-gleich([p_,p,q],m,n).
  40. np(o-a_,n,m,[x,y]) :-
  41.    praep(o-a,o-a_,[x,x1]),
  42.    quantor(p_,q,EN,o-a),
  43.    wort(p,[x1,y]),
  44.    diff-oder-gleich([p_,p,q],m,n).
  45.  
  46. praep(o-a,o-a_,[x,x1]) :-
  47.    wort(a,[x,x1]),
  48.    praeposition(o-a,a,o-a_).
  49. praep(o-a,o-a,[x,x]) .
  50.  
  51.  
  52. relativs(p,o-a,n,m,[x,y]) :-
  53.    wort('who',[x,z]),
  54.    wort(o,[z,u]),
  55.    verb-junktor(p,p_,o,o-a),
  56.    primary(p_,n,m,[u,y]).
  57. relativs(p,q,n,m,[x,y]) :-
  58.    wort('who',[x,z]),
  59.    rest-formel_(twice,p,q,n,m,[z,y]).
  60. relativs(p,p,n,n,[x,x]) .
  61.  
  62. conc-primary(p,[and,p,p_],n,m,[x,y]) :-
  63.    wort(',',[x,z]),
  64.    primary(p_,n,m,[z,y]).
  65. conc-primary(p,[o-a,p,p_],n,m,[x,y]) :-
  66.    wort(o,[x,z]),
  67.    conc-junktor(o,o-a),
  68.    primary(p_,n,m,[z,y]).
  69. conc-primary(p,p,n,n,[x,x]) .
  70.  
  71. rest-formel_(w,p,o-a,n,m,[x,y]) :-
  72.    wort(v-erb,[x,z]),
  73.    verb-junktor(p,o-a_,v-erb,o-a),
  74.    wort(v-erb_,[z,u]),
  75.    verb-junktor(q1,p,v-erb_,o-a_),
  76.    wort('by',[u,v]),
  77.    formel_(once,q1,n,m,[v,y]).
  78. rest-formel_(w,p,o-a,n,m,[x,y]) :-
  79.    wort(v-erb,[x,k]),
  80.    verb-junktor(p,q1,o-a_,v-erb,o-a),
  81.    formel_(once,q1,n_,m,[k,u]),
  82.    wort(t-o,[u,z]),
  83.    wort(o,[z,r]),
  84.    verb-junktor(q1,q2,t-o,o,o-a_),
  85.    formel_(once,q2,n,n_,[r,y]).
  86. rest-formel_(w,p,o-a,n,m,[x,y]) :-
  87.    wort(v-erb,[x,u]),
  88.    verb-junktor(p,o-a_,v-erb,o-a),
  89.    wort(t-o,[u,z]),
  90.    wort(o,[z,r]),
  91.    verb-junktor(p,q2,t-o,o,o-a_),
  92.    formel_(once,q2,n,m,[r,y]).
  93. rest-formel_(w,p,o-a,n,m,[x,y]) :-
  94.    wort(v-erb,[x,u]),
  95.    verb-junktor(p,q,q2,v-erb,o-a),
  96.    formel_(once,q,n_,m,[u,z]),
  97.    formel_(once,q2,n,n_,[z,y]).
  98. rest-formel_(w,p,q,n,m,[x,y]) :-
  99.    hv-junktor(o-a,q,[x,z]),
  100.    wort(o,[z,u]),
  101.    verb-junktor(p,p_,o,o-a),
  102.    formel_(once,p_,n,m,[u,y]).
  103. rest-formel_(twice,p,o-a,n,m,[x,y]) :-
  104.    wort(o,[x,z]),
  105.    verb-junktor(p,p_,o,o-a),
  106.    formel_(once,p_,n,m,[z,y]).
  107. rest-formel_(w,e,e,m,m,[x,x]) .
  108.  
  109. hv-junktor(o-a__,[o-a_;o-a,o-a__],[x,y]) :-
  110.    wort(o_,[x,z]),
  111.    hilfs-junktor(o_,o-a_),
  112.    wort(o,[z,y]),
  113.    negation-junktor(o,o-a).
  114. hv-junktor(o-a_,[o-a,o-a_],[x,y]) :-
  115.    wort(o,[x,y]),
  116.    hilfs-junktor(o,o-a).
  117.  
  118. rest-formel(p,[o-a,p,p_],n,m,[x,y]) :-
  119.    wort(o,[x,z]),
  120.    verb-junktor(o,o-a),
  121.    formel(p_,n,m,[z,y]).
  122. rest-formel(e,e,m,m,[x,x]) .
  123.  
  124. wort(a,[a;x,x]) .
  125.  
  126. diff-oder-gleich([k,n,m],nil,[k,n,m];nil) :-
  127.    individuen(k,n,m).
  128. diff-oder-gleich([k,n,m_],[k,m,m_];q,[k,m,m_];q) :-
  129.    eq(n,m),
  130.    individuen(k,n,m_).
  131. diff-oder-gleich([k,n,n_],[k_,m,m_];q,[k_,m,m_];p) :-
  132.    dif(n,m),
  133.    diff-oder-gleich([k,n,n_],q,p).
  134.  
  135. individuen(k,n,m) :- eigenname(k,n,m).
  136. individuen(k,n,m) :- individuum(k,n,m).
  137.  
  138. lesen(nil) :- next-char_('.') / in-char_('.').
  139. lesen(a;b) :- in-word(a,x) / lesen(b).
  140. lesen(a;b) :- in-char_(a), lesen(b).
  141.  
  142. terminologie :-
  143.    line,
  144.    write('Namen:              Eigennamen'),
  145.    write('Sprachjunktoren:    Verben').
  146.  
  147. grammatik :-
  148.    terminologie,
  149.    repeat,
  150.    line,
  151.    write('Ausdruck:   '),
  152.    lesen(p),
  153.    analysiere(p,e),
  154.    write('Semantik:   '),
  155.    outl(e),
  156.    fail.
  157.  
  158. /* repeat . */
  159. /* repeat :- repeat. */
  160.  
  161. analysiere(p,e) :- ausdruck(e,n,nil,[p,nil]) .
  162. analysiere(p,e) :- write('            ...  ist nicht wohlgeformt'), fail.
  163.  
  164. /********************   DATENBANK  (Junktoren)   ********************/
  165.  
  166. verb-junktor(x,y,'believe',believe(x,y)) .
  167. verb-junktor(x,y,'believes',believe(x,y)) .
  168. verb-junktor(x,y,'believed',believe(x,y)) .
  169. verb-junktor(x,y,'want',want(x,y)) .
  170. verb-junktor(x,y,'wants',want(x,y)) .
  171. verb-junktor(x,y,'wanted',want(x,y)) .
  172. verb-junktor(x,y,'love',love(x,y)) .
  173. verb-junktor(x,y,'loves',love(x,y)) .
  174. verb-junktor(x,y,'loved',love(x,y)) .
  175. verb-junktor(x,y,'like',like(x,y)) .
  176. verb-junktor(x,y,'likes',like(x,y)) .
  177. verb-junktor(x,y,'liked',like(x,y)) .
  178. verb-junktor(x,y,'know',know(x,y)) .
  179. verb-junktor(x,y,'knows',know(x,y)) .
  180. verb-junktor(x,y,'knew',know(x,y)) .
  181. verb-junktor(x,y,'find',find(x,y)) .
  182. verb-junktor(x,y,'finds',find(x,y)) .
  183. verb-junktor(x,y,'found',find(x,y)) .
  184. verb-junktor(x,y,'see',see(x,y)) .
  185. verb-junktor(x,y,'sees',see(x,y)) .
  186. verb-junktor(x,y,'saw',see(x,y)) .
  187. verb-junktor(x,y,z,'ask',ask(x,y,z)) .
  188. verb-junktor(x,y,z,'asks',ask(x,y,z)) .
  189. verb-junktor(x,y,z,'asked',ask(x,y,z)) .
  190. verb-junktor(x,y,'to','believe',to-believe(x,y)) .
  191. verb-junktor(x,y,'to','want',to-want(x,y)) .
  192. verb-junktor(x,y,'to','ask',to-ask(x,y)) .
  193. verb-junktor(x,y,'to','know',to-know(x,y)) .
  194. verb-junktor(x,y,'to','love',to-love(x,y)) .
  195. verb-junktor(x,y,'to','find',to-find(x,y)) .
  196. verb-junktor(x,y,'to','see',to-see(x,y)) .
  197. verb-junktor(x,y,'is',be-passive(x,y)) .
  198. verb-junktor(x,y,'are',be-passive(x,y)) .
  199. verb-junktor(x,y,'was',be-passive(x,y)) .
  200. verb-junktor(x,y,'were',be-passive(x,y)) .
  201. verb-junktor(x,y,z,'give',give(x,y,z)) .
  202. verb-junktor(x,y,z,'gives',give(x,y,z)) .
  203. verb-junktor(x,y,z,'gave',give(x,y,z)) .
  204.  
  205. hilfs-junktor('do',do) .
  206. hilfs-junktor('does',do) .
  207. hilfs-junktor('did',do) .
  208. hilfs-junktor('can',can) .
  209. hilfs-junktor('could',can) .
  210. hilfs-junktor('shall',shall) .
  211. hilfs-junktor('should',shall) .
  212. hilfs-junktor('will',will) .
  213. hilfs-junktor('would',will) .
  214. hilfs-junktor('may',may) .
  215. hilfs-junktor('might',may) .
  216.  
  217. negation-junktor('not',not) .
  218.  
  219. conc-junktor('and',and) .
  220. conc-junktor('or',or) .
  221. conc-junktor('neither','nor',neither-nor) .
  222. conc-junktor('either','or',either-or) .
  223.  
  224. quantor(x,y,EN,exi(x,y)) .
  225. quantor(x,y,'all',all(x,y)) .
  226. quantor(x,y,'a',exi(x,y)) .
  227. quantor(x,y,'no',non-exi(x,y)) .
  228. quantor(x,y,'the',the(x,y)) .
  229. quantor(x,y,'some',exi(x,y)) .
  230. quantor(x,y,'every',all(x,y)) .
  231. quantor(x,y,'each',all(x,y)) .
  232. quantor(x,y,'few',few(x,y)) .
  233. quantor(x,y,'most',most(x,y)) .
  234.  
  235. praeposition(o-a,'to',[to,o-a]) .
  236. praeposition(o-a,'with',[with,o-a]) .
  237. praeposition(o-a,'by',[by,o-a]) .
  238.  
  239. eigenname(x,'John',john(x)) .
  240. eigenname(x,'Paul',paul(x)) .
  241. eigenname(x,'Mary',mary(x)) .
  242. eigenname(x,'Sue',sue(x)) .
  243. eigenname(x,'Cindy',cindy(x)) .
  244.  
  245. individuum(x,'man',man(x)) .
  246. individuum(x,'men',man(x)) .
  247. individuum(x,'woman',woman(x)) .
  248. individuum(x,'women',woman(x)) .
  249. individuum(x,'people',people(x)) .
  250. individuum(x,'boy',boy(x)) .
  251. individuum(x,'boys',boy(x)) .
  252. individuum(x,'girl',girl(x)) .
  253. individuum(x,'girls',girl(x)) .
  254.  
  255.  
  256.