⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 out.java

📁 java语法解释器生成器
💻 JAVA
字号:
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * JFlex 1.4.2                                                             * * Copyright (C) 1998-2008  Gerwin Klein <lsf@jflex.de>                    * * All rights reserved.                                                    * *                                                                         * * This program is free software; you can redistribute it and/or modify    * * it under the terms of the GNU General Public License. See the file      * * COPYRIGHT for more information.                                         * *                                                                         * * This program is distributed in the hope that it will be useful,         * * but WITHOUT ANY WARRANTY; without even the implied warranty of          * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           * * GNU General Public License for more details.                            * *                                                                         * * You should have received a copy of the GNU General Public License along * * with this program; if not, write to the Free Software Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                 * *                                                                         * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */package JFlex;import java.io.*;import java.awt.TextArea;/** * In this class all output to the java console is filtered. * * Use the switches verbose, time and DUMP at compile time to determine * the verbosity of JFlex output. There is no switch for * suppressing error messages. verbose and time can be overridden  * by command line paramters. * * Redirects output to a TextArea in GUI mode. * * Counts error and warning messages. * * @author Gerwin Klein * @version JFlex 1.4.2, $Revision: 358 $, $Date: 2008-05-27 16:28:29 +1000 (Tue, 27 May 2008) $ */public final class Out {  /** platform dependent newline sequence */  public static final String NL = System.getProperty("line.separator");    /** count total warnings */  private static int warnings;  /** count total errors */  private static int errors;  /** output device */  private static StdOutWriter out = new StdOutWriter();  /**   * Switches to GUI mode if <code>text</code> is not <code>null</code>   *   * @param text  the message TextArea of the JFlex GUI   */  public static void setGUIMode(TextArea text) {    out.setGUIMode(text);  }    /**   * Sets a new output stream and switches to non-gui mode.   *    * @param stream  the new output stream   */  public static void setOutputStream(OutputStream stream) {    out = new StdOutWriter(stream);    out.setGUIMode(null);  }  /**   * Report time statistic data.   *   * @param message  the message to be printed   * @param time     elapsed time   */  public static void time(ErrorMessages message, Timer time) {    if (Options.time) {      String msg = ErrorMessages.get(message, time.toString());      out.println(msg);    }   }    /**   * Report time statistic data.   *   * @param message  the message to be printed   */  public static void time(String message) {    if (Options.time) {      out.println(message);    }   }  /**   * Report generation progress.   *   * @param message  the message to be printed   */  public static void println(String message) {    if (Options.verbose)       out.println(message);  }  /**   * Report generation progress.   *   * @param message  the message to be printed   * @param data     data to be inserted into the message   */  public static void println(ErrorMessages message, String data) {    if (Options.verbose) {            out.println(ErrorMessages.get(message,data));    }  }  /**   * Report generation progress.   *   * @param message  the message to be printed   * @param data     data to be inserted into the message   */  public static void println(ErrorMessages message, int data) {    if (Options.verbose) {            out.println(ErrorMessages.get(message,data));    }  }  /**   * Report generation progress.   *   * @param message  the message to be printed   */  public static void print(String message) {    if (Options.verbose) out.print(message);  }  /**   * Dump debug information to System.out   *   * Use like this    *   * <code>if (Out.DEBUG) Out.debug(message)</code>   *   * to save performance during normal operation (when DEBUG   * is turned off).   */  public static void debug(String message) {    if (Options.DEBUG) System.out.println(message);   }  /**   * All parts of JFlex, that want to provide dump information   * should use this method for their output.   *   * @message the message to be printed    */  public static void dump(String message) {    if (Options.dump) out.println(message);  }    /**   * All parts of JFlex, that want to report error messages   * should use this method for their output.   *   * @message  the message to be printed   */  private static void err(String message) {    out.println(message);  }      /**   * throws a GeneratorException if there are any errors recorded   */  public static void checkErrors() {    if (errors > 0) throw new GeneratorException();  }    /**   * print error and warning statistics   */  public static void statistics() {        StringBuffer line = new StringBuffer(errors+" error");    if (errors != 1) line.append("s");    line.append(", "+warnings+" warning");    if (warnings != 1) line.append("s");    line.append(".");    err(line.toString());  }  /**   * reset error and warning counters   */  public static void resetCounters() {    errors = 0;    warnings = 0;  }    /**   * print a warning without position information   *   * @param message   the warning message   */    public static void warning(String message) {    warnings++;    err(NL+"Warning : "+message);  }  /**   * print a warning with line information   *   * @param message  code of the warning message   * @param line     the line information   *   * @see ErrorMessages   */  public static void warning(ErrorMessages message, int line) {    warnings++;    String msg = NL+"Warning";    if (line > 0) msg = msg+" in line "+(line+1);    err(msg+": "+ErrorMessages.get(message));  }  /**   * print warning message with location information   *   * @param file     the file the warning is issued for   * @param message  the code of the message to print   * @param line     the line number of the position   * @param column   the column of the position   */  public static void warning(File file, ErrorMessages message, int line, int column) {    String msg = NL+"Warning";    if (file != null) msg += " in file \""+file+"\"";    if (line >= 0) msg = msg+" (line "+(line+1)+")";    try {      err(msg+": "+NL+ErrorMessages.get(message));    }    catch (ArrayIndexOutOfBoundsException e) {      err(msg);    }    warnings++;    if (line >= 0) {      if (column >= 0)        showPosition(file, line, column);      else         showPosition(file, line);    }  }    /**   * print error message (string)   *   * @param message  the message to print   */  public static void error(String message) {    errors++;    err(NL+message);  }  /**   * print error message (code)   *     * @param message  the code of the error message   *   * @see ErrorMessages      */   public static void error(ErrorMessages message) {    errors++;    err(NL+"Error: "+ErrorMessages.get(message) );  }  /**   * print error message with data    *     * @param data     data to insert into the message   * @param message  the code of the error message   *   * @see ErrorMessages      */   public static void error(ErrorMessages message, String data) {    errors++;        err(NL+"Error: "+ ErrorMessages.get(message,data));  }  /**   * IO error message for a file (displays file    * name in parentheses).   *   * @param message  the code of the error message   * @param file     the file it occurred for   */  public static void error(ErrorMessages message, File file) {    errors++;    err(NL+"Error: "+ErrorMessages.get(message)+" ("+file+")");  }  /**   * print error message with location information   *   * @param file     the file the error occurred for   * @param message  the code of the error message to print   * @param line     the line number of error position   * @param column   the column of error position   */  public static void error(File file, ErrorMessages message, int line, int column) {    String msg = NL+"Error";    if (file != null) msg += " in file \""+file+"\"";    if (line >= 0) msg = msg+" (line "+(line+1)+")";    try {      err(msg+": "+NL+ErrorMessages.get(message));    }    catch (ArrayIndexOutOfBoundsException e) {      err(msg);    }    errors++;    if (line >= 0) {      if (column >= 0)        showPosition(file, line, column);      else         showPosition(file, line);    }  }  /**   * prints a line of a file with marked position.   *   * @param file    the file of which to show the line   * @param line    the line to show   * @param column  the column in which to show the marker   */  public static void showPosition(File file, int line, int column) {    try {      String ln = getLine(file, line);      if (ln != null) {        err( ln );        if (column < 0) return;                String t = "^";          for (int i = 0; i < column; i++) t = " "+t;                  err(t);      }    }    catch (IOException e) {      /* silently ignore IO errors, don't show anything */    }  }  /**   * print a line of a file   *   * @param file  the file to show   * @param line  the line number    */  public static void showPosition(File file, int line) {    try {      String ln = getLine(file, line);      if (ln != null) err(ln);    }    catch (IOException e) {      /* silently ignore IO errors, don't show anything */    }  }  /**   * get one line from a file    *   * @param file   the file to read   * @param line   the line number to get   *   * @throw IOException  if any error occurs   */  private static String getLine(File file, int line) throws IOException {    BufferedReader reader = new BufferedReader(new FileReader(file));    String msg = "";    for (int i = 0; i <= line; i++)      msg = reader.readLine();    reader.close();        return msg;  }  /**   * Print system information (e.g. in case of unexpected exceptions)   */  public static void printSystemInfo() {    err("Java version:  "+System.getProperty("java.version"));    err("Runtime name:  "+System.getProperty("java.runtime.name"));    err("Vendor:        "+System.getProperty("java.vendor"));     err("VM version:    "+System.getProperty("java.vm.version"));     err("VM vendor:     "+System.getProperty("java.vm.vendor"));    err("VM name:       "+System.getProperty("java.vm.name"));    err("VM info:       "+System.getProperty("java.vm.info"));    err("OS name:       "+System.getProperty("os.name"));    err("OS arch:       "+System.getProperty("os.arch"));    err("OS version:    "+System.getProperty("os.version"));    err("Encoding:      "+System.getProperty("file.encoding"));    err("JFlex version: "+Main.version);  }  /**   * Request a bug report for an unexpected Exception/Error.   */  public static void requestBugReport(Error e) {    err("An unexpected error occurred. Please send a report of this to");    err("<bugs@jflex.de> and include the following information:");    err("");    printSystemInfo();    err("Exception:");    e.printStackTrace(out);    err("");    err("Please also include a specification (as small as possible)");    err("that triggers this error. You may also want to check at");    err("http://www.jflex.de if there is a newer version available");    err("that doesn't have this problem");    err("");    err("Thanks for your support.");  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -