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.