Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan kandungan artikel anda: Mudah dan langsung: * Cara Menghuraikan Ungkapan Matematik dalam C : Algoritma Shunting-Yard dan Tatabahasa Formal * Tikar Penghurai

Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan kandungan artikel anda: Mudah dan langsung: * Cara Menghuraikan Ungkapan Matematik dalam C : Algoritma Shunting-Yard dan Tatabahasa Formal * Tikar Penghurai

Linda Hamilton
Linda Hamiltonasal
2024-10-27 20:44:01933semak imbas

Here are some question-based titles that fit the content of your article:

Simple and direct:

* How to Parse Mathematical Expressions in C  : Shunting-Yard Algorithm and Formal Grammars
* Parsing Mathematical Expressions in C  : Two Effective Approaches

Menghuraikan Ungkapan Matematik dalam C

Soalan:

Memandangkan rentetan ungkapan matematik, bagaimana anda boleh membina pokok huraian untuk mewakili ungkapan?

Penyelesaian:

1. Algoritma Shunting-Yard:

Algoritma Shunting-yard ialah pendekatan dua hala yang menukar ungkapan infiks kepada postfix (Notasi Polish Songsang) dan kemudian membina pepohon parse.

  • Infix to Postfix:

    • Buat dua tindanan: tindanan operator dan tindanan output.
    • Imbas ungkapan infix dari kiri ke kanan.
    • Jika operan ditemui, tolak ia ke tindanan output.
    • Jika kurungan kiri ditemui, tolak ia pada tindanan operator.
    • Jika kurungan kanan ialah ditemui, pengendali pop dari tindanan operator dan tolaknya ke tindanan output sehingga kurungan kiri ditemui.
    • Jika operator ditemui, tolaknya ke tindanan operator jika keutamaannya lebih tinggi daripada operator teratas pada tindanan, jika tidak, pop pengendali dengan keutamaan yang lebih tinggi daripada tindanan operator dan tolaknya ke tindanan output.
  • Postfix to Parse Tree:

    • Buat nod akar untuk pokok parse.
    • Operan pop daripada tindanan output dan cipta nod daun untuknya.
    • Operan pop daripada tindanan output dan cipta dalaman nod dengan kanak-kanak menunjuk ke nod yang dicipta untuk operan.
    • Lampirkan kanak-kanak pada nod akar.

2. Tatabahasa Formal:

Sebagai alternatif, anda boleh mentakrifkan tatabahasa formal untuk ungkapan matematik dan menggunakan alat penghuraian untuk menjana penghurai. Tatabahasa Parsing-Expression (PEG) tipikal untuk ungkapan matematik kelihatan seperti ini:

Expr:   Term '+' Expr | Term '-' Expr | Term;
Term:   Factor '*' Term | Factor '/' Term | Factor;
Factor: Number | '(' Expr ')';

Beberapa perpustakaan C/C menyokong penghuraian PEG, seperti:

  • meningkatkan::semangat
  • pyPEG2
  • PCRE

Atas ialah kandungan terperinci Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan kandungan artikel anda: Mudah dan langsung: * Cara Menghuraikan Ungkapan Matematik dalam C : Algoritma Shunting-Yard dan Tatabahasa Formal * Tikar Penghurai. 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