Hallo,
Ich habe in meinem Loop Compiler (
www.loopcompiler.de.vu ) auch einen Mathe Parser gebaut.
Dieser Rechnet zwar nur mit Zahlen Element N aber das prinzip ist das selbe.
Ich bin damals hergegangen und habe das Ganze in einen Baum geparst den habe ich dann nachher mittels rekursivem Abstieg berechnen lassen können.
Der Parser Ging folgendermasen vor.
Data = String der die Eingegebene Formel enthält.
Es Folgt ein wenig PseudoCode
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| If Pos(')',data)<> 0 then begin end;
If Pos('*',data) <> then begin end;
|
Das ganze Endet wenn am Schlus nur noch der daraus gebastelte Wurzelpointer im String steht.
ein Ausdruck wie etwa
1+2*3
wird dann zu
Quelltext
1: 2: 3: 4: 5: 6:
| // Du siehst hier das Baumdiagramm, muste es als Quelltext formatieren, da sonst die Leerzeichen gelöscht werden. + / \ 1 * / \ 2 3 |
Natürlich kann mein Parser X, y ,z auch. das ein zu bauen braucht aber dann LookUpTables.
Just Try it.