001    /*
002    
003     $Id: GroovyCodeVisitor.java 3891 2006-07-07 10:49:57Z blackdrag $
004    
005    
006    
007     Copyright 2003 (C) James Strachan and Bob Mcwhirter. All Rights Reserved.
008    
009    
010    
011     Redistribution and use of this software and associated documentation
012    
013     ("Software"), with or without modification, are permitted provided
014    
015     that the following conditions are met:
016    
017    
018    
019     1. Redistributions of source code must retain copyright
020    
021        statements and notices.  Redistributions must also contain a
022    
023        copy of this document.
024    
025    
026    
027     2. Redistributions in binary form must reproduce the
028    
029        above copyright notice, this list of conditions and the
030    
031        following disclaimer in the documentation and/or other
032    
033        materials provided with the distribution.
034    
035    
036    
037     3. The name "groovy" must not be used to endorse or promote
038    
039        products derived from this Software without prior written
040    
041        permission of The Codehaus.  For written permission,
042    
043        please contact info@codehaus.org.
044    
045    
046    
047     4. Products derived from this Software may not be called "groovy"
048    
049        nor may "groovy" appear in their names without prior written
050    
051        permission of The Codehaus. "groovy" is a registered
052    
053        trademark of The Codehaus.
054    
055    
056    
057     5. Due credit should be given to The Codehaus -
058    
059        http://groovy.codehaus.org/
060    
061    
062    
063     THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS
064    
065     ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
066    
067     NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
068    
069     FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
070    
071     THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
072    
073     INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
074    
075     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
076    
077     SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
078    
079     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
080    
081     STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
082    
083     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
084    
085     OF THE POSSIBILITY OF SUCH DAMAGE.
086    
087    
088    
089     */
090    
091    package org.codehaus.groovy.ast;
092    
093    
094    
095    import org.codehaus.groovy.ast.expr.*;
096    
097    import org.codehaus.groovy.ast.stmt.*;
098    
099    
100    
101    /**
102    
103     * An implementation of the visitor pattern for working with ASTNodes
104    
105     * 
106    
107     * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
108    
109     * @version $Revision: 3891 $
110    
111     */
112    
113    public interface GroovyCodeVisitor {
114    
115    
116    
117        // statements
118    
119        //-------------------------------------------------------------------------
120    
121        public void visitBlockStatement(BlockStatement statement);
122    
123        public void visitForLoop(ForStatement forLoop);
124    
125        public void visitWhileLoop(WhileStatement loop);
126    
127        public void visitDoWhileLoop(DoWhileStatement loop);
128    
129        public void visitIfElse(IfStatement ifElse);
130    
131        public void visitExpressionStatement(ExpressionStatement statement);
132    
133        public void visitReturnStatement(ReturnStatement statement);
134    
135        public void visitAssertStatement(AssertStatement statement);
136    
137        public void visitTryCatchFinally(TryCatchStatement finally1);
138    
139        public void visitSwitch(SwitchStatement statement);
140    
141        public void visitCaseStatement(CaseStatement statement);
142    
143        public void visitBreakStatement(BreakStatement statement);
144    
145        public void visitContinueStatement(ContinueStatement statement);
146    
147        public void visitThrowStatement(ThrowStatement statement);
148    
149        public void visitSynchronizedStatement(SynchronizedStatement statement);
150        
151        public void visitCatchStatement(CatchStatement statement);
152    
153        
154    
155        // expressions
156    
157        //-------------------------------------------------------------------------
158    
159        public void visitMethodCallExpression(MethodCallExpression call);
160    
161        public void visitStaticMethodCallExpression(StaticMethodCallExpression expression);
162    
163        public void visitConstructorCallExpression(ConstructorCallExpression expression);
164    
165        public void visitTernaryExpression(TernaryExpression expression);
166    
167        public void visitBinaryExpression(BinaryExpression expression);
168    
169        public void visitPrefixExpression(PrefixExpression expression);
170    
171        public void visitPostfixExpression(PostfixExpression expression);
172    
173        public void visitBooleanExpression(BooleanExpression expression);
174    
175        public void visitClosureExpression(ClosureExpression expression);
176    
177        
178    
179        public void visitTupleExpression(TupleExpression expression);
180    
181        public void visitMapExpression(MapExpression expression);
182    
183        public void visitMapEntryExpression(MapEntryExpression expression);
184    
185        public void visitListExpression(ListExpression expression);
186    
187        public void visitRangeExpression(RangeExpression expression);
188    
189        
190    
191        public void visitPropertyExpression(PropertyExpression expression);
192    
193        public void visitAttributeExpression(AttributeExpression attributeExpression);
194    
195        public void visitFieldExpression(FieldExpression expression);
196    
197        public void visitMethodPointerExpression(MethodPointerExpression expression);
198    
199    
200    
201        public void visitConstantExpression(ConstantExpression expression);
202    
203        public void visitClassExpression(ClassExpression expression);
204    
205        public void visitVariableExpression(VariableExpression expression);
206    
207        public void visitDeclarationExpression(DeclarationExpression expression);
208    
209        public void visitRegexExpression(RegexExpression expression);
210    
211        public void visitGStringExpression(GStringExpression expression);
212    
213        public void visitArrayExpression(ArrayExpression expression);
214    
215    
216    
217        public void visitSpreadExpression(SpreadExpression expression);
218    
219        public void visitSpreadMapExpression(SpreadMapExpression expression);
220        public void visitNotExpression(NotExpression expression);
221    
222        public void visitNegationExpression(NegationExpression expression);
223    
224        public void visitBitwiseNegExpression(BitwiseNegExpression expression);
225    
226        public void visitCastExpression(CastExpression expression);
227    
228    
229        public void visitArgumentlistExpression(ArgumentListExpression expression);
230    }
231