wiki:GnappoProduct

Version 3 (modified by gnappo, 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(")");
?

}

?

}

?

}