    001/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */
    002/* JavaCCOptions: */
    003package org.apache.commons.configuration2.plist;
    004
    005/** Token Manager Error. */
    006public class TokenMgrError extends Error
    007{
    008
    009  /**
    010   * The version identifier for this Serializable class.
    011   * Increment only if the <i>serialized</i> form of the
    012   * class changes.
    013   */
    014  private static final long serialVersionUID = 1L;
    015
    016  /*
    017   * Ordinals for various reasons why an Error of this type can be thrown.
    018   */
    019
    020  /**
    021   * Lexical error occurred.
    022   */
    023  static final int LEXICAL_ERROR = 0;
    024
    025  /**
    026   * An attempt was made to create a second instance of a static token manager.
    027   */
    028  static final int STATIC_LEXER_ERROR = 1;
    029
    030  /**
    031   * Tried to change to an invalid lexical state.
    032   */
    033  static final int INVALID_LEXICAL_STATE = 2;
    034
    035  /**
    036   * Detected (and bailed out of) an infinite loop in the token manager.
    037   */
    038  static final int LOOP_DETECTED = 3;
    039
    040  /**
    041   * Indicates the reason why the exception is thrown. It will have
    042   * one of the above 4 values.
    043   */
    044  int errorCode;
    045
    046  /**
    047   * Replaces unprintable characters by their escaped (or unicode escaped)
    048   * equivalents in the given string
    049   */
    050  protected static final String addEscapes(String str) {
    051    StringBuffer retval = new StringBuffer();
    052    char ch;
    053    for (int i = 0; i < str.length(); i++) {
    054      switch (str.charAt(i))
    055      {
    056        case 0 :
    057          continue;
    058        case '\b':
    059          retval.append("\\b");
    060          continue;
    061        case '\t':
    062          retval.append("\\t");
    063          continue;
    064        case '\n':
    065          retval.append("\\n");
    066          continue;
    067        case '\f':
    068          retval.append("\\f");
    069          continue;
    070        case '\r':
    071          retval.append("\\r");
    072          continue;
    073        case '\"':
    074          retval.append("\\\"");
    075          continue;
    076        case '\'':
    077          retval.append("\\\'");
    078          continue;
    079        case '\\':
    080          retval.append("\\\\");
    081          continue;
    082        default:
    083          if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
    084            String s = "0000" + Integer.toString(ch, 16);
    085            retval.append("\\u" + s.substring(s.length() - 4, s.length()));
    086          } else {
    087            retval.append(ch);
    088          }
    089          continue;
    090      }
    091    }
    092    return retval.toString();
    093  }
    094
    095  /**
    096   * Returns a detailed message for the Error when it is thrown by the
    097   * token manager to indicate a lexical error.
    098   * Parameters :
    099   *    EOFSeen     : indicates if EOF caused the lexical error
    100   *    curLexState : lexical state in which this error occurred
    101   *    errorLine   : line number when the error occurred
    102   *    errorColumn : column number when the error occurred
    103   *    errorAfter  : prefix that was seen before this error occurred
    104   *    curchar     : the offending character
    105   * Note: You can customize the lexical error message by modifying this method.
    106   */
    107  protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
    108    return("Lexical error at line " +
    109          errorLine + ", column " +
    110          errorColumn + ".  Encountered: " +
    111          (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
    112          "after : \"" + addEscapes(errorAfter) + "\"");
    113  }
    114
    115  /**
    116   * You can also modify the body of this method to customize your error messages.
    117   * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
    118   * of end-users concern, so you can return something like :
    119   *
    120   *     "Internal Error : Please file a bug report .... "
    121   *
    122   * from this method for such cases in the release version of your parser.
    123   */
    124  public String getMessage() {
    125    return super.getMessage();
    126  }
    127
    128  /*
    129   * Constructors of various flavors follow.
    130   */
    131
    132  /** No arg constructor. */
    133  public TokenMgrError() {
    134  }
    135
    136  /** Constructor with message and reason. */
    137  public TokenMgrError(String message, int reason) {
    138    super(message);
    139    errorCode = reason;
    140  }
    141
    142  /** Full Constructor. */
    143  public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
    144    this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
    145  }
    146}
    147/* JavaCC - OriginalChecksum=c8c7d74231e3823e8d3120c5153d0c87 (do not edit this line) */