package ar.com.javacuriosities.calculator.generators; import java.io.File; import java.io.FileOutputStream; import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java_cup.Main; public class GenerateParser { private static final String SYMBOLS_CLASS_NAME = "ArithmeticSymbols"; private static final String PARSER_CLASS_NAME = "ArithmeticParser"; private static final String PARSER_PACKAGE = "ar.com.javacuriosities.calculator.parser"; public static void main(String[] args) { try { URL resource = Thread.currentThread().getContextClassLoader().getResource("parser.cup"); Main.main( new String[] { "-parser", PARSER_CLASS_NAME, "-symbols", SYMBOLS_CLASS_NAME, "-package" , PARSER_PACKAGE, resource.getPath() }); File currentDirectory = new File("."); Path parserPath = Paths.get(currentDirectory.getCanonicalPath() + "/" + PARSER_CLASS_NAME + ".java"); FileOutputStream parserOutputStream = new FileOutputStream(new File(currentDirectory.getCanonicalPath() + "/src/main/java/" + PARSER_PACKAGE.replaceAll("\\.", "/") + "/" + PARSER_CLASS_NAME + ".java")); Files.copy(parserPath, parserOutputStream); Files.delete(parserPath); Path symbolPath = Paths.get(currentDirectory.getCanonicalPath() + "/" + SYMBOLS_CLASS_NAME + ".java"); FileOutputStream symbolOutputStream = new FileOutputStream(new File(currentDirectory.getCanonicalPath() + "/src/main/java/" + PARSER_PACKAGE.replaceAll("\\.", "/") + "/" + SYMBOLS_CLASS_NAME + ".java")); Files.copy(symbolPath, symbolOutputStream); Files.delete(symbolPath); } catch (Exception e) { // Log and Handle exception e.printStackTrace(); } } }