Guest User

Untitled

a guest
Jun 21st, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. boolean isElemP(X,Y \in t[i,j],Z \in t[l,m]) {
  2. /**
  3. Prüft, ob eine sich aus X, einem Y aus t[i,j] und einem Z aus
  4. t[l,m] eine Produktionsregel X->XZ der gegebenen Grammatik er-
  5. zeugen lässt.
  6. Die Funktion terminiert und gibt "true" zurück, sobald eine
  7. Regel gefunden wurde.
  8. Lässt sich aus allen möglichen Kombinationen keine passende
  9. Regel erzeugen, so gibt die Funktion "false" zurück.
  10. **/
  11. }
  12.  
  13. void derive2Terminal(X \in I) {
  14. /**
  15. Leitet ein Nichtterminal zu einem Terminal ab, wenn eine ent-
  16. sprechende Produkionsregel in P existiert. Wenn keine existiert,
  17. liegt ein Fehler in der Recognitionmatrix vor.
  18. **/
  19. }
  20.  
  21. addKnode(X) {
  22. /**
  23. Fügt dem Baum einen Knoten mit der Markierung X hinzu
  24. **/
  25. }
  26.  
  27. void rek(t[i,j],A) {
  28.  
  29. k:=1;
  30. found=false;
  31.  
  32. if (j==1) then {
  33. addKnode(derive2Terminal(A));
  34. return;
  35. } // END OF IF
  36. else {
  37.  
  38. while(!found) do {
  39. if isElemP(A,B \in t[i,k],C \in t[i+k,j-k]) then {
  40. found:=true;
  41. addKnode(B); // füge eine Knoten für den Unterbaum, der mit B beginnt hinzu
  42. addKnode(C); // füge eine Knoten für den Unterbaum, der mit C beginnt hinzu
  43. rek(t[i,k],B); // rufe die Funktion rekursiv für den Unterbaum B auf
  44. rek(t[i+k,j-k],C); // rufe die Funktion rekursiv für den Unterbaum C auf
  45. } // END OF IF
  46. else {
  47. k++; // wenn keine Produktionsregel gefunden wurde, wird das nächste Paar von Einträgen aus der Matrix gewählt.
  48. } // END OF ELSE
  49. } // END OF WHILE
  50. } //END OF ELSE
  51.  
  52. }
  53.  
  54. r(tau):=S
  55.  
  56. rek(t[1,n],S);
Add Comment
Please, Sign In to add comment