1 6 package tests.jfun.parsec.mssql; 7 8 13 public class ExpressionCase implements Expression { 14 15 18 public int getPrecedence() { 19 return Precedences.case_stmt(); 20 } 21 22 25 public void acceptVisitor(ExpressionVisitor v) { 26 v.visitCase(e, cases, def); 27 } 28 private final Expression e; 29 private final WhenThen[] cases; 30 private final Expression def; 31 public boolean hasDefault(){ 32 return def != null; 33 } 34 39 ExpressionCase(final Expression e, final WhenThen[] cases, 40 final Expression def) { 41 this.e = e; 42 this.cases = cases; 43 this.def = def; 44 } 45 static Expression nodef(final Expression e, final WhenThen[] cases){ 46 return new ExpressionCase(e, cases, null); 47 } 48 static Expression def(final Expression e, final WhenThen[] cases, final Expression def){ 49 return new ExpressionCase(e, cases, def); 50 } 51 public String toString(){ 52 final StringBuffer buf = new StringBuffer ("case "); 53 buf.append(e); 54 for(int i=0; i<cases.length; i++){ 55 final WhenThen wt = cases[i]; 56 buf.append(" when ").append(wt.getWhen()).append(" then ").append(wt.getThen()); 57 } 58 if(def != null) 59 buf.append(" else ").append(def); 60 buf.append(" end"); 61 return buf.toString(); 62 } 63 } 64 | Popular Tags |