package MiniJS; import MiniJS.Absyn.*; import java.util.Collections; import java.util.List; import java.util.ArrayList; /** BNFC-Generated Fold Visitor */ public abstract class FoldVisitor implements AllVisitor { public abstract R leaf(A arg); public abstract R combine(R x, R y, A arg); /* Program */ public R visit(MiniJS.Absyn.Prg p, A arg) { R r = leaf(arg); for (Stm x : p.liststm_) { r = combine(x.accept(this, arg), r, arg); } return r; } /* Stm */ public R visit(MiniJS.Absyn.SAssign p, A arg) { R r = leaf(arg); r = combine(p.exp_.accept(this, arg), r, arg); return r; } public R visit(MiniJS.Absyn.SPrint p, A arg) { R r = leaf(arg); r = combine(p.exp_.accept(this, arg), r, arg); return r; } /* Exp */ public R visit(MiniJS.Absyn.EVar p, A arg) { R r = leaf(arg); return r; } public R visit(MiniJS.Absyn.EInt p, A arg) { R r = leaf(arg); return r; } public R visit(MiniJS.Absyn.EDouble p, A arg) { R r = leaf(arg); return r; } public R visit(MiniJS.Absyn.ETimes p, A arg) { R r = leaf(arg); r = combine(p.exp_1.accept(this, arg), r, arg); r = combine(p.exp_2.accept(this, arg), r, arg); return r; } public R visit(MiniJS.Absyn.EDiv p, A arg) { R r = leaf(arg); r = combine(p.exp_1.accept(this, arg), r, arg); r = combine(p.exp_2.accept(this, arg), r, arg); return r; } public R visit(MiniJS.Absyn.EPlus p, A arg) { R r = leaf(arg); r = combine(p.exp_1.accept(this, arg), r, arg); r = combine(p.exp_2.accept(this, arg), r, arg); return r; } public R visit(MiniJS.Absyn.EMinus p, A arg) { R r = leaf(arg); r = combine(p.exp_1.accept(this, arg), r, arg); r = combine(p.exp_2.accept(this, arg), r, arg); return r; } }