Java Operator Precedence-Vergleich

8

Verfügt Java über eine integrierte Methode zum Vergleichen der Vorrangstellung zweier Operatoren? Wenn ich zum Beispiel ein Zeichen '/' und ein Zeichen '+' habe, kann ich eine Methode aufrufen, die die beiden vergleicht und wahr / falsch zurückgibt, wenn die erste größer ist als die zweite (z. B. wahr)?

    
Andrew 30.04.2010, 03:55
quelle

4 Antworten

13

Die Rangfolge der Operatoren, so wie Sie sie definiert haben, ist, obwohl sie gewöhnlich ist, keine universelle Wahrheit, die die Java-Sprache erkennen sollte. Daher hat die Java-Sprache selbst keinen solchen Vergleich. Es ist natürlich einfach, Ihre eigenen zu schreiben:

%Vor%

Dann gegeben char op1, op2 , vergleichen Sie einfach precedenceLevel(op1), precedenceLevel(op2) .

Sie können auch if-else oder ternäre Operatoren anstelle von switch verwenden, wenn Sie nur sehr wenige Operatoren haben. Eine andere Option wäre die Verwendung von enum Operator implements Comparable<Operator> , aber je nachdem, was Sie tun, ist ein Parsing-Tool wie ANTLR um so besser .

Beachten Sie, dass das obige Beispiel ^ auf die höchste Priorität setzt, was bedeutet, dass es möglicherweise zur Potenzierung verwendet wird. Tatsächlich ist ^ in der Java-Sprache das Exklusiv-Oder und hat eine niedrigere Priorität als + .

%Vor%

Dies zeigt nur, dass der Vorrang und sogar die Semantik dieser Symbole keine universellen Wahrheiten sind.

Siehe auch:

polygenelubricants 30.04.2010, 04:31
quelle
2

nein. Am besten ist es, eine JAR-Datei von Drittanbietern zu finden, die Sprachparsing durchführt, und zu sehen, ob sie Methoden wie diese haben.

    
MeBigFatGuy 30.04.2010 03:57
quelle
0

Sie können Ihre eigene API schreiben, die dies ausführt und diese als Parameter sendet und Ihnen das Ergebnis liefert.

    
gmhk 30.04.2010 04:07
quelle
0

Ich bin verwirrt, warum Sie glauben, dass Sie diese Informationen zur Laufzeit benötigen. In jeder Sprache, die ich jemals benutzt habe, einschließlich Algebra und Englisch, ist der Operator Vorrang vordefiniert.

    
EJP 30.04.2010 08:27
quelle

Tags und Links