public static void main(String[] args) {
        System.out.println("Gluon Compiler");
        if (args.length == 0) {
            // Print out help
            
            System.out.println("Usage: GluonCompiler [-linux] <input_file> [output_file]");
            //scanner = new GluonScanner();
        } else {
            int parsedArguments = 0;
            boolean linuxBuild = false;
            if ("-linux".equalsIgnoreCase(args[parsedArguments])) {
                linuxBuild = true;
                parsedArguments++;
            }
            
            if (parsedArguments >= args.length) {
                System.err.println("Not enough arguments expected filename.");
                return;
            }
            
            System.out.println("Reading source file: " + args[parsedArguments]);
            // Make sure the source file exists
            File source = new File(args[parsedArguments]);
            parsedArguments++;
            if (!source.exists()) {
                Error.abort("Source file does not exist.");
            } else {
                scanner = new GluonScanner(source);
            }

            compile(linuxBuild);

            if (parsedArguments < args.length) {
                FileWriter fw = null;
                try {
                    File file = new File(args[parsedArguments]);
                    fw = new FileWriter(file);
                    fw.append(output.getOutput());
                } catch (IOException ex) {
                    Logger.getLogger(GluonCompiler.class.getName()).log(Level.SEVERE, null, ex);
                } finally {
                    try {
                        fw.close();
                    } catch (IOException ex) {
                        Logger.getLogger(GluonCompiler.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            } else {
                System.out.print(output.getOutput());
            }
        }
    }