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