AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Kompilierender Matheparser
Thema durchsuchen
Ansicht
Themen-Optionen

Kompilierender Matheparser

Ein Thema von Dax · begonnen am 26. Mai 2005 · letzter Beitrag vom 24. Aug 2006
Antwort Antwort
Seite 10 von 14   « Erste     8910 1112     Letzte »    
Dax
Huhu DP!

Ich hab (mal wieder ) einen Matheparser geschrieben, aber diesmal einen besonderen. Mit diesem kann man Ausdrücke nicht nur Parsen, sondern auch noch kompilieren (Habs mal duchgetestet, ist schneller als Delphieigene Kompilate)

Ich stells einfach mal so hier rein, zum Doks-schreiben ist es einfach zu.. heiß.. und das Interface erklärt sich eh fast von selbst, und mit den Comments in den Units und den Units selbst kommt man auch gut über die Runden. Hoffe ich

read you,
Dax

[edit] da waren ein paar Fehler, verzeiht [/edit]
nocheinedit: Wieder ein paar Fehler ausgebügelt
Angehängte Dateien
Dateityp: zip excqparser_207.zip (16,1 KB, 524x aufgerufen)
Dateityp: zip realdemo_442.zip (11,1 KB, 399x aufgerufen)
Dateityp: zip ecqpdemo-exe_649.zip (244,6 KB, 484x aufgerufen)
 
Benutzerbild von nailor
nailor
 
#91
  Alt 1. Jun 2005, 19:17
Zitat von DGL-luke:
weisst du, was genial wäre? wenn der parser gleichungen (bzw. eine seite einer gleichung) lösen (bzw. vereinfachen) könnte.

nur als kleine anregung
Zitat von Dax:
Sag mal ein konkretes Beispiel, dann überleg ichs mir

read you,
Dax

Hi Heute!

Ich hab die letzten Tage mal mit C# ein bisschen Parser gebastelt (nur zu meinem Vergnügen). Aber das ist echt nen Thema, für das ich mich begeistern könnte (glaub ich, von dem was ich bisher gemacht habe her). Plus Minus Mal Durch Hoch... (normale binäre Operatoren -> check). Operator Precedence (-> check). Klammern (-> check). Ein Protokoll führen. Das geht ja alles ganz schick.

Aber was mir dann recht schnell in den Sinn kam, war das Lösen von Gleichungen (erstmal aufgrund simpler Umformungen). Es müssten [irgendwann] natürlich auch so Sachen wie "Rechenweg anzeigen" und "benutzerdefinierte Formelsammlung" gehen. Die Formelsammlung sollte im Endeffekt ermöglichen, quasi alle Gleichungen (Ungleichungen) zu Lösen, die man sich so vorstellen kann. Natürlich mit allen Anmerkungen (Rechenweg, Annahmen...).

Also weniger (aber auch, die Basis muss stehen) Numberchrunchen, sondern auch nen schickes Drumrum auf höherem Level wie es z.b. Derive bietet. Bei Interesse wäre ich bereit, mal genauer _mit_-zuplanen.

Michael
Michael N.
  Mit Zitat antworten Zitat
Dax
 
#92
  Alt 1. Jun 2005, 19:20
Interesse besteht garantiert, alle potenziellen Mitarbeitenwoller sind herzlich eingeladen
  Mit Zitat antworten Zitat
Dax
 
#93
  Alt 3. Jun 2005, 16:40
Ahhh Ich hab grad einen tödlichen Fehler im Serializer ausgebügelt.. Aber die wieder mal neue Version sollte jetzt wirklich funktionieren.. Was ich zwar nicht glaube, weils bisher nie richtig geklappt, aber den Versuch ist es ja wert

read you,
Dax
  Mit Zitat antworten Zitat
Dax
 
#94
  Alt 4. Jun 2005, 20:04
Hallo mal wieder

Die jetzige Version hat nur eine Neuerung: die von Dust Signs indirekt geforderte Information über die Fehler

read you,
Dax
  Mit Zitat antworten Zitat
tyberis
 
#95
  Alt 4. Jun 2005, 23:18
Na Hallo!
Ich bin gewissermassen dein Konkurrent und wollte jetzt auch mal meinen Senf dazu geben (da mein Parser bisher erfolgreich ignoriert wurde ).

Hier eine Liste von noch falsch interpretierten Ausdrücken:
-2^2 => 4 (statt -4)
-(1/2) => Access Violation
(1-2)+3 => Access Violation
a^b^c => Hoch wird standardmässig oft rechtsgeklammert (siehe z.B. Definition der Gausschen Glockenkurve (keine explizite Klammerung) vs. Potenzgesetz (explizite Klammerung))

Sonst cool
  Mit Zitat antworten Zitat
Dax
 
#96
  Alt 5. Jun 2005, 13:37
Zitat von tyberis:
Na Hallo!
Ich bin gewissermassen dein Konkurrent und wollte jetzt auch mal meinen Senf dazu geben (da mein Parser bisher erfolgreich ignoriert wurde ).

Hier eine Liste von noch falsch interpretierten Ausdrücken:
-2^2 => 4 (statt -4)
Sorry, aber in meinem Kontext stimmt das Der Parser wertet den Ausdruck als (-2)^2, also...
Zitat von tyberis:
-(1/2) => Access Violation
(1-2)+3 => Access Violation
Korrigiert, neue Versionen oben
Zitat von tyberis:
a^b^c => Hoch wird standardmässig oft rechtsgeklammert (siehe z.B. Definition der Gausschen Glockenkurve (keine explizite Klammerung) vs. Potenzgesetz (explizite Klammerung))
Hmm.. Der Parser rechnet von links nach rechts, vielleicht sollte ich mir das mal ansehen ^^

Zitat von tyberis:
Sonst cool
Danke

read you,
Dax
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

 
Delphi 2006 Professional
 
#97
  Alt 5. Jun 2005, 13:55
Zitat von Dax:
Zitat:
Hier eine Liste von noch falsch interpretierten Ausdrücken:
-2^2 => 4 (statt -4)
Sorry, aber in meinem Kontext stimmt das Der Parser wertet den Ausdruck als (-2)^2, also...
x^n = |x^n| für alle {n | n mod 2 = 0}

wenn dir diese notation geläufig ist....

man könnte auch sagen alle geraden exponenten erzeugen ein positives ergebnis, aber auf das niveau müssen wir uns ja nicht herablassen

EDIT: oha, ich habe wohl was verwechselt. er bemängelt ja nicht, dass das ergebnis -4 IST, sondern dass es seiner Meinung nach -4 SEIN SOLLTE.
womit dax natürlich absolut recht hat. also nix für ungut.
Lukas Erlacher
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus
 
#98
  Alt 5. Jun 2005, 13:57
Zitat von DGL-luke:
man könnte auch sagen alle geraden exponenten erzeugen ein positives ergebnis
Naja, es kommt drauf an wie man -2^2 interpretiert: (-2)^2 = 4, waehrend -(2^2) = -4. Dort liegt der Unterschied: wo gehoert das Minus hin

Greetz
alcaeus
Andreas B.
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor
 
#99
  Alt 5. Jun 2005, 14:03
da es sich hier imho um den unären vorzeichen-wechsel-operator handelt (und nicht um nen dummes rechen-minus) hat es einen höheren "rang" als das potenzieren, und sollte zuerst ausgewertet werden, also

(-2)^2 = 4
Michael N.
  Mit Zitat antworten Zitat
Dax
 
#100
  Alt 5. Jun 2005, 14:05
Da hat nailor recht

Das - als Präfix negiert die nachgestellte Zahl/Variable mit höchster Priorität. Die unär-Präfixe werden sowieso als allererstes ausgewertet, auch vor den Postfixes
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 10 von 14   « Erste     8910 1112     Letzte »    


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 17:47 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