001    // $Id: DefaultVisitor.java,v 1.3 2006/09/25 15:48:32 chalin Exp $
002    /* Copyright 2000, 2001, Compaq Computer Corporation */
003    
004    package javafe.ast;
005    
006    import javafe.util.Assert;
007    import javafe.util.Location;
008    
009    
010    public class DefaultVisitor extends Visitor {
011    
012      public void visitASTNode(/*@non_null*/ ASTNode x) {
013        // Assert.fail("DefaultVisitor.visitASTNode"+x);
014      }
015    
016      public void visitModifierPragma(/*@non_null*/ ModifierPragma x) {
017      }
018    
019      public void visitTypeDeclElemPragma(/*@non_null*/ TypeDeclElemPragma x) {
020      }
021    
022      public void visitStmtPragma(/*@non_null*/ StmtPragma x) {
023      }
024    
025      public void visitTypeModifierPragma(/*@non_null*/ TypeModifierPragma x) {
026      }
027    
028      public void visitLexicalPragma(/*@non_null*/ LexicalPragma x) {
029      }
030    
031    
032      public void visitCompilationUnit(/*@non_null*/ CompilationUnit x) {
033        for(int i=0; i<x.imports.size(); i++)
034          x.imports.elementAt(i).accept( this );
035        for(int i=0; i<x.elems.size(); i++)
036          x.elems.elementAt(i).accept( this );
037        if( x.lexicalPragmas != null ) 
038            for(int i=0; i<x.lexicalPragmas.size(); i++)
039                x.lexicalPragmas.elementAt(i).accept( this );
040      }
041    
042      public void visitTypeDecl(/*@non_null*/ TypeDecl x) {
043        for(int i=0; i<x.superInterfaces.size(); i++)
044          x.superInterfaces.elementAt(i).accept( this );
045        for(int i=0; i<x.elems.size(); i++)
046          x.elems.elementAt(i).accept( this );
047        if( x.pmodifiers != null ) 
048            for(int i=0; i<x.pmodifiers.size(); i++)
049                x.pmodifiers.elementAt(i).accept( this );
050        if( x.tmodifiers != null ) 
051            for(int i=0; i<x.tmodifiers.size(); i++)
052                x.tmodifiers.elementAt(i).accept( this );
053      }
054    
055      public void visitClassDecl(/*@non_null*/ ClassDecl x) {
056        if( x.superClass != null ) x.superClass.accept( this );
057        visitTypeDecl(x);
058      }
059    
060      public void visitInterfaceDecl(/*@non_null*/ InterfaceDecl x) {
061        visitTypeDecl(x);
062      }
063    
064      public void visitRoutineDecl(/*@non_null*/ RoutineDecl x) {
065        for(int i=0; i<x.args.size(); i++)
066          x.args.elementAt(i).accept( this );
067        for(int i=0; i<x.raises.size(); i++)
068          x.raises.elementAt(i).accept( this );
069        if( x.pmodifiers != null ) 
070            for(int i=0; i<x.pmodifiers.size(); i++)
071                x.pmodifiers.elementAt(i).accept( this );
072        if( x.body != null ) x.body.accept( this );
073    
074      }
075    
076      public void visitConstructorDecl(/*@non_null*/ ConstructorDecl x) {
077        visitRoutineDecl(x);
078        if( x.tmodifiers != null ) 
079            for(int i=0; i<x.tmodifiers.size(); i++)
080                x.tmodifiers.elementAt(i).accept( this );
081      }
082    
083      public void visitMethodDecl(/*@non_null*/ MethodDecl x) {
084        visitRoutineDecl(x);
085        x.returnType.accept( this );
086      }
087    
088      public void visitInitBlock(/*@non_null*/ InitBlock x) {
089        x.block.accept( this );
090        if( x.pmodifiers != null ) 
091            for(int i=0; i<x.pmodifiers.size(); i++)
092                x.pmodifiers.elementAt(i).accept( this );
093      }
094    
095      public void visitGenericVarDecl(/*@non_null*/ GenericVarDecl x) {
096        if( x.pmodifiers != null ) 
097            for(int i=0; i<x.pmodifiers.size(); i++)
098                x.pmodifiers.elementAt(i).accept( this );
099        x.type.accept( this );
100      }
101    
102      public void visitLocalVarDecl(/*@non_null*/ LocalVarDecl x) {
103        visitGenericVarDecl(x);
104        if( x.init != null ) x.init.accept( this );
105      }
106    
107      public void visitFieldDecl(/*@non_null*/ FieldDecl x) {
108        visitGenericVarDecl(x);
109        if( x.init != null ) x.init.accept( this );
110      }
111    
112      public void visitFormalParaDecl(/*@non_null*/ FormalParaDecl x) {
113        visitGenericVarDecl(x);
114      }
115    
116      // ------------------------------
117    
118      public void visitGenericBlockStmt(/*@non_null*/ GenericBlockStmt x) {
119        for(int i=0; i<x.stmts.size(); i++)
120          x.stmts.elementAt(i).accept( this );
121      }
122    
123      public void visitBlockStmt(/*@non_null*/ BlockStmt x) {
124        visitGenericBlockStmt(x);
125      }
126    
127      public void visitSwitchStmt(/*@non_null*/ SwitchStmt x) {
128        visitGenericBlockStmt(x);
129        x.expr.accept( this );
130      }
131    
132      public void visitClassDeclStmt(/*@non_null*/ ClassDeclStmt x) {
133        x.decl.accept( this );
134      }
135    
136      public void visitVarDeclStmt(/*@non_null*/ VarDeclStmt x) {
137        x.decl.accept( this );
138      }
139    
140      public void visitWhileStmt(/*@non_null*/ WhileStmt x) {
141        x.expr.accept( this );
142        x.stmt.accept( this );
143      }
144    
145      public void visitDoStmt(/*@non_null*/ DoStmt x) {
146        x.expr.accept( this );
147        x.stmt.accept( this );
148      }
149    
150      public void visitSynchronizeStmt(/*@non_null*/ SynchronizeStmt x) {
151        x.expr.accept( this );
152        x.stmt.accept( this );
153      }
154    
155      public void visitEvalStmt(/*@non_null*/ EvalStmt x) {
156        x.expr.accept( this );
157      }
158    
159      public void visitReturnStmt(/*@non_null*/ ReturnStmt x) {
160        if( x.expr != null ) x.expr.accept( this );
161      }
162    
163      public void visitThrowStmt(/*@non_null*/ ThrowStmt x) {
164        x.expr.accept( this );
165      }
166    
167      public void visitBranchStmt(/*@non_null*/ BranchStmt x) {
168      }
169    
170      public void visitBreakStmt(/*@non_null*/ BreakStmt x) {
171      }
172    
173      public void visitContinueStmt(/*@non_null*/ ContinueStmt x) {
174      }
175    
176      public void visitLabelStmt(/*@non_null*/ LabelStmt x) {
177        x.stmt.accept( this );
178      }
179    
180      public void visitIfStmt(/*@non_null*/ IfStmt x) {
181        x.expr.accept( this );
182        x.thn.accept( this );
183        x.els.accept( this );
184      }
185    
186      public void visitForStmt(/*@non_null*/ ForStmt x) {
187        for(int i=0; i<x.forInit.size(); i++)
188          x.forInit.elementAt(i).accept( this );
189        x.test.accept( this );
190        for(int i=0; i<x.forUpdate.size(); i++)
191          x.forUpdate.elementAt(i).accept( this );
192        x.body.accept( this );
193      }
194    
195      public void visitSkipStmt(/*@non_null*/ SkipStmt x) {
196      }
197    
198      public void visitSwitchLabel(/*@non_null*/ SwitchLabel x) {
199        if( x.expr != null ) x.expr.accept( this );
200      }
201    
202      public void visitTryFinallyStmt(/*@non_null*/ TryFinallyStmt x) {
203        x.tryClause.accept( this );
204        x.finallyClause.accept( this );
205      }
206    
207      public void visitTryCatchStmt(/*@non_null*/ TryCatchStmt x) {
208        x.tryClause.accept( this );
209        for(int i=0; i<x.catchClauses.size(); i++)
210          x.catchClauses.elementAt(i).accept( this );
211      }
212    
213      public void visitConstructorInvocation(/*@non_null*/ ConstructorInvocation x) {
214        for(int i=0; i<x.args.size(); i++)
215          x.args.elementAt(i).accept( this );
216      }
217    
218      public void visitCatchClause(/*@non_null*/ CatchClause x) {
219        x.arg.accept( this );
220        x.body.accept( this );
221      }
222    
223      public void visitArrayInit(/*@non_null*/ ArrayInit x) {
224        for(int i=0; i<x.elems.size(); i++)
225          x.elems.elementAt(i).accept( this );
226      }
227    
228      public void visitExpr(/*@non_null*/ Expr x) {
229      }
230    
231      public void visitThisExpr(/*@non_null*/ ThisExpr x) {
232        if (x.classPrefix != null)
233            x.classPrefix.accept( this );
234        visitExpr(x);
235      }
236    
237      public void visitLiteralExpr(/*@non_null*/ LiteralExpr x) {
238        visitExpr(x);
239      }
240    
241      public void visitArrayRefExpr(/*@non_null*/ ArrayRefExpr x) {
242        x.array.accept( this );
243        x.index.accept( this );
244        visitExpr(x);
245      }
246    
247      public void visitNewInstanceExpr(/*@non_null*/ NewInstanceExpr x) {
248        x.type.accept( this );
249        for(int i=0; i<x.args.size(); i++)
250          x.args.elementAt(i).accept( this );
251        if (x.anonDecl != null) x.anonDecl.accept( this );
252        visitExpr(x);
253      }
254    
255      public void visitNewArrayExpr(/*@non_null*/ NewArrayExpr x) {
256        x.type.accept( this );
257        for(int i=0; i<x.dims.size(); i++)
258          x.dims.elementAt(i).accept( this );
259        if (x.init != null) x.init.accept( this );
260        visitExpr(x);
261      }
262    
263      public void visitCondExpr(/*@non_null*/ CondExpr x) {
264        x.test.accept( this );
265        x.thn.accept( this );
266        x.els.accept( this );
267        visitExpr(x);
268      }
269    
270      public void visitInstanceOfExpr(/*@non_null*/ InstanceOfExpr x) {
271        x.expr.accept( this );
272        x.type.accept( this );
273        visitExpr(x);
274      }
275    
276      public void visitCastExpr(/*@non_null*/ CastExpr x) {
277        x.expr.accept( this );
278        x.type.accept( this );
279        visitExpr(x);
280      }
281    
282      public void visitBinaryExpr(/*@non_null*/ BinaryExpr x) {
283        x.left.accept( this );
284        x.right.accept( this );
285        visitExpr(x);
286      }
287    
288      public void visitUnaryExpr(/*@non_null*/ UnaryExpr x) {
289        x.expr.accept( this );
290        visitExpr(x);
291      }
292    
293      public void visitParenExpr(/*@non_null*/ ParenExpr x) {
294        x.expr.accept( this );
295        visitExpr(x);
296      }
297    
298      public void visitAmbiguousVariableAccess(/*@non_null*/ AmbiguousVariableAccess x) {
299        visitExpr(x);
300      }
301    
302      public void visitVariableAccess(/*@non_null*/ VariableAccess x) {
303        visitExpr(x);
304      }
305    
306      public void visitFieldAccess(/*@non_null*/ FieldAccess x) {
307        x.od.accept( this );
308        visitExpr(x);
309      }
310    
311      public void visitAmbiguousMethodInvocation(/*@non_null*/ AmbiguousMethodInvocation x) {
312        for(int i=0; i<x.args.size(); i++)
313          x.args.elementAt(i).accept( this );
314        visitExpr(x);
315      }
316    
317      public void visitMethodInvocation(/*@non_null*/ MethodInvocation x) {
318        x.od.accept( this );
319        for(int i=0; i<x.args.size(); i++)
320          x.args.elementAt(i).accept( this );
321        visitExpr(x);
322      }
323    
324      public void visitClassLiteral(/*@non_null*/ ClassLiteral x) {
325        x.type.accept( this );
326        visitExpr(x);
327      }
328    
329    
330      // ------------------------------
331    
332      public void visitExprObjectDesignator(/*@non_null*/ ExprObjectDesignator x) {
333        x.expr.accept( this );
334        visitObjectDesignator(x);
335      }
336    
337      public void visitTypeObjectDesignator(/*@non_null*/ TypeObjectDesignator x) {
338        x.type.accept( this );
339        visitObjectDesignator(x);
340      }
341    
342      public void visitSuperObjectDesignator(/*@non_null*/ SuperObjectDesignator x) {
343        visitObjectDesignator(x);
344      }
345    
346      // ------------------------------
347    
348      public void visitPrimitiveType(/*@non_null*/ PrimitiveType x) {
349        visitType(x);
350      }
351    
352      public void visitTypeName(/*@non_null*/ TypeName x) {
353        visitType(x);
354      }
355    
356      public void visitArrayType(/*@non_null*/ ArrayType x) {
357        x.elemType.accept( this );
358        visitType(x);
359      }
360    
361      public void visitType(/*@non_null*/ Type x) {
362      }
363    
364      // ------------------------------
365    
366      public void visitName(/*@non_null*/ Name x) {
367      }
368    }