Package

Source Code of InstrumentVisitor

import jscover.util.IoUtils;
import org.mozilla.javascript.CompilerEnvirons;
import org.mozilla.javascript.Parser;
import org.mozilla.javascript.ast.AstNode;
import org.mozilla.javascript.ast.AstRoot;
import org.mozilla.javascript.ast.NodeVisitor;

import java.io.StringReader;


public class InstrumentVisitor implements NodeVisitor {
    private static IoUtils ioUtils = IoUtils.getInstance();

    public static void main(String args[]) throws Exception {
        String source = ioUtils.loadFromClassPath("/test.js");
//        String source = "let ({x: x0, y: y0} = point) {\n  print(x0);\n  print(y0);\n}";
        CompilerEnvirons compilerEnv = new CompilerEnvirons();
        compilerEnv.setLanguageVersion(180);
        Parser parser = new Parser(compilerEnv);
        AstRoot astRoot = parser.parse(new StringReader(source), null, 1);
        astRoot.visitAll(new InstrumentVisitor());
        System.out.println(astRoot.toSource());
//        System.out.println("****************************");
//
//        source = "label:{\nx++;\nwhile (x) {\n  if (x) {\n    continue label;\n  }\n}}";
//        parser = new Parser();
//        astRoot = parser.parse(new StringReader(source), null, 1);
//        astRoot.visitAll(new InstrumentVisitor());
    }

    public boolean visit(AstNode node) {
        for (int i=0;i<node.depth();i++) {
            System.out.print("  ");
        }
       
//      String type = Token.typeToName(node.getType());
//        switch (node.getType()) {
//            case Token.MUL: type = "STAR";break;
//          case Token.EXPR_RESULT: type = "SEMI";break;
//        }
        System.out.println(node.getClass().getSimpleName());
//        int nodePosition = getNodePosition(node);
//        System.out.println(String.format("%s: starts at line %d, column %d, ends at line %d, column %d",
//                type,
//                node.getLineno(),
//                nodePosition,
//                node.getLastChild()==null?node.getLineno():node.getLastChild().getLineno(),
//                (nodePosition+node.getLength())));
        return true;
    }

//    private int getNodePosition(AstNode node) {
//        int nodePosition = node.getPosition();
//        AstNode parent = node.getParent();
//        if (parent!=null) {
//            if (parent.getLineno()==node.getLineno())
//                nodePosition += parent.getPosition();
//        }
//        return nodePosition;
//    }

}
TOP

Related Classes of InstrumentVisitor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.