1 29 30 package com.caucho.quercus.expr; 31 32 import com.caucho.quercus.env.Env; 33 import com.caucho.quercus.env.StringValue; 34 import com.caucho.quercus.env.Value; 35 36 39 public class AppendExpr extends Expr 40 { 41 private final Expr _value; 42 private AppendExpr _next; 43 44 protected AppendExpr(Expr value, AppendExpr next) 45 { 46 _value = value; 47 _next = next; 48 } 49 50 53 public Expr getValue() 54 { 55 return _value; 56 } 57 58 61 public AppendExpr getNext() 62 { 63 return _next; 64 } 65 66 69 void setNext(AppendExpr next) 70 { 71 _next = next; 72 } 73 74 77 public boolean isString() 78 { 79 return true; 80 } 81 82 @Override 83 public Value eval(Env env) 84 { 85 StringValue sb = _value.eval(env).toStringBuilder(); 86 87 for (AppendExpr ptr = _next; ptr != null; ptr = ptr._next) { 88 sb = sb.append(ptr._value.eval(env)); 89 } 90 91 return sb; 92 } 93 94 @Override 95 public String evalString(Env env) 96 { 97 StringValue sb = _value.eval(env).toStringBuilder(); 98 99 for (AppendExpr ptr = _next; ptr != null; ptr = ptr._next) { 100 sb = sb.append(ptr._value.eval(env)); 101 } 102 103 return sb.toString(); 104 } 105 106 public String toString() 107 { 108 if (_next != null) 109 return "(" + _value + " . " + _next + ")"; 110 else 111 return String.valueOf(_value); 112 } 113 } 114 115 | Popular Tags |