Pernyataan If/Else dalam ANTLR menggunakan Pendengar
Dalam ANTLR, adalah mungkin untuk melaksanakan pernyataan if/else menggunakan kedua-dua pendengar dan pelawat. Walau bagaimanapun, disebabkan oleh keperluan khusus pernyataan if/else di mana anda perlu melompat di sekeliling pokok parse, adalah disyorkan untuk menggunakan pelawat untuk pelaksanaan ini.
Melaksanakan Pernyataan If/Else menggunakan Pelawat
Begini cara anda boleh melaksanakan pernyataan if/else menggunakan pelawat:
Contoh Pelaksanaan
Berikut ialah contoh pelaksanaan pernyataan if dalam kelas EvalVisitor:
<code class="java">@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>
Pelaksanaan ini berulang melalui syarat dalam pernyataan if. Jika mana-mana syarat bernilai benar, ia menilai stat_block yang sepadan dan keluar dari gelung. Jika tiada syarat yang benar, ia menilai blok_stat lain jika ada.
Atas ialah kandungan terperinci ## Bagaimanakah anda melaksanakan dengan berkesan kenyataan if/else dalam ANTLR menggunakan pelawat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!