home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9302 / sprache / kg.pro < prev    next >
Encoding:
Text File  |  1992-06-19  |  3.6 KB  |  154 lines

  1. " - - - - -  Kategorial-Grammatik - Parser  - - - - - "
  2.  
  3. syntax(a,c,d) ->
  4.    analyse(0,t,a,c)
  5.    loeschen(schnitt)
  6.    reduction(t,c,nil,d)
  7.    /;
  8. syntax(a,c,"KEIN SATZ") ->;
  9.  
  10. " - -  Analyse: Ausdrücke -> Kategorien  - - "
  11.  
  12. analyse(t,t,nil,nil) ->;
  13. analyse(t,t',x.a,y.b) ->
  14.    kategorie(x,y)
  15.    val(add(t,1),t'')
  16.    analyse(t'',t',a,b);
  17.  
  18. " - -  Reduktion: Kategorien -> SATZ  - - "
  19.  
  20. reduction(t,nil,SATZ.nil,"SATZ") ->;
  21. reduction(t,nil,c,d) ->
  22.    dot(c)
  23.    val(sub(t,1),t')
  24.    reduction(t',c,nil,d);
  25. reduction(t,a.b.x,c,d) ->
  26.    reduce(a,b,c')
  27.    reduction(t,c'.x,c,d);
  28. reduction(t,a.x,c,d) ->
  29.    val(inf(0,t),1)
  30.    element-ans-ende(a,c,c')
  31.    reduction(t,x,c',d);
  32.  
  33. element-ans-ende(a,nil,a.nil) ->;
  34. element-ans-ende(a,b.x,b.y) ->
  35.    element-ans-ende(a,x,y);
  36.  
  37. " - -  Reduktionsregeln  - - "
  38.  
  39. reduce(x.nil,x."\".ss.nil,SATZ) ->
  40.    faktum(schnitt(x.nil,x."\".ss.nil,SATZ.nil),nil);
  41. reduce(u."/".x.nil,x.nil,u.nil) ->
  42.    faktum(schnitt(u."/".x.nil,x.nil,u.nil),nil);
  43. reduce(x.nil,x."\".u.nil,u.nil) ->
  44.    faktum(schnitt(x.nil,x."\".u.nil,u.nil),nil);
  45. reduce("(".z1."\".z2.")"."/".y.nil,y.nil,z1."\".z2.nil) ->
  46.    faktum(schnitt("(".z1."\".z2.")"."/".y.nil,y.nil,z1."\".z2.nil),nil);
  47. reduce("("."(".z1."\".z2.")"."/".z3.")"."/".y.nil,y.nil,"(".z1."\".z2.")"."/".z3
  48.    .nil) ->
  49.    faktum(schnitt("("."(".z1."\".z2.")"."/".z3.")"."/".y.nil,y.nil,"(".z1."\".z2
  50.    .")"."/".z3.nil),nil);
  51.  
  52. faktum(a,b) -> assert'(a,b);
  53.  
  54. " - - - - -  Wort-Kategorien - Ausgabe  - - - - - "
  55.  
  56. kategorien(nil,nil) ->
  57.    line;
  58. kategorien(a.x,b.y) ->
  59.    bound(b)
  60.    set-line-cursor(13)
  61.    out(a)
  62.    set-line-cursor(24)
  63.    outm(" = ")
  64.    set-line-cursor(28)
  65.    ausgabe(b)
  66.    line
  67.    kategorien(x,y);
  68.  
  69. ausgabe(nil) ->;
  70. ausgabe(a.b) ->
  71.    ident(a)
  72.    out(a)
  73.    ausgabe(b);
  74. ausgabe(a.b) ->
  75.    string(a)
  76.    outm(a)
  77.    ausgabe(b);
  78.  
  79. ausgabe-schnitte ->
  80.    schnitt(a,b,c)
  81.    outm("Kategorie:   ")
  82.    ausgabe(a)
  83.    set-line-cursor(26)
  84.    outm("   geschnitten mit:   ")
  85.    ausgabe(b)
  86.    set-line-cursor(60)
  87.    outm("   ergibt:   ")
  88.    ausgabe(c)
  89.    line;
  90.  
  91. " - - - - -  Hauptprogramm  - - - - - "
  92.  
  93. lesen(nil) -> next-char'(".") / in-char'(".");
  94. lesen(c.b) -> in-word(a,c) lesen(b);
  95.  
  96. kg ->
  97.    repeat
  98.    line
  99.    outm("Satz:        ")
  100.    lesen(p)
  101.    syntax(p,c,d)
  102.    outm("Ergebnis:    ")
  103.    outml(d)
  104.    kategorien-x(p,c)
  105.    ausgabe-schnitte
  106.    loeschen(schnitt)
  107.    fail;
  108.  
  109. kategorien-x(p,a.c) ->
  110.    bound(a)
  111.    outm("Kategorien:")
  112.    kategorien(p,a.c);
  113. kategorien-x(p,c) ->;
  114.  
  115. repeat ->;
  116. repeat -> repeat;
  117.  
  118. " - - - - -  Datenbank  - - - - - "
  119. " "
  120. " - -  Lexikalische Kategorien  - - "
  121. " "
  122. " Anmerkung: nn = Individuen; ss = Aussagen "
  123.  
  124. kategorie(Hans,nn.nil) ->;
  125. kategorie(Maria,nn.nil) ->;
  126. kategorie(Kind,nn."\".nn.nil) ->;
  127. kategorie(Flirt,nn."\".nn.nil) ->;
  128. kategorie(Wochenende,nn."\".nn.nil) ->;
  129. kategorie(anregenden,nn.nil) ->;
  130. kategorie(das,nn."/".nn.nil) ->;
  131. kategorie(das,nn.nil) ->;
  132. kategorie(dem,nn."/".nn.nil) ->;
  133. kategorie(dem,nn.nil) ->;
  134. kategorie(einem,nn."/".nn.nil) ->;
  135. kategorie(einem,nn.nil) ->;
  136. kategorie(von,nn."/".nn.nil) ->;
  137. kategorie(mit,nn."/".nn.nil) ->;
  138. kategorie(traeumt,"("."(".nn."\".ss.")"."/".nn.")"."/".nn.nil) ->;
  139. kategorie(traeumt,"(".nn."\".ss.")"."/".nn.nil) ->;
  140. kategorie(traeumt,nn."\".ss.nil) ->;
  141. kategorie(langsam,ss."\".ss.nil) ->;
  142. kategorie(gern,ss."\".ss.nil) ->;
  143. kategorie(oft,ss."\".ss.nil) ->;
  144. kategorie(liebt,"(".nn."\".ss.")"."/".nn.nil) ->;
  145.  
  146. " - - - - -  Hilfspraedikate  - - - - - "
  147.  
  148. loeschen(a) ->
  149.    rule-nb(a,b)
  150.    find-rule(a)
  151.    suppress(b);
  152. loeschen(a) ->;
  153.  
  154. ;End world: Normal