Parser für polynomielle Ausdrücke |
InformaTiger
Tripel-As
Dabei seit: 19.02.2013
Beiträge: 228
Herkunft: Südtirol
|
|
|
25.10.2017 21:06 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
Hallo InformaTiger
Da komme ich wahrscheinlich erst am WE dazu. Könntest du mal erläutern, was Du meinst? Wie soll deine Sprache aussehen? Was meinst Du mit mehreren Ausdrücken? Meinst Du eine Liste mit Polynomen?
(ich habe mir deinen Code noch nicht wirklich angeschaut)
Gruß,
Karlito
|
|
26.10.2017 08:47 |
|
|
InformaTiger
Tripel-As
Dabei seit: 19.02.2013
Beiträge: 228
Herkunft: Südtirol
|
|
Also, vielleicht irre ich mich auch mit der Terminologie etwas da ich sowas ansonsten nie mache, aber es sollte ungefähr so aussehen:
EBNF (vermutlich nicht ganz formal korrekt, da dies mein erster Versuch ist, das zu beschreiben was ich haben möchte)
code: |
1:
2:
3:
4:
5:
|
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
integer = digit, { digit };
operator = "+" | "-" | "*" | "^";
variable = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z";
polynomial = digit | variable, operator, { polynomial } |
|
Wie bereits erwähnt sollen alle Operationen explizit angegeben werden (z.B 3*x und nicht 3x). Erlaubt sind nur die Operatoren Plus, Mal, Minus und Hoch. Unter Ausdrücke verstehe ich folgendes:
code: |
1:
2:
|
3^x // ein Ausdruck
3^x + 6 - 19 // mehrere Ausdrücke |
|
Ich hoffe das machte es halbwegs verständlich, was mein Resultat sein sollte. Und für einen Ausdruck funktioniert das ganze ja auch, ich brauche nur noch die Möglichkeit, dass da als linke Rechenoperation auch ein Polynom bzw ein Ausdruck stehen kann, da ansonsten beispielsweise nur sowas gültig wäre:
code: |
1:
2:
|
3^x 6 + 8 19 - 5 // derzeit gültig bzw. so falsch
3^x + 6 - 19 // mein Ziel bzw. richtig |
|
Mit freundlichen Grüßen
InformaTiger
__________________ Why do Java developers wear glasses? Because they can't C#
|
|
26.10.2017 09:33 |
|
|
|