Einzelnen Beitrag anzeigen

blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Parser: Überladene Operatoren

  Alt 2. Mai 2013, 00:43
@NamenLozer:

Ich hab mir das auch nochmal überlegt und das klingt wirklich sinnvoll. Denn wie du sagst, auch für den Benutzer ist es wahrscheinlich eher verwirrend wenn ein String-Plus einen höheren Rang hat als ein Int-Plus, denn das +Zeichen ist ja beides mal gleich. Und außerdem erwartet man ja auch, dass ein Operator mit einem höheren Rang eher verwendet wird als einer mit einem niedrigerem Rang. Das bedeutet wenn ich ein Int-Plus und ein Float-Plus definiere und dem Float-Plus einen höheren Rang gebe, dann kann ich das Int-Plus gar nicht mehr verwenden, da automatisch immer das Float-Plus mit impliziter Datentypumwandlung benutzt wird. Es scheint also wirklich sinnvoll zu sein bei gleichen Argumenten (ich hab das argLeft, argRight und argBoth genannt) auch nur gleiche Ränge zu erlauben.

Was ich mir nur noch nicht sicher bin ist, ob ich bei unterschiedlichen Argumenten (argLeft, argRight und argBoth) auch unterschiedliche Ränge verlangen soll. Denn wenn nicht, dann sollte ich wahrscheinlich eine eigene Rangfolge zwischen argLeft, argRight und argBoth festlegen. Wäre das sinnvoll z.B zuerst argRight dann argBoth und dann argLeft zu nehmen? Das entspräche dann der Reihenfolge von links nach rechts: Wenn ich also !5! habe wobei Fakultät und Subfakultät denselben Rang haben, dann würde (!5)! gerechnet werden, da man es wahrscheinlich auch so von links nach rechts lesen würde.
Oder gibt es hier eine andere, sinnvollere Variante?

Wegen links- und rechtsassoziativ: Ich mach vorerst alles linksassoziativ. Ob ich das nur wegen den blöden Potenzen noch einführe, muss ich mir dann später nochmal überlegen...
  Mit Zitat antworten Zitat