C++ Grammatik Problem (Anfänger)

MTROmusic

MTROmusic

Aktives Mitglied
Thread Starter
Dabei seit
26.08.2005
Beiträge
1.462
Reaktionspunkte
252
Hi, ich komme am besten direkt zur Sache was?

Ich soll folgende Aufgabe lösen, weiß aber nicht so recht wo ich nach meinem Ansatz weitermachen soll

-----------------------------------------------------------
Gegeben sei die folgende Grammatik G = (N; T; S; P), wobei
 N = (X,Y,Z)
 T = ((; );%;#; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9)
 S = X gilt und
 P aus
(P1) X --> Y
(P2) X --> X#Y
(P3) Y --> Z
(P4) Y --> Y %Z
(P5) Z --> 0,1,2,3,4,5,6,7,8,9
(P6) Z --> (X)
besteht.
Die Produktionen sind zusatzlich mit (P1) bis (P6) gekennzeichnet, damit sie (bei der Ablei-
tung) identi ziert werden konnen.

a) Sind die folgenden Worter aus der Grammatik ableitbar? Geben Sie jeweils eine Ableitung an, wenn das Wort aus der
Grammatik ableitbar ist, oder begrunden Sie, warum das Wort nicht ableitbar ist.
oder geben einen entsprechenden Ableitungsbaum an.
(a) Das abzuleitende Wort ist: 3%(5%2)
(b) Das abzuleitende Wort ist: ((1%5#6%9))#0)
(c) Das abzuleitende Wort ist: (1#2)%(6)


---------------------------

So..also mein bisheriger "Ansatz" zu Aufgabenteil ist folgender:

Zuerst leite ich die "3" ab, was dann wie folgt aussieht

X--(P1)-->Y--(P3)-->Z--(P5)-->3

Aber wie komme ich von da aus jetzt weiter? Ich hab die totaler Barriere im Schädel und ein Aussagekräftiges Beispiel finde ich weder im Skript noch durch google...ich vermute mal es muss ein mal "klick" machen und ich schnalls, vllt könnt ihr mir helfen.

Danke!
 
Nein, du musst ja erstmal expandieren. Dazu sind Regeln P2 (Ich brauche eine # zwischen zwei Zahlen) und P4 (ich brauche ein % zwische zwei Zahlen) gedacht. Dann kannst du, nachdem du dir mit P2 genügend Y erzeugt hast mit P4 und P6 klammern erzeugen.
 
Ich kapier es einfach nicht...Ich muss ja bei X anfangen, weil S=X ist.

was meinst du genau mit expandieren? KAnnste mir evtl ein kleines Beispiel geben? Ich bin momentan echt am verzweifeln
 
3%(5%2)
3%(5%z) ---- p5
3%(z%z) ---- p5
3%(y%z) ---- p3
3%(y) ---- p4
3%z ---- p6
z%z ---- p5
y%z ---- p3
y ---- p4
x ---- p1
s

Von unten nach oben siehst du, wie der Term sich immer weiter expandiert.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: MTROmusic
Ach so: was hat das eigentlich mit C++ zutun? Für mich ist das eine einfache Grammatik. ;)
 
ok also ich glaube ich habs so langsam:

-start
x --> y wegen (p1)
y --> y%Z wegen (P4)
y%Z --> y%(x) wegen (P6)
y%(x) --> y%(y) wegen (p1)
y%(y) --> y%(y%z) wegen (p4)
y%(y%z) -->z%(z%z) wegen (P3)
---> 3%(5%2) wegen(P5)


Ist das so richtig? So erscheint es mir jedenfalls als logisch

Edit: ja das ist sicherlich nichts c++ eigenes, das weiß ich. ICh wollte nur einen aussagekräftigen Threadtitel wählen, damit sich direkt die richtigen Leute angesprochen fühlen ;) Hat ja geklappt :D
 
Genau.
 
  • Gefällt mir
Reaktionen: MTROmusic
Edit: ja das ist sicherlich nichts c++ eigenes, das weiß ich. ICh wollte nur einen aussagekräftigen Threadtitel wählen, damit sich direkt die richtigen Leute angesprochen fühlen ;) Hat ja geklappt :D

Der war nicht aussagekräftig sondern fehlleitend. Man hätte da auch reingeschaut, wenn du nicht C++ erwähnt hättest - und wenn es dir um Aufmerksamkeit geht: Objective-C ist hier höher angesehen :p
 
  • Gefällt mir
Reaktionen: MTROmusic
Ok, ich dachte mir "kann ja nich schaden". Und falsche Angaben wollte ich auch nicht machen, man beißt ja schließlich nicht die Hand die einen nährt ;)

Du hast mir jedenfalls sehr geholfen, "Klick" hats gemacht! :)

Vielen dank und besten Gruß
 
Bitte und schönen Abend!
 
Danke, dir auch noch einen angenehmen Rest-Sonntag :)
 
Zurück
Oben Unten