001//
002// Generated by JTB 1.3.2
003//
004
005package com.randomnoun.common.jexl.ast;
006
007/**
008 * Represents an grammar optional node, e.g. ( A )? or [ A ]
009 */
010public class NodeOptional implements Node {
011   public NodeOptional() {
012      node = null;
013   }
014
015   public NodeOptional(Node n) {
016      addNode(n);
017   }
018
019   public void addNode(Node n)  {
020      if ( node != null)                // Oh oh!
021         throw new Error("Attempt to set optional node twice");
022
023      node = n;
024   }
025   public void accept(com.randomnoun.common.jexl.visitor.Visitor v) {
026      v.visit(this);
027   }
028   public <R,A> R accept(com.randomnoun.common.jexl.visitor.GJVisitor<R,A> v, A argu) {
029      return v.visit(this,argu);
030   }
031   public <R> R accept(com.randomnoun.common.jexl.visitor.GJNoArguVisitor<R> v) {
032      return v.visit(this);
033   }
034   public <A> void accept(com.randomnoun.common.jexl.visitor.GJVoidVisitor<A> v, A argu) {
035      v.visit(this,argu);
036   }
037   public boolean present()   { return node != null; }
038
039   public Node node;
040}
041