156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson/* This file was generated by SableCC (http://www.sablecc.org/). */ 256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonpackage com.google.clearsilver.jsilver.syntax.node; 456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonimport java.util.*; 656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonimport com.google.clearsilver.jsilver.syntax.analysis.*; 756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson@SuppressWarnings("nls") 956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonpublic final class ACallCommand extends PCommand 1056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson{ 1156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson private PPosition _position_; 1256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson private final LinkedList<TWord> _macro_ = new LinkedList<TWord>(); 1356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson private final LinkedList<PExpression> _arguments_ = new LinkedList<PExpression>(); 1456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 1556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson public ACallCommand() 1656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 1756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson // Constructor 1856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 1956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 2056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson public ACallCommand( 2156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson @SuppressWarnings("hiding") PPosition _position_, 2256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson @SuppressWarnings("hiding") List<TWord> _macro_, 2356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson @SuppressWarnings("hiding") List<PExpression> _arguments_) 2456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 2556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson // Constructor 2656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson setPosition(_position_); 2756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 2856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson setMacro(_macro_); 2956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 3056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson setArguments(_arguments_); 3156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 3256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 3356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 3456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson @Override 3556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson public Object clone() 3656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 3756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson return new ACallCommand( 3856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson cloneNode(this._position_), 3956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson cloneList(this._macro_), 4056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson cloneList(this._arguments_)); 4156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 4256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 4356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson public void apply(Switch sw) 4456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 4556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson ((Analysis) sw).caseACallCommand(this); 4656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 4756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 4856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson public PPosition getPosition() 4956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 5056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson return this._position_; 5156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 5256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 5356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson public void setPosition(PPosition node) 5456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 5556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson if(this._position_ != null) 5656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 5756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson this._position_.parent(null); 5856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 5956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 6056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson if(node != null) 6156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 6256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson if(node.parent() != null) 6356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 6456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson node.parent().removeChild(node); 6556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 6656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 6756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson node.parent(this); 6856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 6956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 7056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson this._position_ = node; 7156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 7256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 7356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson public LinkedList<TWord> getMacro() 7456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 7556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson return this._macro_; 7656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 7756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 7856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson public void setMacro(List<TWord> list) 7956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 8056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson this._macro_.clear(); 8156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson this._macro_.addAll(list); 8256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson for(TWord e : list) 8356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 8456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson if(e.parent() != null) 8556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 8656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson e.parent().removeChild(e); 8756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 8856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 8956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson e.parent(this); 9056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 9156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 9256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 9356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson public LinkedList<PExpression> getArguments() 9456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 9556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson return this._arguments_; 9656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 9756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 9856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson public void setArguments(List<PExpression> list) 9956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 10056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson this._arguments_.clear(); 10156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson this._arguments_.addAll(list); 10256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson for(PExpression e : list) 10356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 10456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson if(e.parent() != null) 10556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 10656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson e.parent().removeChild(e); 10756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 10856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 10956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson e.parent(this); 11056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 11156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 11256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 11356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson @Override 11456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson public String toString() 11556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 11656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson return "" 11756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson + toString(this._position_) 11856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson + toString(this._macro_) 11956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson + toString(this._arguments_); 12056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 12156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 12256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson @Override 12356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson void removeChild(@SuppressWarnings("unused") Node child) 12456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 12556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson // Remove child 12656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson if(this._position_ == child) 12756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 12856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson this._position_ = null; 12956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson return; 13056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 13156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 13256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson if(this._macro_.remove(child)) 13356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 13456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson return; 13556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 13656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 13756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson if(this._arguments_.remove(child)) 13856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 13956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson return; 14056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 14156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 14256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson throw new RuntimeException("Not a child."); 14356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 14456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 14556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson @Override 14656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild) 14756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 14856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson // Replace child 14956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson if(this._position_ == oldChild) 15056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 15156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson setPosition((PPosition) newChild); 15256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson return; 15356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 15456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 15556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson for(ListIterator<TWord> i = this._macro_.listIterator(); i.hasNext();) 15656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 15756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson if(i.next() == oldChild) 15856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 15956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson if(newChild != null) 16056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 16156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson i.set((TWord) newChild); 16256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson newChild.parent(this); 16356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson oldChild.parent(null); 16456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson return; 16556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 16656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 16756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson i.remove(); 16856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson oldChild.parent(null); 16956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson return; 17056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 17156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 17256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 17356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson for(ListIterator<PExpression> i = this._arguments_.listIterator(); i.hasNext();) 17456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 17556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson if(i.next() == oldChild) 17656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 17756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson if(newChild != null) 17856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson { 17956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson i.set((PExpression) newChild); 18056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson newChild.parent(this); 18156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson oldChild.parent(null); 18256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson return; 18356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 18456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 18556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson i.remove(); 18656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson oldChild.parent(null); 18756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson return; 18856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 18956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 19056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 19156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson throw new RuntimeException("Not a child."); 19256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson } 19356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson} 194