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);
    }
}