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)?
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 +
.
Dies zeigt nur, dass der Vorrang und sogar die Semantik dieser Symbole keine universellen Wahrheiten sind.
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.
Tags und Links java