* @´´½¨Ê±¼ä£º2012-7-3 ÏÂÎç03:11:20
*
* @Àà˵Ã÷ £º´ú±íÂß¼¡°»ò¡±²Ù×÷µÄOrÀ࣬´ú±íÓÉÁ½¸ö²¼¶û±í´ïʽͨ¹ýÂß¼¡°»ò¡±²Ù×÷¸ø³öÒ»¸öеIJ¼¶û±í´ïʽµÄ²Ù×÷
*/
public class Or extends Expression {
private Expression left, right;
public Or(Expression left, Expression right) {
this.left = left;
this.right = right;
}
@Override
public boolean equals(Object obj) {
if (obj != null && obj instanceof Or) {
return this.left.equals(((Or) obj).left) && this.right.equals(((Or) obj).right);
}
return false;
}
@Override
public int hashCode() {
return this.toString().hashCode();
}
@Override
public boolean interpret(Context ctx) {
return left.interpret(ctx) || right.interpret(ctx);
}
@Override
public String toString() {
return "(" + left.toString() + " OR " + right.toString() + ")";
}
}
package com.bankht.Interpreter;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÏÂÎç03:11:20
*
* @Àà˵Ã÷ £º´ú±íÂß¼¡°»ò¡±²Ù×÷µÄOrÀ࣬´ú±íÓÉÁ½¸ö²¼¶û±í´ïʽͨ¹ýÂß¼¡°»ò¡±²Ù×÷¸ø³öÒ»¸öеIJ¼¶û±í´ïʽµÄ²Ù×÷
*/
public class Or extends Expression {
private Expression left, right;
public Or(Expression left, Expression right) {
this.left = left;
this.right = right;
}
@Override
public boolean equals(Object obj) {
if (obj != null && obj instanceof Or) {
return this.left.equals(((Or) obj).left) && this.right.equals(((Or) obj).right);
}
return false;
}
@Override
public int hashCode() {
return this.toString().hashCode();
}
@Override
public boolean interpret(Context ctx) {
return left.interpret(ctx) || right.interpret(ctx);
}
@Override
public String toString() {
return "(" + left.toString() + " OR " + right.toString() + ")";
}
}
¡¡¡¡´ú±íÂß¼¡°·Ç¡±²Ù×÷µÄNotÀ࣬´ú±íÓÉÒ»¸ö²¼¶û±í´ïʽͨ¹ýÂß¼¡°·Ç¡±²Ù×÷¸ø³öÒ»¸öеIJ¼¶û±í´ïʽµÄ²Ù×÷
[java]
package com.bankht.Interpreter;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÏÂÎç03:11:36
*
* @Àà˵Ã÷ £º´ú±íÂß¼¡°·Ç¡±²Ù×÷µÄNotÀ࣬´ú±íÓÉÒ»¸ö²¼¶û±í´ïʽͨ¹ýÂß¼¡°·Ç¡±²Ù×÷¸ø³öÒ»¸öеIJ¼¶û±í´ïʽµÄ²Ù×÷
*/
public class Not extends Expression {
private Expression exp;
public Not(Expression exp) {
this.exp = exp;
}
@Override
public boolean equals(Object obj) {
if (obj != null && obj instanceof Not) {
return exp.equals(((Not) obj).exp);
}
return false;
}
@Override
public int hashCode() {
return this.toString().hashCode();
}
@Override
public boolean interpret(Context ctx) {
return !exp.interpret(ctx);
}
@Override
public String toString() {
return "(Not " + exp.toString() + ")";
}
}
package com.bankht.Interpreter;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÏÂÎç03:11:36
*
* @Àà˵Ã÷ £º´ú±íÂß¼¡°·Ç¡±²Ù×÷µÄNotÀ࣬´ú±íÓÉÒ»¸ö²¼¶û±í´ïʽͨ¹ýÂß¼¡°·Ç¡±²Ù×÷¸ø³öÒ»¸öеIJ¼¶û±í´ïʽµÄ²Ù×÷
*/
public class Not extends Expression {
private Expression exp;
public Not(Expression exp) {
this.exp = exp;
}
@Override
public boolean equals(Object obj) {
if (obj != null && obj instanceof Not) {
return exp.equals(((Not) obj).exp);
}
return false;
}
@Override
public int hashCode() {
return this.toString().hashCode();
}
@Override
public boolean interpret(Context ctx) {
return !exp.interpret(ctx);
}
@Override
public String toString() {
return "(Not " + exp.toString() + ")";
}
}
¡¡¡¡»·¾³(Context)ÀඨÒå³ö´Ó±äÁ¿µ½²¼¶ûÖµµÄÒ»¸öÓ³Éä
[java]
package com.bankht.Interpreter;
import java.util.HashMap;
import java.util.Map;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÏÂÎç03:11:54
*
* @Àà˵Ã÷ £º»·¾³(Context