Skip to content

Instantly share code, notes, and snippets.

@secondsun
Created May 14, 2014 15:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save secondsun/01e85c60489f5afa3210 to your computer and use it in GitHub Desktop.
Save secondsun/01e85c60489f5afa3210 to your computer and use it in GitHub Desktop.
Lambda's you so crazy
@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