001/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 6.1 */ 002/* JavaCCOptions: */ 003package org.eclipse.golo.compiler.parser; 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 public 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 public static final int STATIC_LEXER_ERROR = 1; 029 030 /** 031 * Tried to change to an invalid lexical state. 032 */ 033 public static final int INVALID_LEXICAL_STATE = 2; 034 035 /** 036 * Detected (and bailed out of) an infinite loop in the token manager. 037 */ 038 public 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 '\b': 057 retval.append("\\b"); 058 continue; 059 case '\t': 060 retval.append("\\t"); 061 continue; 062 case '\n': 063 retval.append("\\n"); 064 continue; 065 case '\f': 066 retval.append("\\f"); 067 continue; 068 case '\r': 069 retval.append("\\r"); 070 continue; 071 case '\"': 072 retval.append("\\\""); 073 continue; 074 case '\'': 075 retval.append("\\\'"); 076 continue; 077 case '\\': 078 retval.append("\\\\"); 079 continue; 080 default: 081 if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { 082 String s = "0000" + Integer.toString(ch, 16); 083 retval.append("\\u" + s.substring(s.length() - 4, s.length())); 084 } else { 085 retval.append(ch); 086 } 087 continue; 088 } 089 } 090 return retval.toString(); 091 } 092 093 /** 094 * Returns a detailed message for the Error when it is thrown by the 095 * token manager to indicate a lexical error. 096 * Parameters : 097 * EOFSeen : indicates if EOF caused the lexical error 098 * curLexState : lexical state in which this error occurred 099 * errorLine : line number when the error occurred 100 * errorColumn : column number when the error occurred 101 * errorAfter : prefix that was seen before this error occurred 102 * curchar : the offending character 103 * Note: You can customize the lexical error message by modifying this method. 104 */ 105 protected static String LexicalErr(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, int curChar) { 106 char curChar1 = (char)curChar; 107 return("Lexical error at line " + 108 errorLine + ", column " + 109 errorColumn + ". Encountered: " + 110 (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar1)) + "\"") + " (" + (int)curChar + "), ") + 111 "after : \"" + addEscapes(errorAfter) + "\""); 112 } 113 114 /** 115 * You can also modify the body of this method to customize your error messages. 116 * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not 117 * of end-users concern, so you can return something like : 118 * 119 * "Internal Error : Please file a bug report .... " 120 * 121 * from this method for such cases in the release version of your parser. 122 */ 123 public String getMessage() { 124 return super.getMessage(); 125 } 126 127 /* 128 * Constructors of various flavors follow. 129 */ 130 131 /** No arg constructor. */ 132 public TokenMgrError() { 133 } 134 135 /** Constructor with message and reason. */ 136 public TokenMgrError(String message, int reason) { 137 super(message); 138 errorCode = reason; 139 } 140 141 /** Full Constructor. */ 142 public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, int curChar, int reason) { 143 this(LexicalErr(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason); 144 } 145} 146/* JavaCC - OriginalChecksum=8a8140e09bf566c929495e8d5b2723f3 (do not edit this line) */