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