Rumah > Java > javaTutorial > teks badan

Bagaimana Menghuraikan dan Membina Pokok daripada Ungkapan Aritmetik di Jawa?

Patricia Arquette
Lepaskan: 2024-10-24 18:33:02
asal
601 orang telah melayarinya

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>
Salin selepas log masuk

Pokok yang terhasil akan mempunyai struktur berikut:

    *
   / \
  +   7
 / \
5   2
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!