00001 package edu.ksu.cis.bandera.birp.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.birp.analysis.*;
00038
00039 public final class Start extends Node
00040 {
00041 private PProgram _pProgram_;
00042 private EOF _eof_;
00043
00044 public Start()
00045 {
00046 }
00047 public Start(
00048 PProgram _pProgram_,
00049 EOF _eof_)
00050 {
00051 setPProgram(_pProgram_);
00052 setEOF(_eof_);
00053 }
00054 public void apply(Switch sw)
00055 {
00056 ((Analysis) sw).caseStart(this);
00057 }
00058 public Object clone()
00059 {
00060 return new Start(
00061 (PProgram) cloneNode(_pProgram_),
00062 (EOF) cloneNode(_eof_));
00063 }
00064 public EOF getEOF()
00065 {
00066 return _eof_;
00067 }
00068 public PProgram getPProgram()
00069 {
00070 return _pProgram_;
00071 }
00072 void removeChild(Node child)
00073 {
00074 if(_pProgram_ == child)
00075 {
00076 _pProgram_ = null;
00077 return;
00078 }
00079
00080 if(_eof_ == child)
00081 {
00082 _eof_ = null;
00083 return;
00084 }
00085 }
00086 void replaceChild(Node oldChild, Node newChild)
00087 {
00088 if(_pProgram_ == oldChild)
00089 {
00090 setPProgram((PProgram) newChild);
00091 return;
00092 }
00093
00094 if(_eof_ == oldChild)
00095 {
00096 setEOF((EOF) newChild);
00097 return;
00098 }
00099 }
00100 public void setEOF(EOF node)
00101 {
00102 if(_eof_ != null)
00103 {
00104 _eof_.parent(null);
00105 }
00106
00107 if(node != null)
00108 {
00109 if(node.parent() != null)
00110 {
00111 node.parent().removeChild(node);
00112 }
00113
00114 node.parent(this);
00115 }
00116
00117 _eof_ = node;
00118 }
00119 public void setPProgram(PProgram node)
00120 {
00121 if(_pProgram_ != null)
00122 {
00123 _pProgram_.parent(null);
00124 }
00125
00126 if(node != null)
00127 {
00128 if(node.parent() != null)
00129 {
00130 node.parent().removeChild(node);
00131 }
00132
00133 node.parent(this);
00134 }
00135
00136 _pProgram_ = node;
00137 }
00138 public String toString()
00139 {
00140 return "" +
00141 toString(_pProgram_) +
00142 toString(_eof_);
00143 }
00144 }