Matheparser
-
Man kann sowas auch gut mit Rekursivem Abstieg lösen. Es lohnt sich, sich damit mal zu beschäftigen, dann muss man nicht an solchen ad-hoc-Lösungen wie oben verzweifeln ... und die Klammern sind a scho drin
-
das grobe prinzip ist ganz einfach, ich glaub du machst alles nur
unnoetig kopliziert:- werte zahl aus (wandle string in zahl)
- werte alle * und / ausdruecke aus
- werte alle + und - ausdruecke aus
das wars schon.
du laeufst im string einfach von links nach rechts und gehst alle 3 punkte
durch.
auf meiner seite findest du auch einen parser: http://cchoernchen.de
-
Bashar schrieb:
Man kann sowas auch gut mit Rekursivem Abstieg lösen. Es lohnt sich, sich damit mal zu beschäftigen, dann muss man nicht an solchen ad-hoc-Lösungen wie oben verzweifeln ... und die Klammern sind a scho drin
das hab ich mal gemacht und muss sagen, es lässt sich schön programmieren und auch später berechnen. geschwindigkeit nicht die beste aber ok.
-
entelechie schrieb:
das grobe prinzip ist ganz einfach, ich glaub du machst alles nur
unnoetig kopliziert:- werte zahl aus (wandle string in zahl)
- werte alle * und / ausdruecke aus
- werte alle + und - ausdruecke aus
das wars schon.
du laeufst im string einfach von links nach rechts und gehst alle 3 punkte
durch.
auf meiner seite findest du auch einen parser: http://cchoernchen.de
Tja, ganz so einfach ist es dann doch nicht. Dein Parser potenziert z.B. nicht richtig.
-
hm. warum potentiert er nicht richtig?
kannst du mir da mal ein beispiel posten?
-
entelechie schrieb:
hm. warum potentiert er nicht richtig?
kannst du mir da mal ein beispiel posten?Du potenzierst linksassoziativ, das ist falsch. Die Exponentiation ist rechtsassoziativ. Bei dir wird z.B. der Ausdruck 432 so berrechnet (43)2, richtig wäre jedoch: 4(32)
-
hmm. ja, stimmt. da muss ich mal schaun. danke fuer den hinweis
-
interpreter, könntest du mir den Code von deinem Parser mal schicken? Danke!
-
Auf meiner HP ist auch ein MatheParser zu finden.. Allerdings ist der noch relativ einfach gehalten.. Kennt also alle 4 Operationszeichen, und auch Potenzen via '^' (aber auch nur eine Potenz / Zahl, also nicht '222' oder so...), aber keine Klammern, etc... Man kann ihn aber auch mit einer Unbekannten 'x' verwenden... Bei Interesse einfach mal ausprobieren. Der Quelltext ist auch online, auch wenn er "dreckig" ist..
MfG Aoeke
-
Griffin schrieb:
interpreter, könntest du mir den Code von deinem Parser mal schicken? Danke!
An welche Emailadresse?
-
(ginge halt auhc über das Email senden übers Profil)
-
Griffin schrieb:
(ginge halt auhc über das Email senden übers Profil)
Mail + Parser is raus
-
Wenn du es so machen willst, wie man es wirklich macht, besorg dir ein Buch über Compilerbau. Dann sind diese Dinge ganz einfach.