/* Generated by JTB 1.5.1 */
package EDU.purdue.jtb.parser.syntaxtree;

import EDU.purdue.jtb.parser.Token;
import EDU.purdue.jtb.parser.visitor.IIntVisitor;
import EDU.purdue.jtb.parser.visitor.IVoidVisitor;


/**
 * JTB node class for the production JavaCCInput:<br>
 * Corresponding grammar:<br>
 * f0 -> JavaCCOptions()<br>
 * f1 -> "PARSER_BEGIN"<br>
 * f2 -> "("<br>
 * f3 -> IdentifierAsString()<br>
 * f4 -> ")"<br>
 * f5 -> CompilationUnit()<br>
 * f6 -> "PARSER_END"<br>
 * f7 -> "("<br>
 * f8 -> IdentifierAsString()<br>
 * f9 -> ")"<br>
 * f10 -> ( Production() )+<br>
 * f11 -> < EOF ><br>
 * s: 1465207473<br>
 */
public class JavaCCInput implements INode {

  /** Child node 0 */
  public JavaCCOptions f0;

  /** Child node 1 */
  public Token f1;

  /** Child node 2 */
  public Token f2;

  /** Child node 3 */
  public IdentifierAsString f3;

  /** Child node 4 */
  public Token f4;

  /** Child node 5 */
  public CompilationUnit f5;

  /** Child node 6 */
  public Token f6;

  /** Child node 7 */
  public Token f7;

  /** Child node 8 */
  public IdentifierAsString f8;

  /** Child node 9 */
  public Token f9;

  /** Child node 10 */
  public NodeList f10;

  /** Child node 11 */
  public Token f11;

  /** The serial version UID */
  private static final long serialVersionUID = 151L;

  /**
   * Constructs the node with all its children nodes.
   *
   * @param n0 - first child node
   * @param n1 - next child node
   * @param n2 - next child node
   * @param n3 - next child node
   * @param n4 - next child node
   * @param n5 - next child node
   * @param n6 - next child node
   * @param n7 - next child node
   * @param n8 - next child node
   * @param n9 - next child node
   * @param n10 - next child node
   * @param n11 - next child node
   */
  public JavaCCInput(final JavaCCOptions n0, final Token n1, final Token n2, final IdentifierAsString n3, final Token n4, final CompilationUnit n5, final Token n6, final Token n7, final IdentifierAsString n8, final Token n9, final NodeList n10, final Token n11) {
    f0 = n0;
    f1 = n1;
    f2 = n2;
    f3 = n3;
    f4 = n4;
    f5 = n5;
    f6 = n6;
    f7 = n7;
    f8 = n8;
    f9 = n9;
    f10 = n10;
    f11 = n11;
  }
  /*
   * Visitors accept methods (no -novis option, visitors specification : Void,void,None;Int,int,None)
   */

  /**
   * Accepts a {@link IIntVisitor} visitor with user return data.
   *
   * @param vis - the visitor
   * @return the user Return data
   */
  @Override
  public int accept(final IIntVisitor vis) {
    return vis.visit(this);
  }

  /**
   * Accepts a {@link IVoidVisitor} visitor} visitor with user return data.
   *
   * @param vis - the visitor
   */
  @Override
  public void accept(final IVoidVisitor vis) {
    vis.visit(this);
  }


}
