001    /*
002     $Id: GroovyCodeVisitor.java,v 1.27 2005/05/11 01:17:38 phk Exp $
003    
004     Copyright 2003 (C) James Strachan and Bob Mcwhirter. All Rights Reserved.
005    
006     Redistribution and use of this software and associated documentation
007     ("Software"), with or without modification, are permitted provided
008     that the following conditions are met:
009    
010     1. Redistributions of source code must retain copyright
011        statements and notices.  Redistributions must also contain a
012        copy of this document.
013    
014     2. Redistributions in binary form must reproduce the
015        above copyright notice, this list of conditions and the
016        following disclaimer in the documentation and/or other
017        materials provided with the distribution.
018    
019     3. The name "groovy" must not be used to endorse or promote
020        products derived from this Software without prior written
021        permission of The Codehaus.  For written permission,
022        please contact info@codehaus.org.
023    
024     4. Products derived from this Software may not be called "groovy"
025        nor may "groovy" appear in their names without prior written
026        permission of The Codehaus. "groovy" is a registered
027        trademark of The Codehaus.
028    
029     5. Due credit should be given to The Codehaus -
030        http://groovy.codehaus.org/
031    
032     THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS
033     ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
034     NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
035     FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
036     THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
037     INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
038     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
039     SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
040     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
041     STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
042     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
043     OF THE POSSIBILITY OF SUCH DAMAGE.
044    
045     */
046    package org.codehaus.groovy.ast;
047    
048    import org.codehaus.groovy.ast.expr.*;
049    import org.codehaus.groovy.ast.stmt.*;
050    
051    /**
052     * An implementation of the visitor pattern for working with ASTNodes
053     * 
054     * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
055     * @version $Revision: 1.27 $
056     */
057    public interface GroovyCodeVisitor {
058    
059        // statements
060        //-------------------------------------------------------------------------
061        public void visitBlockStatement(BlockStatement statement);
062        public void visitForLoop(ForStatement forLoop);
063        public void visitWhileLoop(WhileStatement loop);
064        public void visitDoWhileLoop(DoWhileStatement loop);
065        public void visitIfElse(IfStatement ifElse);
066        public void visitExpressionStatement(ExpressionStatement statement);
067        public void visitReturnStatement(ReturnStatement statement);
068        public void visitAssertStatement(AssertStatement statement);
069        public void visitTryCatchFinally(TryCatchStatement finally1);
070        public void visitSwitch(SwitchStatement statement);
071        public void visitCaseStatement(CaseStatement statement);
072        public void visitBreakStatement(BreakStatement statement);
073        public void visitContinueStatement(ContinueStatement statement);
074        public void visitThrowStatement(ThrowStatement statement);
075        public void visitSynchronizedStatement(SynchronizedStatement statement);
076        
077        public void visitCatchStatement(CatchStatement statement);
078        
079        // expressions
080        //-------------------------------------------------------------------------
081        public void visitMethodCallExpression(MethodCallExpression call);
082        public void visitStaticMethodCallExpression(StaticMethodCallExpression expression);
083        public void visitConstructorCallExpression(ConstructorCallExpression expression);
084        public void visitTernaryExpression(TernaryExpression expression);
085        public void visitBinaryExpression(BinaryExpression expression);
086        public void visitPrefixExpression(PrefixExpression expression);
087        public void visitPostfixExpression(PostfixExpression expression);
088        public void visitBooleanExpression(BooleanExpression expression);
089        public void visitClosureExpression(ClosureExpression expression);
090        
091        public void visitTupleExpression(TupleExpression expression);
092        public void visitMapExpression(MapExpression expression);
093        public void visitMapEntryExpression(MapEntryExpression expression);
094        public void visitListExpression(ListExpression expression);
095        public void visitRangeExpression(RangeExpression expression);
096        
097        public void visitPropertyExpression(PropertyExpression expression);
098        public void visitAttributeExpression(AttributeExpression attributeExpression);
099        public void visitFieldExpression(FieldExpression expression);
100        public void visitMethodPointerExpression(MethodPointerExpression expression);
101    
102        public void visitConstantExpression(ConstantExpression expression);
103        public void visitClassExpression(ClassExpression expression);
104        public void visitVariableExpression(VariableExpression expression);
105        public void visitDeclarationExpression(DeclarationExpression expression);
106        public void visitRegexExpression(RegexExpression expression);
107        public void visitGStringExpression(GStringExpression expression);
108        public void visitArrayExpression(ArrayExpression expression);
109    
110        public void visitSpreadExpression(SpreadExpression expression);
111        public void visitSpreadMapExpression(SpreadMapExpression expression);
112        public void visitNotExpression(NotExpression expression);
113        public void visitNegationExpression(NegationExpression expression);
114        public void visitBitwiseNegExpression(BitwiseNegExpression expression);
115        public void visitCastExpression(CastExpression expression);
116    
117    }