View Javadoc
1 /* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 2.1 */ 2 package com.codestreet.selector.parser; 3 4 public class TokenMgrError extends Error 5 { 6 /* 7 * Ordinals for various reasons why an Error of this type can be thrown. 8 */ 9 10 /*** 11 * Lexical error occured. 12 */ 13 static final int LEXICAL_ERROR = 0; 14 15 /*** 16 * An attempt wass made to create a second instance of a static token manager. 17 */ 18 static final int STATIC_LEXER_ERROR = 1; 19 20 /*** 21 * Tried to change to an invalid lexical state. 22 */ 23 static final int INVALID_LEXICAL_STATE = 2; 24 25 /*** 26 * Detected (and bailed out of) an infinite loop in the token manager. 27 */ 28 static final int LOOP_DETECTED = 3; 29 30 /*** 31 * Indicates the reason why the exception is thrown. It will have 32 * one of the above 4 values. 33 */ 34 int errorCode; 35 36 /*** 37 * Replaces unprintable characters by their espaced (or unicode escaped) 38 * equivalents in the given string 39 */ 40 protected static final String addEscapes(String str) { 41 StringBuffer retval = new StringBuffer(); 42 char ch; 43 for (int i = 0; i < str.length(); i++) { 44 switch (str.charAt(i)) 45 { 46 case 0 : 47 continue; 48 case '\b': 49 retval.append("//b"); 50 continue; 51 case '\t': 52 retval.append("//t"); 53 continue; 54 case '\n': 55 retval.append("//n"); 56 continue; 57 case '\f': 58 retval.append("//f"); 59 continue; 60 case '\r': 61 retval.append("//r"); 62 continue; 63 case '\"': 64 retval.append("//\""); 65 continue; 66 case '\'': 67 retval.append("//\'"); 68 continue; 69 case '//': 70 retval.append("////"); 71 continue; 72 default: 73 if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { 74 String s = "0000" + Integer.toString(ch, 16); 75 retval.append("//u" + s.substring(s.length() - 4, s.length())); 76 } else { 77 retval.append(ch); 78 } 79 continue; 80 } 81 } 82 return retval.toString(); 83 } 84 85 /*** 86 * Returns a detailed message for the Error when it is thrown by the 87 * token manager to indicate a lexical error. 88 * Parameters : 89 * EOFSeen : indicates if EOF caused the lexicl error 90 * curLexState : lexical state in which this error occured 91 * errorLine : line number when the error occured 92 * errorColumn : column number when the error occured 93 * errorAfter : prefix that was seen before this error occured 94 * curchar : the offending character 95 * Note: You can customize the lexical error message by modifying this method. 96 */ 97 private static final String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) { 98 return("Lexical error at line " + 99 errorLine + ", column " + 100 errorColumn + ". Encountered: " + 101 (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") + 102 "after : \"" + addEscapes(errorAfter) + "\""); 103 } 104 105 /*** 106 * You can also modify the body of this method to customize your error messages. 107 * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not 108 * of end-users concern, so you can return something like : 109 * 110 * "Internal Error : Please file a bug report .... " 111 * 112 * from this method for such cases in the release version of your parser. 113 */ 114 public String getMessage() { 115 return super.getMessage(); 116 } 117 118 /* 119 * Constructors of various flavors follow. 120 */ 121 122 public TokenMgrError() { 123 } 124 125 public TokenMgrError(String message, int reason) { 126 super(message); 127 errorCode = reason; 128 } 129 130 public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) { 131 this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason); 132 } 133 }

This page was automatically generated by Maven