Eine Roboter-Sprache [BRATKO]


In diesem Beispiel soll eine Sprache für eine Roboter-Steuerung entwickelt werden. Der Roboter kann zwei verschiedene Aktionen ausführen: up - einen Schritt nach oben, und down - einen Schritt nach unten.
 

einfache Grammatik

move --> step. move --> step,move. step --> [up]. step --> [down].


Da die Standard-Prolog-Ausgabe "yes" bzw "no" nicht wirklich weiter hilft, wird die Grammatik im nächsten Schritt um die Ausgabe des Parsetrees erweitert, was vor allem beim debuggen von grossem Nutzen sein kann.
 

Grammatik mit Ausgabe des Parsetree

move(move(Step)) --> step(Step). move(move(Step,Move)) --> step(Step),move(Move). step(step(up)) --> [up]. step(step(down)) --> [down].


Im nächsten Schritt wird anstelle des Parsetrees Semantik mit ausgegeben. In diesem Falle ist die Semantik die Ausgabe des gesamten Weges, den sich der Roboter bewegt hat.
 

Grammatik mit Ausgabe der Semantik

move(Dist) --> step(Dist). move(Dist) --> step(Dist1),move(Dist2),{Dist is Dist1 + Dist2}. step(1) --> [up]. step(-1) --> [down].