35 lines
684 B
Java
35 lines
684 B
Java
//
|
|
// Continue at Section 7.2.3
|
|
// Page 100
|
|
//
|
|
|
|
package cobalt.lang;
|
|
|
|
class Interpreter implements Expr.Visitor<Object> {
|
|
@Override
|
|
public Object visitLiteralExpr(Expr.Literal expr) {
|
|
return expr.value;
|
|
}
|
|
|
|
@Override
|
|
public Object visitUnaryExpr(Expr.Unary expr) {
|
|
Object right = evaluate(expr.right);
|
|
|
|
switch (expr.operator.type) {
|
|
case MINUS:
|
|
return -(double)right;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Object visitGroupingExpr(Expr.Grouping expr) {
|
|
return evaluate(expr.expression);
|
|
}
|
|
|
|
private Object evaluate(Expr expr) {
|
|
return expr.accept(this);
|
|
}
|
|
}
|