Handhabung von unary minus für Shunting-Yard-Algorithmus

8

Gibt es einen besseren Weg, unary "-" zu behandeln, wenn man einen Infix-Ausdruck in einen Postfix-Ausdruck umwandelt?

Der offensichtlichste wäre, jedem unären "-" ein 0 vorangestellt zu haben. Kennt jemand eine bessere Implementierung? Danke!

    
JASON 27.11.2013, 15:42
quelle

1 Antwort

6

Wie ich das vor Jahren gemacht habe, erfand ich einen neuen Operator für meinen Postfix-Ausdruck. Wenn ich also im Infix auf ein unäres Minus stößt, würde ich es in # umwandeln. Also mein Postfix für a + -b wurde ab#+ .

Und natürlich musste mein Evaluator wissen, dass # nur einen Operanden platzierte.

Die Art hängt davon ab, wie Sie den Postfix-Ausdruck verwenden, sobald er erstellt wurde. Wenn Sie es anzeigen möchten, würde Ihr spezieller Operator # wahrscheinlich Leute verwirren. Aber wenn Sie es nur intern verwenden (was ich war), dann funktioniert es großartig.

    
Jim Mischel 27.11.2013, 17:19
quelle

Tags und Links