www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Formale Sprachen" - Erklärung zur EBNF
Erklärung zur EBNF < Formale Sprachen < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Formale Sprachen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Erklärung zur EBNF: Ableitungsbaum einer Sprache
Status: (Frage) beantwortet Status 
Datum: 16:23 Do 06.12.2007
Autor: nahpets87

Aufgabe
Gegeben ist die folgende, kontext-freie Grammatik in EBNF mit Startsymbol <E>

<E> ::= <T> ("+" <T>)*
<T> ::= <F> ("*" <F>)*
<F> ::= "(" <E> ")" | "x" | "y" | "z"

Geben Sie jeweils einen Ableitungsbaum für die folgenden Wörter:

a) "x + y * z"
b) "x * (y + z)"

Hallo!

Hier ist eine Aufgabe aus einer Probeklausur:

Ich habe die Sache mit dem Ableitungsbaum glaube ich absolut nicht verstanden. Ich finde auch nirgends Beispiele oder Anleitungen.

Ich kenne nur diese Form für eine Ableitung:
Ich habe ein Bild gemalt und es auf www.imageshack.us hochgeladen. Klickt auf den Link um es zu sehen:
[]hier klicken

So, dass ist natürlich nur eine ganz kleine Vereinfachung.

Ein Kommolitone meinte jetzt aber ein Ableitungsbaum sehe irgendwie so aus: <T> -> <F> usw. Wie es genau geht weiss er aber auch nicht.

Kann mir bitte jemand eine der beiden Teilaufgaben mit kleiner Erklärung lösen? Das wäre sehr nett.

Danke!




        
Bezug
Erklärung zur EBNF: Antwort
Status: (Antwort) fertig Status 
Datum: 11:46 Sa 08.12.2007
Autor: Bastiane

Hallo nahpets87!

> Gegeben ist die folgende, kontext-freie Grammatik in EBNF
> mit Startsymbol <E>
>  
> <E> ::= <T> ("+" <T>)*
>  <T> ::= <F> ("*" <F>)*

>  <F> ::= "(" <E> ")" | "x" | "y" | "z"

>  
> Geben Sie jeweils einen Ableitungsbaum für die folgenden
> Wörter:
>  
> a) "x + y * z"
>  b) "x * (y + z)"

Das Prinzip dieser Aufgabe ist eigentlich ganz einfach. Du möchtest einfach herausfinden, wie diese Wörter durch diese Grammatik erzeugt werden können, also in welcher Reihenfolge welche Regeln angewendet werden. Ich hoffe, ich erinnere mich noch richtig an die EBNF - "*" bedeutet kein oder mehrmals? Und die Zeichen in Anführungsstrichen werden einfach ausgegeben - so wie Terminalsymbole?

Gucken wir uns also a) an. Als erstes wird "x" erzeugt. Nun können wir uns entweder überlegen, dass wir ja mit dem Startsymbol anfangen müssen, also mit <E>. Oder wir stellen fest, dass das "x" nur in der Formel <F> vorkommt, also müssen wir irgendwie dorthin gelangen.
Wenn wir also bei <E> starten, muss als erstes die Regel <T> angewendet werden. Diese wiederum sagt uns, dass als erstes die Regel <F> angewendet werden muss, und dort finden wir dann unser "x". Damit hätten wir das erste Zeichen "erzeugt". Nun brauchen wir ein "+" - haben aber auch unsere vorherigen Regeln noch nicht abgearbeitet. <F> haben wir komplett abgearbeitet - das ist ja nur eine Veroderung von mehreren Möglichkeiten, und wenn wir eine davon nehmen, können wir nicht mehr nehmen. Aber bei <T> hatten wir ja nur das <F> genommen, dahinter kann ja jetzt noch beliebig oft  ("*"<F>) kommen. Wenn ich den Stern richtig deute, heißt das aber auch, dass es nicht kommen muss, und da wir ja ein "+" und kein "*" haben wollen, lassen wir es also weg. Nun also zurück zu <E> - da hatten wir nur das <T> genommen. Dahinter kann jetzt noch beliebig oft ("+"<T>) kommen - das ist toll, denn wir brauchen ja das "+". Also fügen wir das ein und weiter geht's mit dem folgenden <T>. Als nächstes Zeichen müssen wir dann ein y erzeugen - das können wir wieder mit <F> machen - dahin kommen wir von <T> aus wieder über <F> usw.

Das ist etwas anstrengend das aufzuschreiben - hast du das Prinzip verstanden? Ist die Frage überhaupt noch relevant - die Fälligkeit ist bereits abgelaufen...

Viele Grüße
Bastiane
[cap]

Bezug
                
Bezug
Erklärung zur EBNF: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 03:12 Mo 10.12.2007
Autor: nahpets87

Hi Bastiane, vielen Dank für deine Antwort!

Hmmm...also so ganz hab ich das glaub ich immernoch nicht vestanden.

Also: im Beispiel a)

Ich fange an bei <E> und gehe von dort nach <T>, also haben wir schonmal: <E> -> <T>. Bei T nehme ich F und von diesem F das "x".
Also <E> -> <T> -> <F> -> "x"
Jetzt müsste ich ja eigentlich wieder zurück zu <E>, dort dann wieder <T> nehmen und so weiter und so fort.

Schreib ich dann -> <E> -> "+" <T> -> "*" <F> -> <F> -> ???

Also irgendwie verstehe ich da noch nicht die Logik dahinter! Könntest du bitte die Aufgabe a mal hinschreiben, wie der Ableitungsbaum aussehen muss? Dann könnte ich schonmal versuchen das zu verstehen.

Vielen Dank!

Bezug
                        
Bezug
Erklärung zur EBNF: Antwort
Status: (Antwort) fertig Status 
Datum: 14:05 Mo 10.12.2007
Autor: Bastiane

Hallo nahpets87!

> Hi Bastiane, vielen Dank für deine Antwort!
>  
> Hmmm...also so ganz hab ich das glaub ich immernoch nicht
> vestanden.
>  
> Also: im Beispiel a)
>  
> Ich fange an bei <E> und gehe von dort nach <T>, also haben
> wir schonmal: <E> -> <T>. Bei T nehme ich F und von diesem
> F das "x".
>  Also <E> -> <T> -> <F> -> "x"

> Jetzt müsste ich ja eigentlich wieder zurück zu <E>, dort
> dann wieder <T> nehmen und so weiter und so fort.
>  
> Schreib ich dann -> <E> -> "+" <T> -> "*" <F> -> <F> ->
> ???
>  
> Also irgendwie verstehe ich da noch nicht die Logik
> dahinter! Könntest du bitte die Aufgabe a mal hinschreiben,
> wie der Ableitungsbaum aussehen muss? Dann könnte ich
> schonmal versuchen das zu verstehen.

Leider hast du hier die Aufgabenstellung nicht mehr zitiert, so dass ich nicht direkt darauf zurückgreifen kann. Erstens weiß ich nicht genau, wie ihr einen Baum aufschreibt, ich würde da <E> als Wurzel hinschreiben und von dort dann zwei Kinder, <T> und +<T> und von dort aus wieder immer weiter Kinder - das lässt sich hier nur schlecht zeichnen.
Ich würde das Ganze so aufschreiben:

<E> -> <T>+<T>

Startsymbol ist E, von dort brauchst du einmal das <T> um das x zu erzeugen und einmal danach auch noch +<T> um das +< zu erzeugen. Das weißt du aber erst, wenn du die Aufgabe so mal durchgegangen bist - es könnte ja theoretisch auch sein, dass du alles nur aus einem T erzeugen kannst und das +<T> gar nicht brauchst. Aber, wie ich ja im vorigen Post schon erläutert hatte, brauchen wir es.
So, nun kannst du jedes <T> einzeln auflösen - wenn du aber eh weißt, welche Regeln du anwenden musst (weil du es ja vor dem Aufschreiben schon mal durchgegangen bist), kannst du jetzt auch beide gleichzeitig auflösen. Du weißt also, dass aus dem ersten T irgendwie das x entstehen muss und aus dem zweiten musst du noch y*z hervorzaubern. Also machen wir es so:

-> <F>+<F>*<F>
-> x+y*z

Ist klar, was ich hier gemacht habe? Eigentlich habe ich es gerade schon erläutert. :-)
Viele Grüße
Bastiane
[cap]

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Formale Sprachen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de