Add VM visitor classes
This commit is contained in:
1 parent
916cdca56f
commit
b394464dcb
3 files changed
+630
-202
No files matched your search
@@ -0,0 +1,255 @@
|
||||
package net.sourceforge.pmd.lang.vm.ast;
|
||||
|
||||
public class VmParserVisitorAdapter implements VmParserVisitor {
|
||||
|
||||
@Override
|
||||
public Object visit(final SimpleNode node, final Object data) {
|
||||
node.childrenAccept(this, data);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTprocess node, final Object data) {
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTEscapedDirective node, final Object data) {
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTEscape node, final Object data) {
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTComment node, final Object data) {
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTTextblock node, final Object data) {
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTFloatingPointLiteral node, final Object data) {
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTIntegerLiteral node, final Object data) {
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTStringLiteral node, final Object data) {
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTIdentifier node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTWord node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTDirective node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTBlock node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTMap node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTObjectArray node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTIntegerRange node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTMethod node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTIndex node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTReference node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTTrue node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTFalse node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTText node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTForeachStatement node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTIfStatement node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTElseStatement node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTElseIfStatement node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTSetDirective node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTExpression node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTAssignment node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTOrNode node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTAndNode node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTEQNode node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTNENode node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTLTNode node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTGTNode node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTLENode node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTGENode node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTAddNode node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTSubtractNode node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTMulNode node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTDivNode node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTModNode node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTNotNode node, final Object data) {
|
||||
|
||||
return visit((SimpleNode) node, data);
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,44 +1,44 @@
|
||||
package net.sourceforge.pmd.lang.vm.rule;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.sourceforge.pmd.Rule;
|
||||
import net.sourceforge.pmd.RuleContext;
|
||||
import net.sourceforge.pmd.lang.ast.Node;
|
||||
import net.sourceforge.pmd.lang.jsp.ast.ASTCompilationUnit;
|
||||
import net.sourceforge.pmd.lang.jsp.ast.JspNode;
|
||||
import net.sourceforge.pmd.lang.jsp.ast.JspParserVisitor;
|
||||
import net.sourceforge.pmd.lang.jsp.ast.JspParserVisitorAdapter;
|
||||
import net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor;
|
||||
import net.sourceforge.pmd.lang.rule.XPathRule;
|
||||
|
||||
public class VmRuleChainVisitor extends AbstractRuleChainVisitor {
|
||||
|
||||
@Override
|
||||
protected void indexNodes(final List<Node> nodes, final RuleContext ctx) {
|
||||
final JspParserVisitor jspParserVisitor = new JspParserVisitorAdapter() {
|
||||
// Perform a visitation of the AST to index nodes which need
|
||||
// visiting by type
|
||||
@Override
|
||||
public Object visit(final JspNode node, final Object data) {
|
||||
indexNode(node);
|
||||
return super.visit(node, data);
|
||||
}
|
||||
};
|
||||
|
||||
for (int i = 0; i < nodes.size(); i++) {
|
||||
jspParserVisitor.visit((ASTCompilationUnit) nodes.get(i), ctx);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void visit(final Rule rule, final Node node, final RuleContext ctx) {
|
||||
// Rule better either be a JspParserVisitor, or a XPathRule
|
||||
if (rule instanceof JspParserVisitor) {
|
||||
((JspNode) node).jjtAccept((JspParserVisitor) rule, ctx);
|
||||
}
|
||||
else {
|
||||
((XPathRule) rule).evaluate(node, ctx);
|
||||
}
|
||||
}
|
||||
}
|
||||
package net.sourceforge.pmd.lang.vm.rule;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.sourceforge.pmd.Rule;
|
||||
import net.sourceforge.pmd.RuleContext;
|
||||
import net.sourceforge.pmd.lang.ast.Node;
|
||||
import net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor;
|
||||
import net.sourceforge.pmd.lang.rule.XPathRule;
|
||||
import net.sourceforge.pmd.lang.vm.ast.ASTprocess;
|
||||
import net.sourceforge.pmd.lang.vm.ast.SimpleNode;
|
||||
import net.sourceforge.pmd.lang.vm.ast.VmParserVisitor;
|
||||
import net.sourceforge.pmd.lang.vm.ast.VmParserVisitorAdapter;
|
||||
|
||||
public class VmRuleChainVisitor extends AbstractRuleChainVisitor {
|
||||
|
||||
@Override
|
||||
protected void indexNodes(final List<Node> nodes, final RuleContext ctx) {
|
||||
final VmParserVisitor vmParserVisitor = new VmParserVisitorAdapter() {
|
||||
// Perform a visitation of the AST to index nodes which need
|
||||
// visiting by type
|
||||
@Override
|
||||
public Object visit(final SimpleNode node, final Object data) {
|
||||
indexNode(node);
|
||||
return super.visit(node, data);
|
||||
}
|
||||
};
|
||||
|
||||
for (int i = 0; i < nodes.size(); i++) {
|
||||
vmParserVisitor.visit((ASTprocess) nodes.get(i), ctx);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void visit(final Rule rule, final Node node, final RuleContext ctx) {
|
||||
// Rule better either be a VmParserVisitor, or a XPathRule
|
||||
if (rule instanceof VmParserVisitor) {
|
||||
((SimpleNode) node).jjtAccept((VmParserVisitor) rule, ctx);
|
||||
}
|
||||
else {
|
||||
((XPathRule) rule).evaluate(node, ctx);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user