package yokohama.unit.translator;

import java.util.Collection;
import java.util.List;
import yokohama.unit.ast.QuotedExpr;
import yokohama.unit.ast_junit.CatchClause;
import yokohama.unit.ast_junit.ClassDecl;
import yokohama.unit.ast_junit.Statement;
import yokohama.unit.ast_junit.Var;
import yokohama.unit.util.ClassResolver;

public interface ExpressionStrategy {
    Collection<ClassDecl> auxClasses(ClassResolver classResolver);

    List<Statement> env( String varName, ClassResolver classResolver); // introduce new environment

    List<Statement> bind(String envVarName, String name, Var rhs); // make a binding in the environment

    CatchClause catchAndAssignCause(String causeVarName);

    List<Statement> eval(String varName, String envVarName, QuotedExpr quotedExpr);
}

@@ -381,72 +381,448 @@
     
-Collection%3CClassDecl%3E auxClasses(ClassResolver classResolver);%0D%0A
+/**%0D%0A     * Supplies auxiliary classes.%0D%0A     * %0D%0A     * @param classResolver%0D%0A     * @return a collection of auxiliary classes%0D%0A     */%0D%0A    Collection%3CClassDecl%3E auxClasses(ClassResolver classResolver);%0D%0A%0D%0A    /**%0D%0A     * Introduces a new environment.%0D%0A     * %0D%0A     * @param varName       a variable name to be bound to the new environment%0D%0A     * @param classResolver%0D%0A     * @return statements that introduce a new environment%0D%0A     */
 %0D%0A  
@@ -843,17 +843,16 @@
 nt%3E env(
- 
 String v
@@ -892,128 +892,830 @@
 er);
- // introduce new environment%0D%0A%0D%0A    List%3CStatement%3E bind(String envVarName, String name, Var rhs); // make a binding in
+%0D%0A%0D%0A    /**%0D%0A     * Bind a variable in the expression language to a value%0D%0A     * %0D%0A     * @param envVarName a variable name (in Java) bound to the environment%0D%0A     * @param name       a variable name in the expression language to be bound%0D%0A     *                    to rhs%0D%0A     * @param rhs        a variable (in Java) bound to the value to which the%0D%0A     *                    name is to be bound%0D%0A     * @return statements that bind name to rhs in the environment of the%0D%0A     *          expression language%0D%0A     */%0D%0A    List%3CStatement%3E bind(String envVarName, String name, Var rhs);%0D%0A%0D%0A    CatchClause catchAndAssignCause(String causeVarName);%0D%0A%0D%0A    /**%0D%0A     * Evaluates an expression.%0D%0A     * %0D%0A     * @param varName    a variable name to be bound to the result%0D%0A     * @param envVarName a variable name bound to
  the
@@ -1732,69 +1732,128 @@
 nt%0D%0A
-%0D%0A
     
-CatchClause catchAndAssignCause(String causeVarName);%0D%0A
+ * @param quotedExpr an expression to be evaluated%0D%0A     * @return statements that evaluates the expression%0D%0A     */
 %0D%0A  

Add javadoc