Add TokenBasedNode, AbstractJjtreeNode
This commit is contained in:
@ -533,7 +533,10 @@ public abstract class AbstractNode implements Node {
|
||||
this.userData = userData;
|
||||
}
|
||||
|
||||
// TODO should we deprecate this too?
|
||||
/**
|
||||
* @deprecated Not all nodes have access to their tokens, use the interface {@link TokenBasedNode} instead
|
||||
*/
|
||||
@Deprecated
|
||||
public GenericToken jjtGetFirstToken() {
|
||||
return firstToken;
|
||||
}
|
||||
@ -546,7 +549,10 @@ public abstract class AbstractNode implements Node {
|
||||
this.firstToken = token;
|
||||
}
|
||||
|
||||
// TODO should we deprecate this too?
|
||||
/**
|
||||
* @deprecated Not all nodes have access to their tokens, use the interface {@link TokenBasedNode} instead
|
||||
*/
|
||||
@Deprecated
|
||||
public GenericToken jjtGetLastToken() {
|
||||
return lastToken;
|
||||
}
|
||||
|
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
|
||||
*/
|
||||
|
||||
package net.sourceforge.pmd.lang.ast;
|
||||
|
||||
/**
|
||||
* A {@link Node} that can provide access to the underlying
|
||||
* {@linkplain GenericToken tokens} produced by the lexer.
|
||||
*/
|
||||
public interface TokenBasedNode<T extends GenericToken> {
|
||||
|
||||
/**
|
||||
* Returns the first token producing this node.
|
||||
* This is not a special token.
|
||||
*/
|
||||
T getFirstToken();
|
||||
|
||||
|
||||
/**
|
||||
* Returns the last token producing this node.
|
||||
* This is not a special token.
|
||||
*/
|
||||
T getLastToken();
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
|
||||
*/
|
||||
|
||||
package net.sourceforge.pmd.lang.java.ast.impl.javacc;
|
||||
|
||||
import net.sourceforge.pmd.lang.ast.AbstractNode;
|
||||
import net.sourceforge.pmd.lang.ast.GenericToken;
|
||||
import net.sourceforge.pmd.lang.ast.Node;
|
||||
import net.sourceforge.pmd.lang.ast.TokenBasedNode;
|
||||
|
||||
/**
|
||||
* Base class for node produced by JJTree. JJTree specific functionality
|
||||
* present on the API of {@link Node} and {@link AbstractNode} will be
|
||||
* moved here for 7.0.0.
|
||||
*/
|
||||
public abstract class AbstractJjtreeNode<T extends GenericToken> extends AbstractNode implements TokenBasedNode<T> {
|
||||
|
||||
public AbstractJjtreeNode(int id) {
|
||||
super(id);
|
||||
}
|
||||
|
||||
public AbstractJjtreeNode(int id, int theBeginLine, int theEndLine, int theBeginColumn, int theEndColumn) {
|
||||
super(id, theBeginLine, theEndLine, theBeginColumn, theEndColumn);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public T getFirstToken() {
|
||||
return (T) super.jjtGetFirstToken();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public T getLastToken() {
|
||||
return (T) super.jjtGetLastToken();
|
||||
}
|
||||
}
|
@ -5,12 +5,12 @@
|
||||
package net.sourceforge.pmd.lang.java.ast;
|
||||
|
||||
import net.sourceforge.pmd.annotation.InternalApi;
|
||||
import net.sourceforge.pmd.lang.ast.AbstractNode;
|
||||
import net.sourceforge.pmd.lang.java.ast.impl.javacc.AbstractJjtreeNode;
|
||||
import net.sourceforge.pmd.lang.symboltable.Scope;
|
||||
|
||||
@Deprecated
|
||||
@InternalApi
|
||||
public abstract class AbstractJavaNode extends AbstractNode implements JavaNode {
|
||||
public abstract class AbstractJavaNode extends AbstractJjtreeNode<Token> implements JavaNode {
|
||||
|
||||
protected JavaParser parser;
|
||||
private Scope scope;
|
||||
|
@ -6,6 +6,7 @@ package net.sourceforge.pmd.lang.java.ast;
|
||||
|
||||
|
||||
import net.sourceforge.pmd.annotation.InternalApi;
|
||||
import net.sourceforge.pmd.lang.ast.TokenBasedNode;
|
||||
import net.sourceforge.pmd.lang.symboltable.Scope;
|
||||
import net.sourceforge.pmd.lang.symboltable.ScopedNode;
|
||||
|
||||
@ -13,7 +14,7 @@ import net.sourceforge.pmd.lang.symboltable.ScopedNode;
|
||||
/**
|
||||
* Root interface for all Nodes of the Java AST.
|
||||
*/
|
||||
public interface JavaNode extends ScopedNode {
|
||||
public interface JavaNode extends ScopedNode, TokenBasedNode<Token> {
|
||||
|
||||
/**
|
||||
* Calls back the visitor's visit method corresponding to the runtime type of this Node.
|
||||
|
@ -4,9 +4,9 @@
|
||||
|
||||
package net.sourceforge.pmd.lang.jsp.ast;
|
||||
|
||||
import net.sourceforge.pmd.lang.ast.AbstractNode;
|
||||
import net.sourceforge.pmd.lang.java.ast.impl.javacc.AbstractJjtreeNode;
|
||||
|
||||
public class AbstractJspNode extends AbstractNode implements JspNode {
|
||||
public class AbstractJspNode extends AbstractJjtreeNode<Token> implements JspNode {
|
||||
|
||||
protected JspParser parser;
|
||||
|
||||
|
@ -5,8 +5,9 @@
|
||||
package net.sourceforge.pmd.lang.jsp.ast;
|
||||
|
||||
import net.sourceforge.pmd.lang.ast.Node;
|
||||
import net.sourceforge.pmd.lang.ast.TokenBasedNode;
|
||||
|
||||
public interface JspNode extends Node {
|
||||
public interface JspNode extends Node, TokenBasedNode<Token> {
|
||||
/**
|
||||
* Accept the visitor. *
|
||||
*/
|
||||
|
@ -7,9 +7,10 @@
|
||||
|
||||
package net.sourceforge.pmd.lang.plsql.ast;
|
||||
|
||||
import net.sourceforge.pmd.lang.java.ast.impl.javacc.AbstractJjtreeNode;
|
||||
import net.sourceforge.pmd.lang.symboltable.Scope;
|
||||
|
||||
public abstract class AbstractPLSQLNode extends net.sourceforge.pmd.lang.ast.AbstractNode implements PLSQLNode {
|
||||
public abstract class AbstractPLSQLNode extends AbstractJjtreeNode<Token> implements PLSQLNode {
|
||||
protected Object value;
|
||||
protected PLSQLParser parser;
|
||||
protected Scope scope;
|
||||
|
@ -5,10 +5,11 @@
|
||||
package net.sourceforge.pmd.lang.plsql.ast;
|
||||
|
||||
import net.sourceforge.pmd.lang.ast.Node;
|
||||
import net.sourceforge.pmd.lang.ast.TokenBasedNode;
|
||||
import net.sourceforge.pmd.lang.symboltable.Scope;
|
||||
import net.sourceforge.pmd.lang.symboltable.ScopedNode;
|
||||
|
||||
public interface PLSQLNode extends Node, ScopedNode {
|
||||
public interface PLSQLNode extends Node, ScopedNode, TokenBasedNode<Token> {
|
||||
|
||||
/** Accept the visitor. **/
|
||||
Object jjtAccept(PLSQLParserVisitor visitor, Object data);
|
||||
|
@ -4,9 +4,9 @@
|
||||
|
||||
package net.sourceforge.pmd.lang.vf.ast;
|
||||
|
||||
import net.sourceforge.pmd.lang.ast.AbstractNode;
|
||||
import net.sourceforge.pmd.lang.java.ast.impl.javacc.AbstractJjtreeNode;
|
||||
|
||||
public class AbstractVFNode extends AbstractNode implements VfNode {
|
||||
public class AbstractVFNode extends AbstractJjtreeNode<Token> implements VfNode {
|
||||
|
||||
protected VfParser parser;
|
||||
|
||||
|
@ -5,13 +5,16 @@
|
||||
package net.sourceforge.pmd.lang.vf.ast;
|
||||
|
||||
import net.sourceforge.pmd.lang.ast.Node;
|
||||
import net.sourceforge.pmd.lang.ast.TokenBasedNode;
|
||||
|
||||
public interface VfNode extends Node, TokenBasedNode<Token> {
|
||||
|
||||
public interface VfNode extends Node {
|
||||
/**
|
||||
* Accept the visitor. *
|
||||
*/
|
||||
Object jjtAccept(VfParserVisitor visitor, Object data);
|
||||
|
||||
|
||||
/**
|
||||
* Accept the visitor. *
|
||||
*/
|
||||
|
@ -25,12 +25,13 @@ import java.io.Writer;
|
||||
|
||||
import org.apache.commons.lang3.text.StrBuilder;
|
||||
|
||||
import net.sourceforge.pmd.lang.ast.AbstractNode;
|
||||
import net.sourceforge.pmd.annotation.InternalApi;
|
||||
import net.sourceforge.pmd.lang.java.ast.impl.javacc.AbstractJjtreeNode;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class AbstractVmNode extends AbstractNode implements VmNode {
|
||||
public class AbstractVmNode extends AbstractJjtreeNode<Token> implements VmNode {
|
||||
|
||||
/** */
|
||||
// TODO - It seems that this field is only valid when parsing, and should
|
||||
@ -93,17 +94,18 @@ public class AbstractVmNode extends AbstractNode implements VmNode {
|
||||
endColumn = parser.token.endColumn;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param t
|
||||
*/
|
||||
@InternalApi
|
||||
@Deprecated
|
||||
public void setFirstToken(final Token t) {
|
||||
this.first = t;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Token getFirstToken() {
|
||||
return first;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Token getLastToken() {
|
||||
return last;
|
||||
}
|
||||
|
@ -5,8 +5,9 @@
|
||||
package net.sourceforge.pmd.lang.vm.ast;
|
||||
|
||||
import net.sourceforge.pmd.lang.ast.Node;
|
||||
import net.sourceforge.pmd.lang.ast.TokenBasedNode;
|
||||
|
||||
public interface VmNode extends Node {
|
||||
public interface VmNode extends Node, TokenBasedNode<Token> {
|
||||
/**
|
||||
* Accept the visitor. *
|
||||
*/
|
||||
|
Reference in New Issue
Block a user