Seite 1 von 1

Aufgabe 9.1

BeitragVerfasst: 31 Dez 2013, 18:12
von Zoro
Guten Abend,

Ich verstehe nicht ganz, was "Multiplikation klammert weder nach rechts noch nach links" bedeutet.

Wenn ich Linksrekursion verwende, dann ist mein Operator linksassoziativ, wenn ich Rechtsrekursion benutze, dann ist mein Operator rechtsassoziativ, wenn ich Rechts- und Linksrekursion verwende (z.B. M => E*E), dann ist die Grammatik nicht mehr eindeutig.

Könnten Sie mir bitte erklären, was ich an dieser Stelle machen soll?

Bedeutet "weder nach rechts noch nach links" etwa: 1*(2*3) - falsch, (1*2)*3 - falsch, 1*2*3 - richtig, quasi keine Klammerung?

Vielen Dank.

Re: Aufgabe 9.1

BeitragVerfasst: 01 Jan 2014, 17:41
von Patrick.Speicher
Muss die Grammatik eindeutig sein?

Re: Aufgabe 9.1

BeitragVerfasst: 02 Jan 2014, 21:12
von Zoro
Ja, so steht in der Aufgabestellung: "Geben Sie eine eindeutige, kontextfreie Grammatik für arithmetische Ausdrücke".

Ich bin mit dieser Aufgabe immer noch nicht weitergekommen. :)

Re: Aufgabe 9.1

BeitragVerfasst: 02 Jan 2014, 22:44
von PeterW
Ich verstehe diese Aufgabenstellung so, dass die Multiplikation nicht fest nach links oder rechts klammert,
also beides sollte erlaubt sein.
Somit könnte deine Produktion zum Beispiel so aussehen:

P -> E | E * P |P * E

So zumindest meine Vermutung.

Liebe Grüße
Peter

Re: Aufgabe 9.1

BeitragVerfasst: 02 Jan 2014, 22:53
von Zoro
Ja, da hast du wahrscheinlich Recht. Wenn wir klammern, dann wird es nur einen Ableitungsbaum für jeden einzelnen Ausdrück geben. (1*2)*3 und 1*(2*3) sind zwei verschiedene Ausdrücke und damit ist unsere Grammatik eindeutig.

Vielen dank! Selber würde ich auf diese Idee nicht kommen. :)

LG

Re: Aufgabe 9.1

BeitragVerfasst: 04 Jan 2014, 15:43
von gert.smolka
"Multiplikation klammert weder nach rechts noch nach links" bedeutet, das "a*b*c" nicht zulässig ist für alle a,b und c.