eh ich mir weiter 'n Wolf suche will ich mein "Problem" einmal mal hier aufzeigen.
Ich suche nach einer passenden Grammatik, die sowohl das unäre Minus als auch das binäre Minus versteht, ohne dass ich das unäre Minus klammern muss. Dabei soll das unäre Minus aber auf keinen Fall eine höhere Priorität haben als zB ein Malzeichen, zwar führt (-x)*y bei der Multiplikation zum gleichen Ergebnis wie -(x*y) aber das ist nicht immer der Fall.
Somit soll es die gleiche Priorität haben wie ein binäres Minus.
Wie müsste meine Grammatik erweitert werden (Startsymbol S)?
Akzeptiert werden soll zB:S -> E
E -> '-' E ; Möglich, aber dann kann x*-y nicht interpretiert werden, sondern nur x*(-y)
E -> E '+' T
E -> T
T -> T '*' F
T -> F
F -> '(' E ')'
F -> '-' F ; Nicht möglich, da sonst zu hohe Prio und -x*y wird als (-x)*y interpretiert
F -> var
x * -y als x * (-y)
x * -y * z als x * (-y) * z
- x * y als -(x*y)
x - - y als x-(-x)