Einzelnen Beitrag anzeigen

Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#41

Re: Wie am besten Parsen?

  Alt 23. Nov 2005, 20:16
Das war schön ausführlich und gut erklärt, danke alzaimar
Allerdings sollte es nur ein kleiner Matheparser werden, ohne "Sprachfeatures" oder sowas *g*
Ich hab mir schon Routinen geschrieben, die mir eben true zurückgeben, wenn ein Zeichen ein Punkt-Operator, ein Strich-Operator oder so ist.
Außerdem wird ein Term bereits ordentlich zerlegt,
aus
Code:
45*(60-18)+382/(+102)-3^897
zerlegt er also
Code:
45  *  (  60  -  18  ) +  382  /  (  +  102  ) -  3  ^  897
Das klappt soweit schon ganz gut

Ich denke, wenn ich auf eine "(" stoße, schaue ich, ob dahinter ein "-" ist mit einer anschließenden Zahl, und dann wieder die ")", dann speichere ich die negative Zahl in der Klammer in eine Variable, sehe dann, was nach der Klammer für ein Rechenzeichen kommt (speicher ich in einen eigenen Variablen-Typen, der u.A. auch "KeinOperator" enthält), danach hol ich mir die andere Zahl und "verwurste" die beiden per Operator. OK, es gibt natürliuch auch den Fall, dass die Zahl in der Klammer die hintere der beiden zu verwurstenden Zahlen ist, aber das seh ich ja daran, ob in meiner Operator-Variable "KeinOperator" oder was anderes gespeichert ist
Denkt ihr, das wäre ein guter funktionierender Ansatz?
Performance spielt erstmal keine Rolle
Julian J. Pracht
  Mit Zitat antworten Zitat