485
486 int precedence() {
487 return PREC_ADD;
488 }
489
490 @Override
491 public String toString() {
492 return "`" + left + "+" + right + "'";
493 }
494 }
495
496 //--------------------------------------------------------------------------
497
498 static class AndExpr extends BinaryExpr {
499
500 AndExpr(Expr left, Expr right) {
501 super(left, right);
502 }
503
504 public String eval(Context c) throws Fault {
505 return String.valueOf(left.evalBoolean(c) & right.evalBoolean(c));
506 }
507
508 int precedence() {
509 return PREC_AND;
510 }
511
512 @Override
513 public String toString() {
514 return "`" + left + "&" + right + "'";
515 }
516 }
517
518 //--------------------------------------------------------------------------
519
520 static class DivideExpr extends BinaryExpr {
521
522 DivideExpr(Expr left, Expr right) {
523 super(left, right);
524 }
525
794 return PREC_NUM;
795 }
796
797 @Override
798 public String toString() {
799 return value;
800 }
801
802 private final String value;
803 }
804
805 //--------------------------------------------------------------------------
806
807 static class OrExpr extends BinaryExpr {
808
809 OrExpr(Expr left, Expr right) {
810 super(left, right);
811 }
812
813 public String eval(Context c) throws Fault {
814 return String.valueOf(left.evalBoolean(c) | right.evalBoolean(c));
815 }
816
817 int precedence() {
818 return PREC_OR;
819 }
820
821 @Override
822 public String toString() {
823 return "`" + left + "|" + right + "'";
824 }
825 }
826
827 //--------------------------------------------------------------------------
828
829 static class ParenExpr extends Expr {
830
831 ParenExpr(Expr expr) {
832 this.expr = expr;
833 }
834
|
485
486 int precedence() {
487 return PREC_ADD;
488 }
489
490 @Override
491 public String toString() {
492 return "`" + left + "+" + right + "'";
493 }
494 }
495
496 //--------------------------------------------------------------------------
497
498 static class AndExpr extends BinaryExpr {
499
500 AndExpr(Expr left, Expr right) {
501 super(left, right);
502 }
503
504 public String eval(Context c) throws Fault {
505 return left.evalBoolean(c) ? String.valueOf(right.evalBoolean(c)) : "false";
506 }
507
508 int precedence() {
509 return PREC_AND;
510 }
511
512 @Override
513 public String toString() {
514 return "`" + left + "&" + right + "'";
515 }
516 }
517
518 //--------------------------------------------------------------------------
519
520 static class DivideExpr extends BinaryExpr {
521
522 DivideExpr(Expr left, Expr right) {
523 super(left, right);
524 }
525
794 return PREC_NUM;
795 }
796
797 @Override
798 public String toString() {
799 return value;
800 }
801
802 private final String value;
803 }
804
805 //--------------------------------------------------------------------------
806
807 static class OrExpr extends BinaryExpr {
808
809 OrExpr(Expr left, Expr right) {
810 super(left, right);
811 }
812
813 public String eval(Context c) throws Fault {
814 return left.evalBoolean(c) ? "true" : String.valueOf(right.evalBoolean(c));
815 }
816
817 int precedence() {
818 return PREC_OR;
819 }
820
821 @Override
822 public String toString() {
823 return "`" + left + "|" + right + "'";
824 }
825 }
826
827 //--------------------------------------------------------------------------
828
829 static class ParenExpr extends Expr {
830
831 ParenExpr(Expr expr) {
832 this.expr = expr;
833 }
834
|