Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

Parser für nichtgeklammerte Ausdrücke
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Mathe-Forum -> Parser für nichtgeklammerte Ausdrücke
 
Autor Nachricht
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 16 Jun 2005 - 22:02:41    Titel: Parser für nichtgeklammerte Ausdrücke

Ist es möglich einen Parser für nichtgeklammerte arithmetische Ausdrücke ohne Backtracing zu realisieren? Z.B. wie parst Man

a*b^2+c

wenn die Ordnung der Operationen +,*,^ ist, also

((a * (b^2)) + c).

Bitte um jeden Einfall ...
Gauss
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 20.04.2005
Beiträge: 2063

BeitragVerfasst am: 17 Jun 2005 - 13:58:30    Titel:

Hier ist eine Übung dazu. Auf der Seite findet man auch das Skript dazu.

http://wwwicg.informatik.uni-rostock.de/Lehre/Informatik3/SS2005/

Übung C4
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 17 Jun 2005 - 20:17:31    Titel:

Ich habe leider keine Hinweise auf LL(k) Parser gefunden. Könntest Du bitte einen genaueren Link angeben.
Gauss
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 20.04.2005
Beiträge: 2063

BeitragVerfasst am: 20 Jun 2005 - 13:31:03    Titel:

Was heisst denn Backtracing?
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 20 Jun 2005 - 13:41:32    Titel:

Wenn man sich in der Entwiklungsregel "verläuft", da man erst ab einem bestimmten (späteren) Zeitpunkt merkt, daß eine Regel aufgrund Mehrdeutigkeit falsch angewandt wurde, so muß man "zurückspringen" und eine andere Regel anwenden. Das nennt man doch so, oder?
Gauss
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 20.04.2005
Beiträge: 2063

BeitragVerfasst am: 20 Jun 2005 - 13:56:43    Titel:

Ich habe soetwas ähnliches schon mal programmiert, du musst mit einem ADT Keller deinen Term wie in Übung 4 umformen und dann "von innen nach aussen" auswerten.

Es gibt auch eine rekursive Möglichkeit.
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 20 Jun 2005 - 14:05:02    Titel:

Die Aufgabenstellung habe ich gesehen. Diese entspricht im Wesentlichen dem, was ich mache. Der einzige unterschied ist, daß ich dynamische Präzedenzen und dynamische Operatorzuweisung habe:

a and b

dann ist and ein operator und a und b argumente.

and a b

dann ist a operator und and und b argumente.

Könntest Du mir vielleicht ganz kurz beschreiben, was da genau auf den Stack kommt. Ich habe irgendwie bei dem Aufwand, den ich da reinstecke, nicht mehr die Kraft das selbst zusammenzureimen. Vielleicht ein einfaches Beispiel. Z.B. obiges, oder

1/2 * a^2 + b

mit + * / ^ angeordnet in aufsteigender Reihenfolge der Bindung.
Gauss
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 20.04.2005
Beiträge: 2063

BeitragVerfasst am: 20 Jun 2005 - 14:08:15    Titel:

Ich kann dir mal einen Quelltext in C dazu schicken. Du musst dich dann aber noch ein bisschen gedulden.
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 20 Jun 2005 - 14:28:23    Titel:

Das wäre doch am allerschönsten. Danke im Voraus.

Zuletzt bearbeitet von algebrafreak am 20 Jun 2005 - 18:15:12, insgesamt einmal bearbeitet
Gauss
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 20.04.2005
Beiträge: 2063

BeitragVerfasst am: 20 Jun 2005 - 14:30:51    Titel:

Ok ich hab deine E-Mail Adresse kannst sie wieder rausnehmen.
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Mathe-Forum -> Parser für nichtgeklammerte Ausdrücke
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum