Einführung
Arithmetische Ausdrücke analysieren und äquivalente Bäume erstellen ist eine wesentliche Aufgabe im Compiler-Design und in der Sprachverarbeitung. In diesem Artikel wird gezeigt, wie man einen arithmetischen Ausdruck analysiert und eine Baumdarstellung in Java erstellt.
Ausdruck analysieren
Um den Ausdruck zu analysieren, können wir einen Stapel verwenden. basierten Algorithmus. Während wir den Ausdruck durchlaufen:
Aufbau des Baums
Sobald der Ausdruck analysiert ist, Wir können die Baumknoten aus dem Stapel erstellen:
Beispiel
Betrachten Sie den Ausdruck (5 2) *7:
<code class="java">Stack<Node> stack = new Stack<>(); stack.push(new LeafInt(5)); stack.push(new PlusOp()); stack.push(new LeafInt(2)); stack.push(new MultOp()); stack.push(new LeafInt(7)); while (stack.size() > 1) { Node right = stack.pop(); Operator op = (Operator) stack.pop(); Node left = stack.pop(); stack.push(new OpNode(op, left, right)); }</code>
Der resultierende Baum hätte die folgende Struktur:
* / \ + 7 / \ 5 2
Umgang mit negativen Zahlen und Klammern
Um mit negativen Zahlen umzugehen Zahlen, stellen Sie sie als 5 (-2) anstelle von 5-2 dar. Negative Vorzeichen haben immer unären Vorrang. Ebenso erzwingen Klammern die Reihenfolge der Operationen.
Validierung
Um die Richtigkeit sicherzustellen, validieren Sie den Ausdruck, indem Sie Folgendes überprüfen:
Schlussfolgerung
Bei Verwendung eines stapelbasierten Algorithmus ist dies der Fall Es ist einfach, arithmetische Ausdrücke zu analysieren und ihre entsprechenden Baumdarstellungen zu erstellen. Dieser Ansatz bietet eine zuverlässige Grundlage für die weitere Analyse und Manipulation arithmetischer Ausdrücke in Java.
Das obige ist der detaillierte Inhalt vonWie kann ich in Java einen Baum aus arithmetischen Ausdrücken analysieren und erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!