Version 3 (modified by 18 years ago) (diff) | ,
---|
- public class GnappoProduct {
- /**
- @param args
- @throws SchemeException
*/
- public static void main(String[] args) throws SchemeException {
// TODO Auto-generated method stub SchemeFactoryManager fm = SchemeFactoryManager.instance();
- fm.put("pow",
- new SchemeFactory() {
- public SchemeExpression create(Object... args) {
- return new SchemeExpressionPower((SchemeExpression) args[0],
- (SchemeExpression) args[1]);
}
});
- SchemeExpression power = fm.create("pow",
- fm.create("SchemeExpressionInt", 2), fm.create("SchemeExpressionInt", 4));
power.prettyPrint(System.out); System.out.println(); System.out.print(power.evaluate(null));
}
- private static class SchemeExpressionPower extends SchemeExpressionAbstract {
private SchemeExpression exp1; private SchemeExpression exp2;
- public SchemeExpressionPower(SchemeExpression expr1,
- SchemeExpression expr2) { exp1 = expr1; exp2 = expr2;
}
- public SchemeValue evaluate(SchemeEnvironment env)
throws SchemeException { return SchemeFactoryManager.instance()
.create("SchemeExpressionInt",
- ((int) (Math.pow(exp1.evaluate(env).asInt(),
- exp2.evaluate(env).asInt())))).evaluate(env);
}
- public void prettyPrint(PrintStream out) {
- out.print("(pow "); exp1.prettyPrint(out); out.print(" "); exp2.prettyPrint(out); out.print(")");
}
}
}