Created
May 14, 2014 15:00
-
-
Save secondsun/01e85c60489f5afa3210 to your computer and use it in GitHub Desktop.
Lambda's you so crazy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Override | |
public Operation operate(final Object token, Environment env) { | |
final int value = verifyAndEvaluate(token, env); | |
switch (op) { | |
case ADD: | |
return ((nextToken, env2) -> (value + verifyAndEvaluate(nextToken, env2))); | |
case SUB: | |
return ((nextToken, env2) -> { | |
return value - verifyAndEvaluate(nextToken, env2); | |
}); | |
case DIV: | |
return ((nextToken, env2) -> { | |
return value / verifyAndEvaluate(nextToken, env2); | |
}); | |
case MOD: | |
return ((nextToken, env2) -> { | |
return value % verifyAndEvaluate(nextToken, env2); | |
}); | |
case GT: | |
return ((nextToken, env2) -> { | |
return value > verifyAndEvaluate(nextToken, env2); | |
}); | |
case LT: | |
return ((nextToken, env2) -> { | |
return value < verifyAndEvaluate(nextToken, env2); | |
}); | |
case MULT: | |
return ((nextToken, env2) -> { | |
return value * verifyAndEvaluate(nextToken, env2); | |
}); | |
default: | |
throw new AssertionError(op.name()); | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment