![]() |
Re: Programmmieren eines Mathe-Parsers
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:
![]() Mfg FAlter |
Re: Programmmieren eines Mathe-Parsers
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.) |
Re: Programmmieren eines Mathe-Parsers
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz