package ru.csu.stan.java.ast.treetoxml.main; import java.io.IOException; import java.util.Collection; import java.util.LinkedList; import javax.tools.JavaFileObject; import javax.xml.stream.XMLStreamException; import ru.csu.stan.java.ast.core.BypassException; import ru.csu.stan.java.ast.core.TraversalHandler; import ru.csu.stan.java.ast.main.Main; import ru.csu.stan.java.ast.treetoxml.stax.StaxXmlRepresentation; /** * Класс утилиты командной строки для получения AST в виде XML * из исходного кода на Java. * * @author mz * */ public class Launcher { private static final String HELP = "USAGE: ast <project dir> <output file>"; public static void main(String[] args) throws BypassException, IOException, XMLStreamException { if (args != null && args.length > 0 && args.length < 3){ final String path = args[0]; final String out = args[1]; System.out.println("Using "+path+" as project dir"); Main main = Main.getInstance(path); Collection<TraversalHandler> handlers = new LinkedList<TraversalHandler>(); System.out.println("Using " + out + " as output file"); StaxXmlRepresentation stax = StaxXmlRepresentation.getInstance(path, out); handlers.add(stax); stax.startDocument(); Iterable<? extends JavaFileObject> units = main.getUnits(); for (JavaFileObject unit : units) { System.out.println("Processing file: "+unit.getName()); main.execute(unit, handlers); } stax.endDocument(); System.out.println("Successfully ended"); } else System.out.println(HELP); } }