Rumah  >  Artikel  >  Java  >  Bagaimana Menghuraikan dan Membina Pokok daripada Ungkapan Aritmetik di Jawa?

Bagaimana Menghuraikan dan Membina Pokok daripada Ungkapan Aritmetik di Jawa?

Patricia Arquette
Patricia Arquetteasal
2024-10-24 18:33:02586semak imbas

How to Parse and Build a Tree from Arithmetic Expressions in Java?

Menghuraikan Ungkapan Aritmetik dan Membina Pokok daripadanya di Jawa

Pengenalan

Menghuraikan ungkapan aritmetik dan membina pokok yang setara adalah tugas penting dalam reka bentuk pengkompil dan pemprosesan bahasa. Artikel ini akan menunjukkan cara menghuraikan ungkapan aritmetik dan mencipta perwakilan pokok dalam Java.

Menghuraikan Ungkapan

Untuk menghuraikan ungkapan, kita boleh menggunakan timbunan- algoritma berasaskan. Sambil kita mengulangi ungkapan:

  • Tolak kurungan pembuka pada tindanan.
  • Tolak nombor dan operator pada tindanan.
  • Menemui kurungan penutup, nilaikan subpokok dengan memunculkan tindanan sehingga mencapai kurungan pembukaan yang sepadan, kemudian tolak hasilnya pada tindanan.

Membina Pokok

Setelah ungkapan dihuraikan, kita boleh membina nod pokok daripada timbunan:

  • Nod Daun: Integer menjadi nod LeafInt.
  • Nod Pengendali: Operator menjadi nod dengan kelas PlusOp, MinusOp, MultOp atau DivOp dan anak-anak mereka adalah pop dari tindanan.

Contoh

Pertimbangkan ungkapan (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>

Pokok yang terhasil akan mempunyai struktur berikut:

    *
   / \
  +   7
 / \
5   2

Mengendalikan Nombor dan Tanda Kurung Negatif

Untuk mengendalikan negatif nombor, mewakilinya sebagai 5 (-2) bukannya 5-2. Tanda-tanda negatif sentiasa mempunyai keutamaan yang tidak sama. Begitu juga, kurungan memaksa susunan operasi.

Pengesahan

Untuk memastikan ketepatan, sahkan ungkapan dengan menandai:

  • Kurungan pembukaan mempunyai padanan kurungan penutup.
  • Setiap operator mempunyai bilangan operan yang betul.

Kesimpulan

Menggunakan algoritma berasaskan tindanan, ia adalah mudah untuk menghuraikan ungkapan aritmetik dan membina perwakilan pokok yang setara dengannya. Pendekatan ini menyediakan asas yang boleh dipercayai untuk analisis lanjut dan manipulasi ungkapan aritmetik dalam Java.

Atas ialah kandungan terperinci Bagaimana Menghuraikan dan Membina Pokok daripada Ungkapan Aritmetik di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn