| /* This file was generated by SableCC (http://www.sablecc.org/). */ |
| |
| package com.google.clearsilver.jsilver.syntax.node; |
| |
| import java.util.*; |
| import com.google.clearsilver.jsilver.syntax.analysis.*; |
| |
| @SuppressWarnings("nls") |
| public final class AFunctionExpression extends PExpression |
| { |
| private PVariable _name_; |
| private final LinkedList<PExpression> _args_ = new LinkedList<PExpression>(); |
| |
| public AFunctionExpression() |
| { |
| // Constructor |
| } |
| |
| public AFunctionExpression( |
| @SuppressWarnings("hiding") PVariable _name_, |
| @SuppressWarnings("hiding") List<PExpression> _args_) |
| { |
| // Constructor |
| setName(_name_); |
| |
| setArgs(_args_); |
| |
| } |
| |
| @Override |
| public Object clone() |
| { |
| return new AFunctionExpression( |
| cloneNode(this._name_), |
| cloneList(this._args_)); |
| } |
| |
| public void apply(Switch sw) |
| { |
| ((Analysis) sw).caseAFunctionExpression(this); |
| } |
| |
| public PVariable getName() |
| { |
| return this._name_; |
| } |
| |
| public void setName(PVariable node) |
| { |
| if(this._name_ != null) |
| { |
| this._name_.parent(null); |
| } |
| |
| if(node != null) |
| { |
| if(node.parent() != null) |
| { |
| node.parent().removeChild(node); |
| } |
| |
| node.parent(this); |
| } |
| |
| this._name_ = node; |
| } |
| |
| public LinkedList<PExpression> getArgs() |
| { |
| return this._args_; |
| } |
| |
| public void setArgs(List<PExpression> list) |
| { |
| this._args_.clear(); |
| this._args_.addAll(list); |
| for(PExpression e : list) |
| { |
| if(e.parent() != null) |
| { |
| e.parent().removeChild(e); |
| } |
| |
| e.parent(this); |
| } |
| } |
| |
| @Override |
| public String toString() |
| { |
| return "" |
| + toString(this._name_) |
| + toString(this._args_); |
| } |
| |
| @Override |
| void removeChild(@SuppressWarnings("unused") Node child) |
| { |
| // Remove child |
| if(this._name_ == child) |
| { |
| this._name_ = null; |
| return; |
| } |
| |
| if(this._args_.remove(child)) |
| { |
| return; |
| } |
| |
| throw new RuntimeException("Not a child."); |
| } |
| |
| @Override |
| void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild) |
| { |
| // Replace child |
| if(this._name_ == oldChild) |
| { |
| setName((PVariable) newChild); |
| return; |
| } |
| |
| for(ListIterator<PExpression> i = this._args_.listIterator(); i.hasNext();) |
| { |
| if(i.next() == oldChild) |
| { |
| if(newChild != null) |
| { |
| i.set((PExpression) newChild); |
| newChild.parent(this); |
| oldChild.parent(null); |
| return; |
| } |
| |
| i.remove(); |
| oldChild.parent(null); |
| return; |
| } |
| } |
| |
| throw new RuntimeException("Not a child."); |
| } |
| } |