Rumah >Java >javaTutorial >Bagaimanakah Pelawat ANTLR Boleh Digunakan untuk Melaksanakan Pernyataan If/Else dalam Bahasa?
Pernyataan If/else dengan Corak Pendengar ANTLR
Secara lalai, ANTLR 4 menjana pendengar. Jika anda menentukan parameter baris arahan -visitor pada org.antlr.v4.Tool, ANTLR juga akan menjana kelas pelawat. Pelawat menawarkan lebih kawalan ke atas menghuraikan pokok parse kerana ia membenarkan anda memilih subpokok yang hendak dilalui. Perbezaan ini amat berharga apabila anda menyasarkan untuk mengecualikan subpokok tertentu, seperti blok if/else. Walaupun pendengar secara teknikal boleh menampung tugasan ini, ia adalah lebih bersih untuk menggunakan pelawat.
Berikut ialah langkah utama untuk melaksanakan penyataan if/else menggunakan ANTLR dan corak pelawat:
Untuk contoh konkrit, berikut ialah pelaksanaan kelas EvalVisitor yang boleh nilaikan pernyataan if/else dalam bahasa Mu:
<code class="java">public class EvalVisitor extends MuBaseVisitor<Value> { // ... @Override public Value visitIf_stat(MuParser.If_statContext ctx) { List<MuParser.Condition_blockContext> conditions = ctx.condition_block(); boolean evaluatedBlock = false; for (MuParser.Condition_blockContext condition : conditions) { Value evaluated = this.visit(condition.expr()); if (evaluated.asBoolean()) { evaluatedBlock = true; // evaluate this block whose expr==true this.visit(condition.stat_block()); break; } } if (!evaluatedBlock && ctx.stat_block() != null) { // evaluate the else-stat_block (if present == not null) this.visit(ctx.stat_block()); } return Value.VOID; } }</code>
Dengan pelaksanaan ini, anda boleh menghuraikan input Mu yang mengandungi pernyataan if/else, menilai syarat dan melaksanakan blok kod yang sesuai.
Atas ialah kandungan terperinci Bagaimanakah Pelawat ANTLR Boleh Digunakan untuk Melaksanakan Pernyataan If/Else dalam Bahasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!