TEL0 example#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | interface Tel0Revisitor<ExpT, IntLitT extends ExpT, SumT extends ExpT> { IntLitT intLit(final IntLit it); SumT sum(final Sum it); default ExpT $(final Exp it) { if (it.getClass() == IntLitImpl.class) return intLit((IntLit) it); if (it.getClass() == SumImpl.class) return sum((Sum) it); return null; } default IntLitT $(final IntLit it) { return intLit(it); } default SumT $(final Sum it) { return sum(it); } } |