/* 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 RegularExprProduction:<br>
 * Corresponding grammar:<br>
 * f0 -> [ %0 #0 "<" #1 "*" #2 ">"<br>
 * .. .. | %1 #0 "<" #1 < IDENTIFIER ><br>
 * .. .. . .. #2 ( $0 "," $1 < IDENTIFIER > )*<br>
 * .. .. . .. #3 ">" ]<br>
 * f1 -> RegExprKind()<br>
 * f2 -> [ #0 "[" #1 "IGNORE_CASE" #2 "]" ]<br>
 * f3 -> ":"<br>
 * f4 -> "{"<br>
 * f5 -> RegExprSpec()<br>
 * f6 -> ( #0 "|" #1 RegExprSpec() )*<br>
 * f7 -> "}"<br>
 * s: 484788342<br>
 */
public class RegularExprProduction implements INode {

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

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

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

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

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

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

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

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

  /** 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
   */
  public RegularExprProduction(final NodeOptional n0, final RegExprKind n1, final NodeOptional n2, final Token n3, final Token n4, final RegExprSpec n5, final NodeListOptional n6, final Token n7) {
    f0 = n0;
    f1 = n1;
    f2 = n2;
    f3 = n3;
    f4 = n4;
    f5 = n5;
    f6 = n6;
    f7 = n7;
  }
  /*
   * 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);
  }


}
