AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programmmieren eines Mathe-Parsers

Ein Thema von Sebastian92 · begonnen am 18. Jun 2008 · letzter Beitrag vom 18. Jun 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#11

Re: Programmmieren eines Mathe-Parsers

  Alt 18. Jun 2008, 18:59
Hi,

die Behauptung stammt von einem Info-Lehrer und als Beispiel hatten wir einen Kellerautomat (der mit einem Stack arbeitet), meist reicht es stattdessen schon, einen Automat mit einem zusätzlichen Zähler anstelle des Stacks zu verwenden, da nur gleichartige Informationen auf dem Stack abgelegt werden und es lediglich nötig ist, zu unterscheiden, ist was drauf oder nicht. Und doch, in gewissen Grenzen bereiten Syntaxchecks mit einem Automaten kein Problem, es muss nicht einmal ein Kellerautomat sein, wenn du z. B. nur prüfen willst, ob die Eingabe eine natürliche Zahl ist. Es kommt auf den Sprachaufbau an, aber etwas in der Form (1+2)*(3^4) zu überprüfen ist möglich. (Der Stack wird dann höchstens für die Klammern benötigt, alles andere schafft man auch ohne).

Tatsächlich sind komplexere Syntaxchecks bisher das einzige, wozu ich bisher einen Automaten vorgezogen habe, da ich sonst keine Idee hatte. In anderen Anwendungsfällen kann man auf die Automatentheorie meist verzichten, jedenfalls den blöden Schulbeispielen nach.

Wikipedia gibt mir auch recht:

Zitat:
Der eigentliche Parser als Implementierung eines abstrakten Automaten (meist realisiert als Kellerautomat) kümmert sich dagegen um die Grammatik der Eingabe, führt eine syntaktische Überprüfung der Eingangsdaten durch und erstellt in der Regel aus den Daten einen Ableitungsbaum (in Anlehnung an das Englische gelegentlich auch als Parse-Baum bezeichnet). Dieser wird danach zur Weiterverarbeitung der Daten verwendet; typische Anwendungen sind die semantische Analyse, Codegenerierung in einem Compiler oder Ausführung durch einen Interpreter.
Absatz 2 unter Funktionsweise
http://de.wikipedia.org/wiki/Parser#Funktionsweise

Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat
Macci

Registriert seit: 31. Mai 2007
129 Beiträge
 
#12

Re: Programmmieren eines Mathe-Parsers

  Alt 18. Jun 2008, 19:30
Hallo,

klar funktioniert es mit einem Kellerautomaten. Ich dachte jetzt eher du meinst einen DFA, weil ein Computer ist nichts anderes als ein solcher, und Sebastian92 will das ganze ja auf Delphi programmieren, also kommt nur ein DFA in Frage.

Ein Kellerautomat kann mehr als reguläre Sprachen erkennen (nämlich genau kontextfreie), und das reicht für solche Ausdrücke aus. Ein DFA wird aber im Allgemeinen NICHT ausreichen. (Beispielweise für Additionen im R^n oder auch N^n, wenn du - wie du vorgeschlagen hast - nur natürliche Zahlen verwenden willst, funktioniert es nicht.)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: Programmmieren eines Mathe-Parsers

  Alt 18. Jun 2008, 21:34
Ja nun werft dem armen doch nicht gleich die gesamte Automatentheorie vor die Füße . Wobei ich zugeben muss, dass ich erst so wirklich verstanden habe was ein Parser genau tut, nachdem ich mir die theoretische Informatik Vorlesung reingeschlabbert hab.
Wenn du (TE) noch ziemlicher Neuling beim Programmieren bist, und mit Begriffen wie Compilerbau, Tokenizer oder Automaten so überhaupt nichts verbindest, wäre es in der Tat erstmal ratsam, wenn du dir einen existierenden Parser schnappst und ihn nutzt. Um einen eigenen so gut zu bekommen wie manchen bestehenden (HAM z.B. ) wird, so meine Vermutung stimmt, dass du Neuling bist, eine ganz schön beachtliche Menge Theorie zwischen dir und einem eigenen brauchbaren Parser stehen.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz