/**
* Aptana Studio
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the GNU Public License (GPL) v3 (with exceptions).
* Please see the license.html included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package com.aptana.ruby.core.ast;
import java.util.Iterator;
import org.jrubyparser.ast.*;
/**
* @author Chris Williams
* @author Michael Xia
*/
public class InOrderVisitor extends AbstractVisitor
{
@Override
public Object visitAliasNode(AliasNode iVisited)
{
handleNode(iVisited);
return super.visitAliasNode(iVisited);
}
@Override
public Object visitAndNode(AndNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getFirstNode());
acceptNode(iVisited.getSecondNode());
return super.visitAndNode(iVisited);
}
@Override
public Object visitArgsCatNode(ArgsCatNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getFirstNode());
acceptNode(iVisited.getSecondNode());
return super.visitArgsCatNode(iVisited);
}
@Override
public Object visitArgsNode(ArgsNode iVisited)
{
handleNode(iVisited);
// if (iVisited.getPre() != null)
// {
// visitIter(iVisited.getPre().childNodes().iterator());
// }
if (iVisited.getOptional() != null)
{
visitIter(iVisited.getOptional().childNodes().iterator());
}
// acceptNode(iVisited.getRest());
// if (iVisited.getPost() != null)
// {
// visitIter(iVisited.getPost().childNodes().iterator());
// }
acceptNode(iVisited.getBlock());
return super.visitArgsNode(iVisited);
}
@Override
public Object visitRestArgNode(RestArgNode iVisited)
{
handleNode(iVisited);
return super.visitRestArgNode(iVisited);
}
@Override
public Object visitArgsPushNode(ArgsPushNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getFirstNode());
acceptNode(iVisited.getSecondNode());
return super.visitArgsPushNode(iVisited);
}
@Override
public Object visitArrayNode(ArrayNode iVisited)
{
handleNode(iVisited);
visitIter(iVisited.childNodes().iterator());
return super.visitArrayNode(iVisited);
}
@Override
public Object visitAttrAssignNode(AttrAssignNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getReceiverNode());
acceptNode(iVisited.getArgsNode());
return super.visitAttrAssignNode(iVisited);
}
@Override
public Object visitBackRefNode(BackRefNode iVisited)
{
handleNode(iVisited);
return super.visitBackRefNode(iVisited);
}
@Override
public Object visitBeginNode(BeginNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getBodyNode());
return super.visitBeginNode(iVisited);
}
@Override
public Object visitBignumNode(BignumNode iVisited)
{
handleNode(iVisited);
return super.visitBignumNode(iVisited);
}
@Override
public Object visitBlockArgNode(BlockArgNode iVisited)
{
handleNode(iVisited);
return super.visitBlockArgNode(iVisited);
}
@Override
public Object visitBlockNode(BlockNode iVisited)
{
handleNode(iVisited);
visitIter(iVisited.childNodes().iterator());
return super.visitBlockNode(iVisited);
}
@Override
public Object visitBlockPassNode(BlockPassNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getArgsNode());
acceptNode(iVisited.getBodyNode());
return super.visitBlockPassNode(iVisited);
}
@Override
public Object visitBreakNode(BreakNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getValueNode());
return super.visitBreakNode(iVisited);
}
@Override
public Object visitConstDeclNode(ConstDeclNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getValueNode());
return super.visitConstDeclNode(iVisited);
}
@Override
public Object visitClassVarAsgnNode(ClassVarAsgnNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getValueNode());
return super.visitClassVarAsgnNode(iVisited);
}
@Override
public Object visitClassVarDeclNode(ClassVarDeclNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getValueNode());
return super.visitClassVarDeclNode(iVisited);
}
@Override
public Object visitClassVarNode(ClassVarNode iVisited)
{
handleNode(iVisited);
return super.visitClassVarNode(iVisited);
}
@Override
public Object visitCallNode(CallNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getReceiverNode());
Node args = iVisited.getArgsNode();
if (args instanceof ListNode && ((ListNode) args).size() > 0)
{
acceptNode(args);
}
acceptNode(iVisited.getIterNode());
return super.visitCallNode(iVisited);
}
@Override
public Object visitCaseNode(CaseNode iVisited)
{
handleNode(iVisited);
visitIter(iVisited.childNodes().iterator());
return super.visitCaseNode(iVisited);
}
@Override
public Object visitClassNode(ClassNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getCPath());
acceptNode(iVisited.getSuperNode());
acceptNode(iVisited.getBodyNode());
return super.visitClassNode(iVisited);
}
@Override
public Object visitColon2Node(Colon2Node iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getLeftNode());
return super.visitColon2Node(iVisited);
}
@Override
public Object visitColon3Node(Colon3Node iVisited)
{
handleNode(iVisited);
return super.visitColon3Node(iVisited);
}
@Override
public Object visitConstNode(ConstNode iVisited)
{
handleNode(iVisited);
return super.visitConstNode(iVisited);
}
@Override
public Object visitDAsgnNode(DAsgnNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getValueNode());
return super.visitDAsgnNode(iVisited);
}
@Override
public Object visitDRegxNode(DRegexpNode iVisited)
{
handleNode(iVisited);
visitIter(iVisited.childNodes().iterator());
return super.visitDRegxNode(iVisited);
}
@Override
public Object visitDStrNode(DStrNode iVisited)
{
handleNode(iVisited);
visitIter(iVisited.childNodes().iterator());
return super.visitDStrNode(iVisited);
}
@Override
public Object visitDSymbolNode(DSymbolNode iVisited)
{
handleNode(iVisited);
visitIter(iVisited.childNodes().iterator());
return super.visitDSymbolNode(iVisited);
}
@Override
public Object visitDVarNode(DVarNode iVisited)
{
handleNode(iVisited);
return super.visitDVarNode(iVisited);
}
@Override
public Object visitDXStrNode(DXStrNode iVisited)
{
handleNode(iVisited);
visitIter(iVisited.childNodes().iterator());
return super.visitDXStrNode(iVisited);
}
@Override
public Object visitDefinedNode(DefinedNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getExpressionNode());
return super.visitDefinedNode(iVisited);
}
@Override
public Object visitDefnNode(DefnNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getArgsNode());
acceptNode(iVisited.getBodyNode());
return super.visitDefnNode(iVisited);
}
@Override
public Object visitDefsNode(DefsNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getReceiverNode());
acceptNode(iVisited.getArgsNode());
acceptNode(iVisited.getBodyNode());
return super.visitDefsNode(iVisited);
}
@Override
public Object visitDotNode(DotNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getBeginNode());
acceptNode(iVisited.getEndNode());
return super.visitDotNode(iVisited);
}
@Override
public Object visitEncodingNode(EncodingNode iVisited)
{
handleNode(iVisited);
return super.visitEncodingNode(iVisited);
}
@Override
public Object visitEnsureNode(EnsureNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getEnsureNode());
acceptNode(iVisited.getBodyNode());
return super.visitEnsureNode(iVisited);
}
@Override
public Object visitEvStrNode(EvStrNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getBody());
return super.visitEvStrNode(iVisited);
}
@Override
public Object visitFCallNode(FCallNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getArgsNode());
acceptNode(iVisited.getIterNode());
return super.visitFCallNode(iVisited);
}
@Override
public Object visitFalseNode(FalseNode iVisited)
{
handleNode(iVisited);
return super.visitFalseNode(iVisited);
}
@Override
public Object visitFixnumNode(FixnumNode iVisited)
{
handleNode(iVisited);
return super.visitFixnumNode(iVisited);
}
@Override
public Object visitFlipNode(FlipNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getBeginNode());
acceptNode(iVisited.getEndNode());
return super.visitFlipNode(iVisited);
}
@Override
public Object visitFloatNode(FloatNode iVisited)
{
handleNode(iVisited);
return super.visitFloatNode(iVisited);
}
@Override
public Object visitForNode(ForNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getVarNode());
acceptNode(iVisited.getIterNode());
acceptNode(iVisited.getBodyNode());
return super.visitForNode(iVisited);
}
@Override
public Object visitGlobalAsgnNode(GlobalAsgnNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getValueNode());
return super.visitGlobalAsgnNode(iVisited);
}
@Override
public Object visitGlobalVarNode(GlobalVarNode iVisited)
{
handleNode(iVisited);
return super.visitGlobalVarNode(iVisited);
}
@Override
public Object visitHashNode(HashNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getListNode());
return super.visitHashNode(iVisited);
}
@Override
public Object visitInstAsgnNode(InstAsgnNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getValueNode());
return super.visitInstAsgnNode(iVisited);
}
@Override
public Object visitInstVarNode(InstVarNode iVisited)
{
handleNode(iVisited);
return super.visitInstVarNode(iVisited);
}
@Override
public Object visitIfNode(IfNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getCondition());
acceptNode(iVisited.getThenBody());
acceptNode(iVisited.getElseBody());
return super.visitIfNode(iVisited);
}
@Override
public Object visitIterNode(IterNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getVarNode());
acceptNode(iVisited.getBodyNode());
return super.visitIterNode(iVisited);
}
@Override
public Object visitLocalAsgnNode(LocalAsgnNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getValueNode());
return super.visitLocalAsgnNode(iVisited);
}
@Override
public Object visitLocalVarNode(LocalVarNode iVisited)
{
handleNode(iVisited);
return super.visitLocalVarNode(iVisited);
}
@Override
public Object visitMultipleAsgnNode(MultipleAsgnNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getHeadNode());
acceptNode(iVisited.getArgsNode());
acceptNode(iVisited.getValueNode());
return super.visitMultipleAsgnNode(iVisited);
}
@Override
public Object visitMultipleAsgnNode(MultipleAsgn19Node iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getPre());
acceptNode(iVisited.getRest());
acceptNode(iVisited.getValueNode());
return super.visitMultipleAsgnNode(iVisited);
}
@Override
public Object visitMatch2Node(Match2Node iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getReceiverNode());
acceptNode(iVisited.getValueNode());
return super.visitMatch2Node(iVisited);
}
@Override
public Object visitMatch3Node(Match3Node iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getReceiverNode());
acceptNode(iVisited.getValueNode());
return super.visitMatch3Node(iVisited);
}
@Override
public Object visitMatchNode(MatchNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getRegexpNode());
return super.visitMatchNode(iVisited);
}
@Override
public Object visitModuleNode(ModuleNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getBodyNode());
return super.visitModuleNode(iVisited);
}
@Override
public Object visitNewlineNode(NewlineNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getNextNode());
return super.visitNewlineNode(iVisited);
}
@Override
public Object visitNextNode(NextNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getValueNode());
return super.visitNextNode(iVisited);
}
@Override
public Object visitNilNode(NilNode iVisited)
{
if (!(iVisited instanceof NilImplicitNode))
{
handleNode(iVisited);
}
return super.visitNilNode(iVisited);
}
@Override
public Object visitNotNode(NotNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getConditionNode());
return super.visitNotNode(iVisited);
}
@Override
public Object visitNthRefNode(NthRefNode iVisited)
{
handleNode(iVisited);
return super.visitNthRefNode(iVisited);
}
@Override
public Object visitOpElementAsgnNode(OpElementAsgnNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getReceiverNode());
acceptNode(iVisited.getArgsNode());
acceptNode(iVisited.getValueNode());
return super.visitOpElementAsgnNode(iVisited);
}
@Override
public Object visitOpAsgnNode(OpAsgnNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getReceiverNode());
acceptNode(iVisited.getValueNode());
return super.visitOpAsgnNode(iVisited);
}
@Override
public Object visitOpAsgnAndNode(OpAsgnAndNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getFirstNode());
acceptNode(iVisited.getSecondNode());
return super.visitOpAsgnAndNode(iVisited);
}
@Override
public Object visitOpAsgnOrNode(OpAsgnOrNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getFirstNode());
acceptNode(iVisited.getSecondNode());
return super.visitOpAsgnOrNode(iVisited);
}
@Override
public Object visitOrNode(OrNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getFirstNode());
acceptNode(iVisited.getSecondNode());
return super.visitOrNode(iVisited);
}
@Override
public Object visitPostExeNode(PostExeNode iVisited)
{
handleNode(iVisited);
return super.visitPostExeNode(iVisited);
}
@Override
public Object visitRedoNode(RedoNode iVisited)
{
handleNode(iVisited);
return super.visitRedoNode(iVisited);
}
@Override
public Object visitRegexpNode(RegexpNode iVisited)
{
handleNode(iVisited);
return super.visitRegexpNode(iVisited);
}
@Override
public Object visitRescueBodyNode(RescueBodyNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getExceptionNodes());
acceptNode(iVisited.getOptRescueNode());
acceptNode(iVisited.getBodyNode());
return super.visitRescueBodyNode(iVisited);
}
@Override
public Object visitRescueNode(RescueNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getRescueNode());
acceptNode(iVisited.getBodyNode());
acceptNode(iVisited.getElseNode());
return super.visitRescueNode(iVisited);
}
@Override
public Object visitRetryNode(RetryNode iVisited)
{
handleNode(iVisited);
return super.visitRetryNode(iVisited);
}
@Override
public Object visitReturnNode(ReturnNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getValueNode());
return super.visitReturnNode(iVisited);
}
@Override
public Object visitRootNode(RootNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getBodyNode());
return super.visitRootNode(iVisited);
}
@Override
public Object visitSClassNode(SClassNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getReceiverNode());
acceptNode(iVisited.getBodyNode());
return super.visitSClassNode(iVisited);
}
@Override
public Object visitSelfNode(SelfNode iVisited)
{
handleNode(iVisited);
return super.visitSelfNode(iVisited);
}
@Override
public Object visitSplatNode(SplatNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getValue());
return super.visitSplatNode(iVisited);
}
@Override
public Object visitStrNode(StrNode iVisited)
{
handleNode(iVisited);
return super.visitStrNode(iVisited);
}
@Override
public Object visitSuperNode(SuperNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getArgsNode());
return super.visitSuperNode(iVisited);
}
@Override
public Object visitSValueNode(SValueNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getValue());
return super.visitSValueNode(iVisited);
}
@Override
public Object visitSymbolNode(SymbolNode iVisited)
{
handleNode(iVisited);
return super.visitSymbolNode(iVisited);
}
@Override
public Object visitToAryNode(ToAryNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getValue());
return super.visitToAryNode(iVisited);
}
@Override
public Object visitTrueNode(TrueNode iVisited)
{
handleNode(iVisited);
return super.visitTrueNode(iVisited);
}
@Override
public Object visitUndefNode(UndefNode iVisited)
{
handleNode(iVisited);
return super.visitUndefNode(iVisited);
}
@Override
public Object visitUntilNode(UntilNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getConditionNode());
acceptNode(iVisited.getBodyNode());
return super.visitUntilNode(iVisited);
}
@Override
public Object visitVAliasNode(VAliasNode iVisited)
{
handleNode(iVisited);
return super.visitVAliasNode(iVisited);
}
@Override
public Object visitVCallNode(VCallNode iVisited)
{
handleNode(iVisited);
return super.visitVCallNode(iVisited);
}
@Override
public Object visitWhenNode(WhenNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getExpressionNodes());
acceptNode(iVisited.getBodyNode());
acceptNode(iVisited.getNextCase());
return super.visitWhenNode(iVisited);
}
@Override
public Object visitWhileNode(WhileNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getConditionNode());
acceptNode(iVisited.getBodyNode());
return super.visitWhileNode(iVisited);
}
@Override
public Object visitXStrNode(XStrNode iVisited)
{
handleNode(iVisited);
return super.visitXStrNode(iVisited);
}
@Override
public Object visitYieldNode(YieldNode iVisited)
{
handleNode(iVisited);
acceptNode(iVisited.getArgsNode());
return super.visitYieldNode(iVisited);
}
@Override
public Object visitZArrayNode(ZArrayNode iVisited)
{
handleNode(iVisited);
return super.visitZArrayNode(iVisited);
}
@Override
public Object visitZSuperNode(ZSuperNode iVisited)
{
handleNode(iVisited);
return super.visitZSuperNode(iVisited);
}
@Override
protected Object visitNode(Node iVisited)
{
return null;
}
protected Object handleNode(Node visited)
{
return visitNode(visited);
}
/**
* @param iterator
*/
private Object visitIter(Iterator<Node> iterator)
{
while (iterator.hasNext())
{
acceptNode(iterator.next());
}
return null;
}
public Object visitBlockArg18Node(BlockArg18Node iVisited)
{
handleNode(iVisited);
return super.visitBlockArg18Node(iVisited);
}
public Object visitLiteralNode(LiteralNode iVisited)
{
handleNode(iVisited);
return super.visitLiteralNode(iVisited);
}
}