001 /* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */ 002 /* JavaCCOptions: */ 003 package org.apache.commons.ognl; 004 005 /** Token Manager Error. */ 006 public 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=88836de4775361194d75316d54f0bfad (do not edit this line) */