home *** CD-ROM | disk | FTP | other *** search
- package espresso;
-
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
-
- class Main implements Constants {
- static int argcount;
- static String[] expargs;
- static boolean Win32;
- static boolean someFiles = false;
-
- static {
- Win32 = File.separatorChar == '\\';
- expargs = new String[4];
- }
-
- static String[] expand(String[] var0) throws IOException {
- argcount = 0;
-
- for(int var1 = 0; var1 < var0.length; ++var1) {
- if (hasWildcards(var0[var1])) {
- addExpansion(var0[var1]);
- } else {
- addArg(var0[var1]);
- }
- }
-
- return truncate(expargs, argcount);
- }
-
- static void addExpansion(String var0) throws IOException {
- File var1 = new File(var0);
- String var2 = var1.getParent();
- String var3 = var1.getName();
- if (var2 == null) {
- if (var0.indexOf("\\") == 0) {
- var2 = "";
- } else {
- var2 = ".";
- }
- }
-
- File var4 = new File(String.valueOf(var2).concat(String.valueOf("\\")));
- if (var4 == null) {
- addArg(var0);
- } else {
- String[] var5 = var4.list();
- if (var5 != null) {
- for(int var6 = 0; var6 < var5.length; ++var6) {
- if (matches(var5[var6], 0, var3, 0)) {
- addArg(String.valueOf(String.valueOf(var2).concat(String.valueOf(File.separator))).concat(String.valueOf(var5[var6])));
- }
- }
- }
-
- }
- }
-
- static boolean matches(String var0, int var1, String var2, int var3) {
- if (var3 >= var2.length()) {
- return var1 >= var0.length();
- } else if (var2.charAt(var3) == '*') {
- return matches(var0, var1, var2, var3 + 1) || var1 < var0.length() && matches(var0, var1 + 1, var2, var3);
- } else {
- return var1 < var0.length() && (var2.charAt(var3) == '?' || Character.toUpperCase(var0.charAt(var1)) == Character.toUpperCase(var2.charAt(var3))) && matches(var0, var1 + 1, var2, var3 + 1);
- }
- }
-
- static boolean hasWildcards(String var0) {
- return var0.length() > 0 && var0.charAt(0) != '-' && (var0.indexOf(42) >= 0 || var0.indexOf("?") >= 0);
- }
-
- static String[] truncate(String[] var0, int var1) {
- String[] var2 = new String[var1];
- System.arraycopy(var0, 0, var2, 0, var1);
- return var2;
- }
-
- static void addArg(String var0) {
- if (argcount == expargs.length) {
- String[] var1 = new String[argcount * 2];
- System.arraycopy(expargs, 0, var1, 0, argcount);
- expargs = var1;
- }
-
- expargs[argcount++] = var0;
- }
-
- public static void main(String[] var0) throws Exception {
- if (var0.length == 0) {
- System.out.println("Usage: espresso [-g][-verbose][-obfuscate][-d dir][-classpath path] {file.java}");
- } else {
- try {
- long var1 = System.currentTimeMillis();
- String[] var3 = Win32 ? expand(var0) : var0;
- TopLevel[] var4 = new TopLevel[var3.length];
- String[] var5 = new String[var3.length];
-
- for(int var6 = 0; var6 < var3.length; ++var6) {
- var4[var6] = null;
- var5[var6] = null;
- String var7 = var3[var6];
- if (var7.equals("-classpath") && var6 + 1 < var3.length) {
- ClassFile.classPath = String.valueOf(String.valueOf(var3[var6 + 1]).concat(String.valueOf(ClassFile.pathSep))).concat(String.valueOf(ClassFile.classPath));
- ++var6;
- } else if (var7.equals("-d") && var6 + 1 < var3.length) {
- var5[var6] = var3[var6 + 1];
- ++var6;
- } else if (var7.equals("-verbose")) {
- Switches.verbose = true;
- } else if (var7.equals("-obfuscate")) {
- Switches.obfuscate = true;
- } else if (var7.equals("-g")) {
- Switches.debugInfo = true;
- } else if (var7.equals("-extended")) {
- Switches.extended = true;
- } else if (var7.equals("-printtree")) {
- Switches.printTree = true;
- } else if (var7.equals("-printsearch")) {
- Switches.printSearch = true;
- } else if (var7.equals("-prompt")) {
- Switches.promptOnError = true;
- } else if (var7.startsWith("-")) {
- System.out.println(String.valueOf("unrecognized option: ").concat(String.valueOf(var7)));
- } else {
- if (Switches.verbose && !someFiles) {
- System.out.println("EspressoGrinder 1.0beta6, 11-Feb-96; Copyright 1995,96 Martin Odersky. All rights reserved.");
- }
-
- var4[var6] = parse(var7);
- }
- }
-
- if (Report.nerrors == 0) {
- if (Switches.verbose && someFiles) {
- System.out.println("[preprocessing]");
- }
-
- for(int var8 = 0; var8 < var4.length; ++var8) {
- if (var4[var8] != null) {
- var4[var8].enter();
- }
- }
-
- Predef.init();
-
- for(int var9 = 0; var9 < var4.length; ++var9) {
- if (var4[var9] != null) {
- var4[var9].enterFields();
- }
- }
-
- for(int var10 = 0; var10 < var4.length; ++var10) {
- if (var4[var10] != null) {
- var4[var10].attr();
- }
- }
-
- if (Switches.extended && Report.nerrors == 0) {
- for(int var11 = 0; var11 < var4.length; ++var11) {
- if (var4[var11] != null) {
- var4[var11] = (TopLevel)var4[var11].simplify();
- }
- }
-
- Simplify.swapTypes();
-
- for(int var12 = 0; var12 < var4.length; ++var12) {
- if (var4[var12] != null) {
- var4[var12].enterFields();
- }
- }
-
- for(int var13 = 0; var13 < var4.length; ++var13) {
- if (var4[var13] != null) {
- var4[var13].attr();
- }
- }
- }
-
- for(int var14 = 0; var14 < var4.length; ++var14) {
- if (var5[var14] != null) {
- ClassFile.outDir = var5[var14];
- }
-
- if (var4[var14] != null) {
- var4[var14].genDrop();
- }
- }
- }
-
- if (Switches.verbose) {
- System.out.println(String.valueOf(String.valueOf("[total ").concat(String.valueOf(System.currentTimeMillis() - var1))).concat(String.valueOf("ms]")));
- }
-
- printCount("error", Report.nerrors);
- printCount("warning", Report.nwarnings);
- System.exit(Report.nerrors > 0 ? -1 : 0);
- } catch (Exception var16) {
- errorMsg();
- throw var16;
- }
- }
-
- }
-
- static void errorMsg() {
- System.out.println("\n\nAn exception has occurred in the compiler.");
- System.out.println("Please file a bug report by sending your program and the following diagnostic to");
- System.out.println("espresso@ira.uka.de.\n\n Thank you.\n");
- }
-
- static void printCount(String var0, int var1) {
- if (var1 != 0) {
- System.out.print(var1);
- System.out.println(String.valueOf(String.valueOf(" ").concat(String.valueOf(var0))).concat(String.valueOf(var1 == 1 ? "" : "s")));
- }
-
- }
-
- static TopLevel parse(String var0) {
- long var1 = System.currentTimeMillis();
- FileInputStream var3 = openIn(var0);
- if (var3 != null) {
- if (Switches.verbose) {
- System.out.print(String.valueOf(String.valueOf("[parsing ").concat(String.valueOf(var0))).concat(String.valueOf(" ")));
- System.out.flush();
- someFiles = true;
- }
-
- Report.open(var0);
- Scanner var4 = new Scanner(var3);
- Parser var5 = new Parser(var4);
- ASTS var6 = var5.compilationUnit();
-
- try {
- var3.close();
- } catch (IOException var8) {
- }
-
- Report.close();
- if (Switches.verbose) {
- System.out.println(String.valueOf(System.currentTimeMillis() - var1).concat(String.valueOf("ms]")));
- }
-
- return new TopLevel(var6, Report.filename);
- } else {
- return null;
- }
- }
-
- static FileInputStream openIn(String var0) {
- try {
- File var1 = new File(var0);
- return var1 == null ? null : new FileInputStream(var1);
- } catch (IOException var3) {
- Report.error(Report.noPos, String.valueOf("can't read: ").concat(String.valueOf(var0)));
- return null;
- }
- }
-
- public Main() {
- }
- }
-