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