001//
002// Generated by JTB 1.3.2
003//
004
005package com.randomnoun.common.jexl.visitor;
006import com.randomnoun.common.jexl.ast.*;
007import java.util.*;
008
009/**
010 * Provides default methods which visit each node in the tree in depth-first
011 * order.  Your visitors may extend this class.
012 */
013public class DepthFirstVisitor implements Visitor {
014   //
015   // Auto class visitors--probably don't need to be overridden.
016   //
017   public void visit(NodeList n) {
018      for ( Enumeration<Node> e = n.elements(); e.hasMoreElements(); )
019         e.nextElement().accept(this);
020   }
021
022   public void visit(NodeListOptional n) {
023      if ( n.present() )
024         for ( Enumeration<Node> e = n.elements(); e.hasMoreElements(); )
025            e.nextElement().accept(this);
026   }
027
028   public void visit(NodeOptional n) {
029      if ( n.present() )
030         n.node.accept(this);
031   }
032
033   public void visit(NodeSequence n) {
034      for ( Enumeration<Node> e = n.elements(); e.hasMoreElements(); )
035         e.nextElement().accept(this);
036   }
037
038   public void visit(NodeToken n) { }
039
040   //
041   // User-generated visitor methods below
042   //
043
044   /**
045    * <PRE>
046    * expression -> Expression()
047    * nodeToken -> &lt;EOF&gt;
048    * </PRE>
049    */
050   public void visit(TopLevelExpression n) {
051      n.expression.accept(this);
052      n.nodeToken.accept(this);
053   }
054
055   /**
056    * <PRE>
057    * conditionalAndExpression -> ConditionalAndExpression()
058    * nodeListOptional -> ( "||" ConditionalAndExpression() )*
059    * </PRE>
060    */
061   public void visit(Expression n) {
062      n.conditionalAndExpression.accept(this);
063      n.nodeListOptional.accept(this);
064   }
065
066   /**
067    * <PRE>
068    * equalityExpression -> EqualityExpression()
069    * nodeListOptional -> ( "&&" EqualityExpression() )*
070    * </PRE>
071    */
072   public void visit(ConditionalAndExpression n) {
073      n.equalityExpression.accept(this);
074      n.nodeListOptional.accept(this);
075   }
076
077   /**
078    * <PRE>
079    * relationalExpression -> RelationalExpression()
080    * nodeListOptional -> ( ( "==" | "!=" ) RelationalExpression() )*
081    * </PRE>
082    */
083   public void visit(EqualityExpression n) {
084      n.relationalExpression.accept(this);
085      n.nodeListOptional.accept(this);
086   }
087
088   /**
089    * <PRE>
090    * additiveExpression -> AdditiveExpression()
091    * nodeListOptional -> ( ( "&lt;" | "&gt;" | "&lt;=" | "&gt;=" ) AdditiveExpression() )*
092    * </PRE>
093    */
094   public void visit(RelationalExpression n) {
095      n.additiveExpression.accept(this);
096      n.nodeListOptional.accept(this);
097   }
098
099   /**
100    * <PRE>
101    * multiplicativeExpression -> MultiplicativeExpression()
102    * nodeListOptional -> ( ( "+" | "-" ) MultiplicativeExpression() )*
103    * </PRE>
104    */
105   public void visit(AdditiveExpression n) {
106      n.multiplicativeExpression.accept(this);
107      n.nodeListOptional.accept(this);
108   }
109
110   /**
111    * <PRE>
112    * unaryExpression -> UnaryExpression()
113    * nodeListOptional -> ( ( "*" | "/" | "%" ) UnaryExpression() )*
114    * </PRE>
115    */
116   public void visit(MultiplicativeExpression n) {
117      n.unaryExpression.accept(this);
118      n.nodeListOptional.accept(this);
119   }
120
121   /**
122    * <PRE>
123    * nodeChoice -> ( "~" | "!" | "-" ) UnaryExpression()
124    *       | PrimaryExpression()
125    * </PRE>
126    */
127   public void visit(UnaryExpression n) {
128      n.nodeChoice.accept(this);
129   }
130
131   /**
132    * <PRE>
133    * nodeChoice -> FunctionCall()
134    *       | Name()
135    *       | Literal()
136    *       | "(" Expression() ")"
137    * </PRE>
138    */
139   public void visit(PrimaryExpression n) {
140      n.nodeChoice.accept(this);
141   }
142
143   /**
144    * <PRE>
145    * nodeToken -> &lt;IDENTIFIER&gt;
146    * nodeListOptional -> ( "." &lt;IDENTIFIER&gt; )*
147    * </PRE>
148    */
149   public void visit(Name n) {
150      n.nodeToken.accept(this);
151      n.nodeListOptional.accept(this);
152   }
153
154   /**
155    * <PRE>
156    * nodeToken -> &lt;IDENTIFIER&gt;
157    * arguments -> Arguments()
158    * </PRE>
159    */
160   public void visit(FunctionCall n) {
161      n.nodeToken.accept(this);
162      n.arguments.accept(this);
163   }
164
165   /**
166    * <PRE>
167    * nodeToken -> "("
168    * nodeOptional -> [ ArgumentList() ]
169    * nodeToken1 -> ")"
170    * </PRE>
171    */
172   public void visit(Arguments n) {
173      n.nodeToken.accept(this);
174      n.nodeOptional.accept(this);
175      n.nodeToken1.accept(this);
176   }
177
178   /**
179    * <PRE>
180    * expression -> Expression()
181    * nodeListOptional -> ( "," Expression() )*
182    * </PRE>
183    */
184   public void visit(ArgumentList n) {
185      n.expression.accept(this);
186      n.nodeListOptional.accept(this);
187   }
188
189   /**
190    * <PRE>
191    * nodeChoice -> &lt;INTEGER_LITERAL&gt;
192    *       | &lt;FLOATING_POINT_LITERAL&gt;
193    *       | &lt;CHARACTER_LITERAL&gt;
194    *       | &lt;STRING_LITERAL&gt;
195    *       | BooleanLiteral()
196    *       | NullLiteral()
197    * </PRE>
198    */
199   public void visit(Literal n) {
200      n.nodeChoice.accept(this);
201   }
202
203   /**
204    * <PRE>
205    * nodeChoice -> "true"
206    *       | "false"
207    * </PRE>
208    */
209   public void visit(BooleanLiteral n) {
210      n.nodeChoice.accept(this);
211   }
212
213   /**
214    * <PRE>
215    * nodeToken -> "null"
216    * </PRE>
217    */
218   public void visit(NullLiteral n) {
219      n.nodeToken.accept(this);
220   }
221
222}