14ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
24fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*
34fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *  Copyright 2004 the mime4j project
44fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *
54fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *  Licensed under the Apache License, Version 2.0 (the "License");
64fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *  you may not use this file except in compliance with the License.
74fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *  You may obtain a copy of the License at
84fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *
94fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *      http://www.apache.org/licenses/LICENSE-2.0
104fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *
114fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *  Unless required by applicable law or agreed to in writing, software
124fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *  distributed under the License is distributed on an "AS IS" BASIS,
134fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
144fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *  See the License for the specific language governing permissions and
154fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy *  limitations under the License.
164ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */
174ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereirapackage org.apache.james.mime4j.field.datetime.parser;
184ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
194ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereirapublic class TokenMgrError extends Error
204ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{
214ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   /*
224ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * Ordinals for various reasons why an Error of this type can be thrown.
234ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    */
244ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
254ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   /**
264ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * Lexical error occured.
274ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    */
284ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   static final int LEXICAL_ERROR = 0;
294ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
304ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   /**
314ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * An attempt wass made to create a second instance of a static token manager.
324ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    */
334ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   static final int STATIC_LEXER_ERROR = 1;
344ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
354ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   /**
364ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * Tried to change to an invalid lexical state.
374ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    */
384ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   static final int INVALID_LEXICAL_STATE = 2;
394ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
404ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   /**
414ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * Detected (and bailed out of) an infinite loop in the token manager.
424ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    */
434ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   static final int LOOP_DETECTED = 3;
444ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
454ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   /**
464ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * Indicates the reason why the exception is thrown. It will have
474ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * one of the above 4 values.
484ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    */
494ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   int errorCode;
504ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
514ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   /**
524ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * Replaces unprintable characters by their espaced (or unicode escaped)
534ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * equivalents in the given string
544ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    */
554ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   protected static final String addEscapes(String str) {
564ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira      StringBuffer retval = new StringBuffer();
574ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira      char ch;
584ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira      for (int i = 0; i < str.length(); i++) {
594ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira        switch (str.charAt(i))
604ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira        {
614ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira           case 0 :
624ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              continue;
634ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira           case '\b':
644ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              retval.append("\\b");
654ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              continue;
664ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira           case '\t':
674ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              retval.append("\\t");
684ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              continue;
694ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira           case '\n':
704ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              retval.append("\\n");
714ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              continue;
724ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira           case '\f':
734ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              retval.append("\\f");
744ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              continue;
754ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira           case '\r':
764ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              retval.append("\\r");
774ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              continue;
784ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira           case '\"':
794ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              retval.append("\\\"");
804ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              continue;
814ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira           case '\'':
824ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              retval.append("\\\'");
834ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              continue;
844ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira           case '\\':
854ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              retval.append("\\\\");
864ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              continue;
874ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira           default:
884ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
894ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira                 String s = "0000" + Integer.toString(ch, 16);
904ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
914ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              } else {
924ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira                 retval.append(ch);
934ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              }
944ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira              continue;
954ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira        }
964ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira      }
974ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira      return retval.toString();
984ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   }
994ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
1004ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   /**
1014ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * Returns a detailed message for the Error when it is thrown by the
1024ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * token manager to indicate a lexical error.
1034ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * Parameters :
1044ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    *    EOFSeen     : indicates if EOF caused the lexicl error
1054ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    *    curLexState : lexical state in which this error occured
1064ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    *    errorLine   : line number when the error occured
1074ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    *    errorColumn : column number when the error occured
1084ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    *    errorAfter  : prefix that was seen before this error occured
1094ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    *    curchar     : the offending character
1104ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * Note: You can customize the lexical error message by modifying this method.
1114ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    */
1124ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
1134ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira      return("Lexical error at line " +
1144ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira           errorLine + ", column " +
1154ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira           errorColumn + ".  Encountered: " +
1164ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira           (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
1174ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira           "after : \"" + addEscapes(errorAfter) + "\"");
1184ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   }
1194ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
1204ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   /**
1214ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * You can also modify the body of this method to customize your error messages.
1224ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
1234ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * of end-users concern, so you can return something like :
1244ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    *
1254ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    *     "Internal Error : Please file a bug report .... "
1264ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    *
1274ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * from this method for such cases in the release version of your parser.
1284ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    */
1294ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   public String getMessage() {
1304ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira      return super.getMessage();
1314ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   }
1324ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
1334ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   /*
1344ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    * Constructors of various flavors follow.
1354ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira    */
1364ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
1374ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   public TokenMgrError() {
1384ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   }
1394ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
1404ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   public TokenMgrError(String message, int reason) {
1414ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira      super(message);
1424ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira      errorCode = reason;
1434ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   }
1444ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira
1454ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
1464ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira      this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
1474ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira   }
1484ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira}
149