@Override public String visitExpr(@NotNull DiceGameParser.ExprContext ctx) { if (ctx.OP != null) { return ctx.A.accept(this) + ctx.OP.getText() + ctx.B.accept(this); } if (ctx.INTEGER != null) { return ctx.INTEGER.getText(); } if (ctx.VAR != null) { return ctx.VAR.accept(this); } if (ctx.E != null) { return '(' + ctx.E.accept(this) + ')'; } if (ctx.SUM != null) { return "sum([dice.value for dice in " + ctx.DOs.accept(this) + "])"; } if (ctx.COUNT != null) { if (ctx.DOs != null) { return "len(" + ctx.DOs.accept(this) + ")"; } if (ctx.POs != null) { return "len(" + ctx.POs.accept(this) + ")"; } } return "visitExpr"; }
@Override public String visitCondition(@NotNull DiceGameParser.ConditionContext ctx) { if (ctx.EQ != null) { return (ctx.A.accept(this) + " == " + ctx.B.accept(this)); } if (ctx.LT != null) { return (ctx.A.accept(this) + " < " + ctx.B.accept(this)); } if (ctx.GT != null) { return (ctx.A.accept(this) + " > " + ctx.B.accept(this)); } if (ctx.LE != null) { return (ctx.A.accept(this) + " <= " + ctx.B.accept(this)); } if (ctx.GE != null) { return (ctx.A.accept(this) + " >= " + ctx.B.accept(this)); } if (ctx.AND != null) { return (ctx.C.accept(this) + " and " + ctx.D.accept(this)); } if (ctx.OR != null) { return (ctx.C.accept(this) + " or " + ctx.D.accept(this)); } if (ctx.NOT != null) { return "not " + ctx.C.accept(this); } if (ctx.TRUE != null) { return "true"; } if (ctx.FALSE != null) { return "false"; } // if (ctx.PLAYER != null) { // return ctx.PLAYER.accept(this) + ".isActive()"; // } return "visitCondition"; }