/*******************************************************************************
* Copyright (c) 2007, 2008 Edgar Espina.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
*******************************************************************************/
package org.deved.antlride.core.model.dltk.ast;
import java.util.ArrayList;
import java.util.List;
import org.deved.antlride.core.model.ElementKind;
import org.eclipse.dltk.ast.ASTNode;
import org.eclipse.dltk.ast.ASTVisitor;
import org.eclipse.dltk.ast.declarations.Argument;
import org.eclipse.dltk.ast.declarations.MethodDeclaration;
public class DASTRule extends MethodDeclaration {
private List<ASTNode> decorators;
public DASTRule(String text, int nameStart, int nameEnd, int declStart,
int declEnd) {
super(text, nameStart, nameEnd, declStart, declEnd);
decorators = new ArrayList<ASTNode>(3);
}
public void addDecorator(ASTNode decorator) {
decorators.add(decorator);
}
@Override
public int getKind() {
return ElementKind.RULE.ordinal();
}
@SuppressWarnings("unchecked")
@Override
public void traverse(ASTVisitor visitor) throws Exception {
if (visitor.visit(this)) {
// Decorators
for (ASTNode decorator : decorators) {
decorator.traverse(visitor);
}
// Arguments
List<Argument> arguments = getArguments();
for (Argument argument : arguments) {
argument.traverse(visitor);
}
// Body
if (getBody() != null) {
getBody().traverse(visitor);
}
visitor.endvisit(this);
}
}
}