PDA

View Full Version : [Frage] lösung zu bsp.2 prüf. 2.5.02?! (grammatik)


nochwer
21-01-2003, 00:46
hab eigentlich schon geglaubt, dass ich morgen das grammatik-bsp. mit sicherheit schaffen würde - bis ich dieses besagte beispiel 2 bei der prüf. vom 2.5.02 gefunden habe... :ahhh: :confused:

kann mir da irgendwer mit einer lösung helfen?! ... danke!! :)

Filz
21-01-2003, 01:06
kannst du die Angabe mal posten - würd mich auch gerne verunsichern lassen...

nochwer
21-01-2003, 01:08
klar, hier kommt sie... >;)

Filz
21-01-2003, 01:50
lass dich nicht verwirren, ist glaub ich gar nicht so schwer - oder gehts um die Fragen (b) und (c) ?

Filz
21-01-2003, 02:09
EGREP => Ausdruck {Ausdruck}

Ausdruck => Statement | ( Ausdruck ) |( Statement )

Statement => [ Zeichen ] [Operator]

Operator => +|*|?

Zeichen => Elemente {Elemente}

Elemente => 0|...|9|a|...|z|A|...|Z




Sollte meiner Meinung nach funktionieren...

Orange ist normale Sprache, unterstrichen und schwarz sind die Symbole/Zeichen

Ich kann dir nicht sagen, wie ich diesen Zeichenkauderwelsch HASSE

nochwer
21-01-2003, 02:12
hmm, frage b) krieg ich schon hin, wenn ich die grammatik mal spezifiziert hab.

dabei hab ich aber folgende probleme:

- wie mach ich die "verkettung"? (oder ist etwa die das überflüssige, weil der automaten wörter ohnehin als solche liest?)

- "alternative": kann ich dem automaten einfach "|" => | sagen? oder muss ich ihm erklären, dass es 2 möglichkeiten von alternativen-kennzeichnung gibt, nämlich "alternative|" und "|alternative"? (oder brauch ich das nicht, weil das ja eh der ebnf-notation entspricht?)

- und wie mach ich das mit den ausdrucks-klammerung ()? kann man da irgendwie eine priorität vergeben, oder gibt's da eine andere möglichkeit?

... und wenn das alles in =>-Form aufgeschrieben werden kann, was bleibt dann noch für c) ?!

tja, also irgendwie hab ich das nicht so schnell runterschreiben können wie die anderen 2er-bspe...

wäre jedenfalls ziemlich beruhigend, wenn mir wer sagen könnte, wie das geht :idea: !

nochwer
21-01-2003, 02:13
okay, jetzt hab ich zu lange zum schreiben gebraucht, ich meld mich gleich nochmal... :bounce:

Filz
21-01-2003, 02:21
ad b) Grammatik ist (wahrscheinlich) eindeutig, weil ich in zehn-minütiger Suche kein Wort mit mehreren Linksableitungen gefunden habe

ad c) Überflüssig ist in der Spezifikation alles, das mehr über die Bedeutung der Grammatik (also die Auswertungsfunktion) beschreibt (zb dass * ein mehrmaliges Vorkommen selektiert)

nochwer
21-01-2003, 02:21
super - das sieht echt viel einfacher aus als erwartet... danke! :thumb:

und nochmal zur "alternative": du meinst also, dass es ganz egal ist, ob man dem automaten | (orange, also ebnf-notation) oder "|" (schwarz, also font) steht?

nochwer
21-01-2003, 02:24
die alternativen-frage hast du inzwischen auch schon beantwortet - danke nochmal!! :)

Filz
21-01-2003, 02:27
Hab die Frage nicht ganz verstanden...
Falls du so meinst:
Der Automat liest ein unterstrichenes Zeichen einfach als Zeichen und denkt sich absolut nichts über dessen Funktion - Dass die Zeichen "zufällig" die gleichen sind wie in der EBNF-Notation ist egal und nur zur Verwirrung

nochwer
21-01-2003, 02:31
toll, danke - da kann ich ja jetzt beruhigt schlafen :zzz: gehen... :applaus:

Jimmy
21-01-2003, 13:30
Original geschrieben von Filz
EGREP => Ausdruck {Ausdruck}

Ausdruck => Statement | ( Ausdruck ) |( Statement )

Statement => [ Zeichen ] [Operator]

Operator => +|*|?

Zeichen => Elemente {Elemente}

Elemente => 0|...|9|a|...|z|A|...|Z


Ich denke man sollte hier mit Epsilon beginnen oder? Weil Epsilon ist ja nicht gleich EGREP (Nur ein Hinweis: Falsche Startvariable : -1 Punkt ;) )

nochwer
21-01-2003, 14:19
hast recht - danke für den hinweis! :cool:

Jimmy
21-01-2003, 14:21
Ausdruck => Statement | ( Ausdruck ) |( Statement )


das ist NICHT ganz RICHTIG .. weil Audruck rekursiv vorkommt..
und das sollte man bei EBNF vermeiden !!!

martin
21-01-2003, 14:26
Original geschrieben von Filz
EGREP => Ausdruck {Ausdruck}

Ausdruck => Statement | ( Ausdruck ) |( Statement )

Statement => [ Zeichen ] [Operator]

Operator => +|*|?

Zeichen => Elemente {Elemente}

Elemente => 0|...|9|a|...|z|A|...|Z


Sollte meiner Meinung nach funktionieren...
Funktionieren wird es, denke ich auch. Aber: Es scheint so (wie ich aus verlässlicher Quelle weiß; danke Jimmy) als sei Rekursion nicht erlaubt oder führt zumindest zu Punkteabzügen.

Es müsste also heißen:
<snip>
Expression => Statement | ( Ausdruck ) | ( Statement )
Ausdruck => Statement { Statement }
Statement => [ Zeichen ] [Operator]
</snip>
Bitte Unterstreichungen gemäß obigem EBNF dazudenken. Hoffentlich is es richtig...

[edit] Und er war schneller :)

nochwer
21-01-2003, 14:28
"sollte man bei EBNF vermeiden"

heißt das: es ist zwar nicht gern gesehen, aber geht?

oder heißt das: kann man so auf keinen fall lassen...?

nochwer
21-01-2003, 14:32
okay, war zu langsam beim schreiben - hat sich mit deiner antwort schon erledigt :)

Filz
21-01-2003, 14:45
Erlaubt ist es glaub ich schon - die Grundbedingung (Kontextfreiheit) ist ja erfüllt - ich glaub aber es kommt mit Rekursionen einfach viel leichter (oder immer?) zu Mehrdeutigkeiten

Jimmy
21-01-2003, 14:53
ich hab bei der Okt. Pruefung wegen der Rekursion Punkteabzuege bekommen (Latex Beispiel: nichtleere Folge
Text => (a|...|z|A|...Z|0|...1|.|,|Space) {Text} IST FALSCH, stattdessen gehoert statt Text der ( ) - Klammerausdruck nochmals abgeschrieben

Ich meinte damit sequtentielle Rekursion
A => ....A...... geht nicht

indirekte Rekursion ist glaub aber schon erlaubt
A => B
B => A

Filz
21-01-2003, 15:21
Also einfach Rekursionen vermeiden - dann spart man sich nachher das Punkte-streiten

nochwer
21-01-2003, 15:24
hoffentlich ist ein punktestreit erst gar nicht notwendig... :eek: