Python-Grammatik

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Lostmaster
User
Beiträge: 3
Registriert: Freitag 2. Dezember 2011, 15:06

Guten Tag,

ich studiere Informatik und habe eine Aufgabe gestellt bekommen zur Grammatik von Python.

Da wir aber zu dieser Aufgabe keinerlei Material bekommen haben und ich mich schon dumm und dämlich im internet umgesehen habe nach brauchbaren Informationen zu diesem Thema, hoffe ich auf eure Hife.
Ich will keine Musterlösung haben, das bringt mir letztlich ja nix außer ein paar punkten in der Übung, ich will es nach möglichkeit verstehen oder zumindest irgendwie selbst beantworten können.

Links, Lösungsansätze oder Tipps sind sehr willkommen =)

Im nachfolgen ist die gesamte Aufgabenstellung gepostet. Wär ideen der äußere sich bitte :P

Aufgabe:

"Die Syntax einer Programmiersprache lässt sich formal mit einer Grammatik beschreiben
die als Syntaxdiagramm dargestellt werden kann. Für Python ist die Grammatik
in der Dokumentation einzusehen. Nachstehend sind die Grammatiken der Sprachen
LOOP (L) und WHILE (W) gegeben.

identifier = (lowercase | uppercase) {lowercase | uppercase}.
lowercase = 'a'| .. |'z'.
uppercase = 'A'| .. |'Z'.
digit = ('0'| .. |'9') {'0'| .. |'9'}.

L = identifier ":=" identifier ("+" | "-") digit |
L ";" L |
"LOOP" identifier "DO" L "END".

W = identifier ":=" identifier ("+" | "-") digit |
W ";" W |
"WHILE" identifier "!=" '0' "DO" W "END".


(a) (4 Punkte) Erstellen Sie das Syntaxdiagramm für L und W.
(b) (4 Punkte) Überprüfen Sie die folgende Programme - hinsichtlich ihrer Grammatik und ordnen Sie sie den Sprachen L und W zu.

1. x_0 := x_1 + 0;
LOOP x_2 DO x_0 := x_0 + 1 END

2. Var := TMP + 0;
LOOP TMP DO Var := Var - 1 END

3. x:=k-1; c:=d+1;

4. y := x + 0;
WHILE y != 0 DO y := y-1 END "

Nebenbei noch eine abschließende Frage, wie kann ich den Bilder in meinem post implementieren, welche auf meinem pc aber nicht im internet vorhanden sind? Denn ich habe zu Aufgabe a) schon einen Lösungsansatz den ich gerne zeigen würde (.jpg-Bilddatei).

Vielen Dank schon mal für Antworten

mit freundlichen Grüßen
Dirk Meyer
BlackJack

@Lostmaster: Ich habe es mal nach Offtopic verschoben weil das ausser der Erwähnung von Python gar nichts mit Python zu tun hat. Ausser dem Hinweis dass die Python-Grammatik in der Dokumentation beschrieben wird, und Du damit ein umfangreiches Beispiel hast. Dort steht wie die Notation heisst, in der auch die beiden Grammatiken in der Aufgabe beschrieben sind. Damit hast Du drei Ansatzpunkte: formale Grammatik, den Namen der Notation, und Syntaxdiagramm. Dass Du dazu nichts im Internet finden kannst, kann eigentlich nur passieren wenn Du gar nicht erst gesucht hast oder keine Suchmaschine kennst und Dir auch Wikipedia nicht bekannt ist.

Zudem sind die beiden Beispielsprachen LOOP und WHILE so etwas wie das „Hello World“ unter den Grammatiken.

Bilder kann man hier nur einbinden, wenn sie im Internet verfügbar sind. Du könntest sie also bei einem der kostenlosen Bilderdienste hochladen, wie zum Beispiel imgur.com
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Wenn ich nach "Syntaxdiagramm" bei Google suche, kommen Tonnen von Bildern, aber auch http://de.wikipedia.org/wiki/Syntaxdiagramm . Das sollte für (a) doch reichen.

Für (b) musst du im Kopf nachvollziehen, ob die 4 Beispielprogramme gültige Ausdrücke der jeweiligen Sprache sind. Darf ein identifier in LOOP oder WHILE z.B. einen "_" enthalten?

Stefan
Lostmaster
User
Beiträge: 3
Registriert: Freitag 2. Dezember 2011, 15:06

Vielen Dank für die schnellen Antworten.
Warum ich nicht auf die Idee gekommen bin einfach mal "Syntaxdiagramm" bei google einzugeben ist mir selber ein rätsel :oops: , dafür muss ich mich in aller förmlichkeit entschuldigen ;).

Vielleicht setzt mein Gehirn etwas aus, bei den vielen Informationen die ich aufnehmen muss aktuell :shock: (Synapsenklappern macht sich breit :? )

Ich denke mit den gegebenen Antworten und Ansätzen sollte ich es schaffen die Aufgaben lösen zu können. Vielen Dank dafür.

Vielen herzlichen Dank :mrgreen:

Dirk
Lostmaster
User
Beiträge: 3
Registriert: Freitag 2. Dezember 2011, 15:06

So ich hab jetzt mal meine Lösung fertiggestellt. Könnte mir jmd. sagen ob noch etwas falsch ist oder ob es vlt. kleine Verbesserung bedarf ? =) Das wäre sehr nett.

Vielen Dank nochmal für eure Tipps, welche mir sehr weitergeholfen habe =)
so wünscht man sich das doch

hier meine Lösung:

http://imgur.com/a/RawZA#0

Bild

PS:
muss ich um das bild direkt anzuzeigen nur den link zwischen das [img] ... packen ?.. das hat bei mir leider nicht geklappt. oder muss man das anders machen ? .. habe das von euch empfohlene angebot von imgur genutzt ;)
Zuletzt geändert von Anonymous am Montag 5. Dezember 2011, 19:10, insgesamt 1-mal geändert.
Grund: Eingebettetes Bild korrigiert.
BlackJack

@Lostmaster: Du hast anscheinend eine Galerie mit einem Bild darin angelegt!? Normalerweise bietet einem Imgur wenn man ein Bild hoch lädt sogar schon Links zu dem Bild in verschiedenen Formaten an, die man nur noch kopieren und einfügen muss. Wenn Du auf das Bild klickst, dann ist unten auf der Webseite die dann kommt ein Link „Get embed codes“. Wenn Du da drauf klickst, siehst Du auch wieder diese Auswahl von Quelltextfragmenten für HTML und auch für BBCode für Foren die phpBB verwenden. Bei so grossen Bildern sollte man unten bei den Grössen „Large Thumbnail“ wählen und dann den Text in „Linked BBCode“ in den Beitrag kopieren.
BlackJack

@Lostmaster: Inhaltlich: ``identifier`` und ``digit`` sind komplizierter als sie sein müssten. Das gleiche gilt für ``LOOP`` und ``WHILE``. In den beiden kommen zudem Nicht-Terminale vor, die undefiniert sind. Und ``WHILE`` enthält noch einen weiteren Fehler.

PS: Und in beiden ist das selbe Nicht-Terminal als Terminal eingezeichnet.
Antworten