/* Generated By:JJTree: Do not edit this line. ASTAddExpress.java */

package org.eclipse.jst.jsp.core.internal.java.jspel;

public class ASTAddExpress extends SimpleNode {
  public ASTAddExpress(int id) {
    super(id);
  }

  public ASTAddExpress(JSPELParser p, int id) {
    super(p, id);
  }


  /** Accept the visitor. **/
  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
    return visitor.visit(this, data);
  }
}
