Latihan 1 dari materi Visitor Pattern di Design Patterns — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Bangun AST mini lalu implement dua visitor: Evaluator dan Printer.
Node types:
{ type: "num", value } — angka literal{ type: "bin", op, left, right } — operator "+" atau "*" antara dua nodeImplementasikan accept(node, visitor) — function generic yang memanggil visitor.visitNum(node) untuk tipe "num" atau visitor.visitBin(node) untuk tipe "bin".
Lalu buat dua visitor:
createEvaluator() — return { visitNum, visitBin } di mana:
visitNum(n) → return n.valuevisitBin(n) → hitung accept(n.left, this) + accept(n.right, this) untuk op "+", atau * untuk op "*"createPrinter() — return { visitNum, visitBin } di mana:
visitNum(n) → return String(n.value)visitBin(n) → return "(L OP R)" — gunakan hasil accept untuk left/right.