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 1 von 2  1 2      
Sebastian92

Registriert seit: 1. Mai 2008
Ort: Spiesen-Elversberg
35 Beiträge
 
#1

Programmmieren eines Mathe-Parsers

  Alt 18. Jun 2008, 15:35
liebe Programmiere,

Ich bräcuhte mal eure Hilfe. Gestern habe ich einen Eintrag gemacht, bei dem rauskam, dass ich einen Mathe-Parser programmieren muss. Jetzt habe ich ein Problem. ich habe noch nie mit Parser gearbeitet. Nun habei ch mich im Internet informiert. Allerdings bin ich aus diesen Angaben nich sdchlau geworden . Nun meine Frage: Wie Programmirt man einen Parser. Die definitionen habe ich mir schon angeschaut. Vielen dank für eure Hilfe,

mfg Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Programmmieren eines Mathe-Parsers

  Alt 18. Jun 2008, 15:51
Schau mal im OpenSource-Bereich nach HAM, da kannst Du Dir bestimmt etwas abgucken oder das Ding gleich weiterentwickeln
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#3

Re: Programmmieren eines Mathe-Parsers

  Alt 18. Jun 2008, 16:04
Ich weiß nicht, wie professionell ein Parser sein muss, damit er PARSER genannt werden kann. Aber wenn es dir darum geht, dass du eine Aufgabe in Form eines Strings z.B.
Code:
5+9*3-1+(7*2)
ausrechnest, kann ich dir empfehlen mit Stringmethoden den String so zu zerlegen, dass du Zahlen rausarbeitest und schaust, welches Rechenzeichen zwischen ihnen steht.
Also als erstes die Vorrangoperatoren und dann schreibst du sie zurück in den String. Bei dem Beispiel sollte das Programm dann erstmal nach Klammern suchen und diese lösen und in den Klammern (je nachdem wieviel drin steht) fängst du dann (wie im restlichen Teil der Aufgabe, wenn die Klammern weg sind) an, nach * und / zu suchen und die umliegenden Zahlen zu isolieren bzw. so zu konvertieren (in Integer oder Double z.B.), dass du intern mit ihnen rechnen kannst. Dann löst du die Aufgabe über eine Abfrage was für ein Operator zwischen ihnen steht. Bspw. 7*2 >> if Op = '*' then 7*2 else 7/2; (da du Vorrangrechnung zuerst machst, brauchst du in diesem Fall nur * oder / überprüfen, später + und - . Die Zahlen musst du eben vorher schon mittels StrToInt/Float und Copy aus dem String kopieren. Und so machst dus nachher mit + und - und außerhalb der Klammern auch.

Später lässt sich das ja dann auch noch auf Wurzel, Quadrat usw. erweitern. Nur immer den Vorrang beachten.

Man könnte auch ein Array nehmen, welches die Zahlen speichert (also alle Zahlen raussuchen) und dann eins, welches angibt, wie mit zwei benachbarten zahlen zu rechnen ist. Da wird es aber schwierig, wenn man Klammern in der Aufgabe hat, denn dann muss man diese Arrays verschachteln...
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Programmmieren eines Mathe-Parsers

  Alt 18. Jun 2008, 16:06
Verwende mal die Suchfunktion hier im Forum.
Da gibst Du als Suchwort "Matheparser" oder "Parser" ein.
Es werden bestimmt etliche Themen dazu gefunden.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

Re: Programmmieren eines Mathe-Parsers

  Alt 18. Jun 2008, 16:25
Zitat von DeddyH:
Schau mal im OpenSource-Bereich nach HAM, da kannst Du Dir bestimmt etwas abgucken oder das Ding gleich weiterentwickeln
Wow, ich werde weiterempfohlen? Welch unerwartete Ehre...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Programmmieren eines Mathe-Parsers

  Alt 18. Jun 2008, 16:36
Wenn ich den Begriff "Mathe-Parser" lese, schwenken meine Hirnwindungen eben gleich zu HAM (ich kann nichts dafür, diese Stimmen...)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#7

Re: Programmmieren eines Mathe-Parsers

  Alt 18. Jun 2008, 16:39
Oje, was hab' ich da nur angerichtet...
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.095 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

Re: Programmmieren eines Mathe-Parsers

  Alt 18. Jun 2008, 17:04
Hi,

erst einmal ist die Frage, was genau man unter einem Parser versteht. Genaugenommen wäre das ein Automat für einen Syntaxcheck (so hab ich es jedenfalls im Infounterricht gelernt). In der Regel ist es allerdings so, dass ein Matheparser auch gleich noch das Ergebnis berechnet, bzw. ein Rechner als Matheparser bezeichnet wird. Möchtest du also ein Programm(teil), dass einen eingegebenen Term auf Gültigkeit überprüft, oder das den Wert des Termes berechnet?

Wie ich bereits sagte, hatten wir das Thema bereits in der Schule. Noch vorher habe ich mit einem Rechner angefangen. Mein Ergebnis ist FAlterCalc. Wenn du es lieber selbst schreiben willst, bin ich natürlich auch gerne behilflich, es ist ja erst ein Jahr her, dass wie es in der Schule hatten, daher weiß ich evtl. noch ein wenig.

Mfg
FAlter

[edit] Du hast ein m zu viel. [/edit]
Felix Alter
Japanurlaub 2015
  Mit Zitat antworten Zitat
Macci

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

Re: Programmmieren eines Mathe-Parsers

  Alt 18. Jun 2008, 17:43
Zitat von FAlter:
Hi,

erst einmal ist die Frage, was genau man unter einem Parser versteht. Genaugenommen wäre das ein Automat für einen Syntaxcheck (so hab ich es jedenfalls im Infounterricht gelernt).
Hallo,

im Allgemeinen ist es nicht möglich mit einem Automat einen Syntaxcheck durchzuführen, weil die Syntax von einem mathematischen Ausdruck nicht regulär ist. Stammt diese Behauptung von einem Info-Lehrer oder einem Mathe-Lehrer?
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Programmmieren eines Mathe-Parsers

  Alt 18. Jun 2008, 17:44
Hier gibts einen generischen Matheparser
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:18 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