00001 package edu.ksu.cis.bandera.jjjc.node;
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 import ca.mcgill.sable.util.*;
00037 import edu.ksu.cis.bandera.jjjc.analysis.*;
00038
00039 public final class AIfStmt extends PStmt
00040 {
00041 private TIf _if_;
00042 private TLPar _lPar_;
00043 private PExp _exp_;
00044 private TRPar _rPar_;
00045 private PBlock _thenPart_;
00046 private TElse _else_;
00047 private PBlock _block_;
00048
00049 public AIfStmt()
00050 {
00051 }
00052 public AIfStmt(
00053 TIf _if_,
00054 TLPar _lPar_,
00055 PExp _exp_,
00056 TRPar _rPar_,
00057 PBlock _thenPart_,
00058 TElse _else_,
00059 PBlock _block_)
00060 {
00061 setIf(_if_);
00062
00063 setLPar(_lPar_);
00064
00065 setExp(_exp_);
00066
00067 setRPar(_rPar_);
00068
00069 setThenPart(_thenPart_);
00070
00071 setElse(_else_);
00072
00073 setBlock(_block_);
00074
00075 }
00076 public void apply(Switch sw)
00077 {
00078 ((Analysis) sw).caseAIfStmt(this);
00079 }
00080 public Object clone()
00081 {
00082 return new AIfStmt(
00083 (TIf) cloneNode(_if_),
00084 (TLPar) cloneNode(_lPar_),
00085 (PExp) cloneNode(_exp_),
00086 (TRPar) cloneNode(_rPar_),
00087 (PBlock) cloneNode(_thenPart_),
00088 (TElse) cloneNode(_else_),
00089 (PBlock) cloneNode(_block_));
00090 }
00091 public PBlock getBlock()
00092 {
00093 return _block_;
00094 }
00095 public TElse getElse()
00096 {
00097 return _else_;
00098 }
00099 public PExp getExp()
00100 {
00101 return _exp_;
00102 }
00103 public TIf getIf()
00104 {
00105 return _if_;
00106 }
00107 public TLPar getLPar()
00108 {
00109 return _lPar_;
00110 }
00111 public TRPar getRPar()
00112 {
00113 return _rPar_;
00114 }
00115 public PBlock getThenPart()
00116 {
00117 return _thenPart_;
00118 }
00119 void removeChild(Node child)
00120 {
00121 if(_if_ == child)
00122 {
00123 _if_ = null;
00124 return;
00125 }
00126
00127 if(_lPar_ == child)
00128 {
00129 _lPar_ = null;
00130 return;
00131 }
00132
00133 if(_exp_ == child)
00134 {
00135 _exp_ = null;
00136 return;
00137 }
00138
00139 if(_rPar_ == child)
00140 {
00141 _rPar_ = null;
00142 return;
00143 }
00144
00145 if(_thenPart_ == child)
00146 {
00147 _thenPart_ = null;
00148 return;
00149 }
00150
00151 if(_else_ == child)
00152 {
00153 _else_ = null;
00154 return;
00155 }
00156
00157 if(_block_ == child)
00158 {
00159 _block_ = null;
00160 return;
00161 }
00162
00163 }
00164 void replaceChild(Node oldChild, Node newChild)
00165 {
00166 if(_if_ == oldChild)
00167 {
00168 setIf((TIf) newChild);
00169 return;
00170 }
00171
00172 if(_lPar_ == oldChild)
00173 {
00174 setLPar((TLPar) newChild);
00175 return;
00176 }
00177
00178 if(_exp_ == oldChild)
00179 {
00180 setExp((PExp) newChild);
00181 return;
00182 }
00183
00184 if(_rPar_ == oldChild)
00185 {
00186 setRPar((TRPar) newChild);
00187 return;
00188 }
00189
00190 if(_thenPart_ == oldChild)
00191 {
00192 setThenPart((PBlock) newChild);
00193 return;
00194 }
00195
00196 if(_else_ == oldChild)
00197 {
00198 setElse((TElse) newChild);
00199 return;
00200 }
00201
00202 if(_block_ == oldChild)
00203 {
00204 setBlock((PBlock) newChild);
00205 return;
00206 }
00207
00208 }
00209 public void setBlock(PBlock node)
00210 {
00211 if(_block_ != null)
00212 {
00213 _block_.parent(null);
00214 }
00215
00216 if(node != null)
00217 {
00218 if(node.parent() != null)
00219 {
00220 node.parent().removeChild(node);
00221 }
00222
00223 node.parent(this);
00224 }
00225
00226 _block_ = node;
00227 }
00228 public void setElse(TElse node)
00229 {
00230 if(_else_ != null)
00231 {
00232 _else_.parent(null);
00233 }
00234
00235 if(node != null)
00236 {
00237 if(node.parent() != null)
00238 {
00239 node.parent().removeChild(node);
00240 }
00241
00242 node.parent(this);
00243 }
00244
00245 _else_ = node;
00246 }
00247 public void setExp(PExp node)
00248 {
00249 if(_exp_ != null)
00250 {
00251 _exp_.parent(null);
00252 }
00253
00254 if(node != null)
00255 {
00256 if(node.parent() != null)
00257 {
00258 node.parent().removeChild(node);
00259 }
00260
00261 node.parent(this);
00262 }
00263
00264 _exp_ = node;
00265 }
00266 public void setIf(TIf node)
00267 {
00268 if(_if_ != null)
00269 {
00270 _if_.parent(null);
00271 }
00272
00273 if(node != null)
00274 {
00275 if(node.parent() != null)
00276 {
00277 node.parent().removeChild(node);
00278 }
00279
00280 node.parent(this);
00281 }
00282
00283 _if_ = node;
00284 }
00285 public void setLPar(TLPar node)
00286 {
00287 if(_lPar_ != null)
00288 {
00289 _lPar_.parent(null);
00290 }
00291
00292 if(node != null)
00293 {
00294 if(node.parent() != null)
00295 {
00296 node.parent().removeChild(node);
00297 }
00298
00299 node.parent(this);
00300 }
00301
00302 _lPar_ = node;
00303 }
00304 public void setRPar(TRPar node)
00305 {
00306 if(_rPar_ != null)
00307 {
00308 _rPar_.parent(null);
00309 }
00310
00311 if(node != null)
00312 {
00313 if(node.parent() != null)
00314 {
00315 node.parent().removeChild(node);
00316 }
00317
00318 node.parent(this);
00319 }
00320
00321 _rPar_ = node;
00322 }
00323 public void setThenPart(PBlock node)
00324 {
00325 if(_thenPart_ != null)
00326 {
00327 _thenPart_.parent(null);
00328 }
00329
00330 if(node != null)
00331 {
00332 if(node.parent() != null)
00333 {
00334 node.parent().removeChild(node);
00335 }
00336
00337 node.parent(this);
00338 }
00339
00340 _thenPart_ = node;
00341 }
00342 public String toString()
00343 {
00344 return ""
00345 + toString(_if_)
00346 + toString(_lPar_)
00347 + toString(_exp_)
00348 + toString(_rPar_)
00349 + toString(_thenPart_)
00350 + toString(_else_)
00351 + toString(_block_);
00352 }
00353 }