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.contenttype.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