]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.graphviz/src/org/simantics/graphviz/internal/parser/ParseException.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.graphviz / src / org / simantics / graphviz / internal / parser / ParseException.java
diff --git a/bundles/org.simantics.graphviz/src/org/simantics/graphviz/internal/parser/ParseException.java b/bundles/org.simantics.graphviz/src/org/simantics/graphviz/internal/parser/ParseException.java
new file mode 100644 (file)
index 0000000..b01a183
--- /dev/null
@@ -0,0 +1,187 @@
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */\r
+/* JavaCCOptions:KEEP_LINE_COL=null */\r
+package org.simantics.graphviz.internal.parser;\r
+\r
+/**\r
+ * This exception is thrown when parse errors are encountered.\r
+ * You can explicitly create objects of this exception type by\r
+ * calling the method generateParseException in the generated\r
+ * parser.\r
+ *\r
+ * You can modify this class to customize your error reporting\r
+ * mechanisms so long as you retain the public fields.\r
+ */\r
+public class ParseException extends Exception {\r
+\r
+  /**\r
+   * The version identifier for this Serializable class.\r
+   * Increment only if the <i>serialized</i> form of the\r
+   * class changes.\r
+   */\r
+  private static final long serialVersionUID = 1L;\r
+\r
+  /**\r
+   * This constructor is used by the method "generateParseException"\r
+   * in the generated parser.  Calling this constructor generates\r
+   * a new object of this type with the fields "currentToken",\r
+   * "expectedTokenSequences", and "tokenImage" set.\r
+   */\r
+  public ParseException(Token currentTokenVal,\r
+                        int[][] expectedTokenSequencesVal,\r
+                        String[] tokenImageVal\r
+                       )\r
+  {\r
+    super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal));\r
+    currentToken = currentTokenVal;\r
+    expectedTokenSequences = expectedTokenSequencesVal;\r
+    tokenImage = tokenImageVal;\r
+  }\r
+\r
+  /**\r
+   * The following constructors are for use by you for whatever\r
+   * purpose you can think of.  Constructing the exception in this\r
+   * manner makes the exception behave in the normal way - i.e., as\r
+   * documented in the class "Throwable".  The fields "errorToken",\r
+   * "expectedTokenSequences", and "tokenImage" do not contain\r
+   * relevant information.  The JavaCC generated code does not use\r
+   * these constructors.\r
+   */\r
+\r
+  public ParseException() {\r
+    super();\r
+  }\r
+\r
+  /** Constructor with message. */\r
+  public ParseException(String message) {\r
+    super(message);\r
+  }\r
+\r
+\r
+  /**\r
+   * This is the last token that has been consumed successfully.  If\r
+   * this object has been created due to a parse error, the token\r
+   * followng this token will (therefore) be the first error token.\r
+   */\r
+  public Token currentToken;\r
+\r
+  /**\r
+   * Each entry in this array is an array of integers.  Each array\r
+   * of integers represents a sequence of tokens (by their ordinal\r
+   * values) that is expected at this point of the parse.\r
+   */\r
+  public int[][] expectedTokenSequences;\r
+\r
+  /**\r
+   * This is a reference to the "tokenImage" array of the generated\r
+   * parser within which the parse error occurred.  This array is\r
+   * defined in the generated ...Constants interface.\r
+   */\r
+  public String[] tokenImage;\r
+\r
+  /**\r
+   * It uses "currentToken" and "expectedTokenSequences" to generate a parse\r
+   * error message and returns it.  If this object has been created\r
+   * due to a parse error, and you do not catch it (it gets thrown\r
+   * from the parser) the correct error message\r
+   * gets displayed.\r
+   */\r
+  private static String initialise(Token currentToken,\r
+                           int[][] expectedTokenSequences,\r
+                           String[] tokenImage) {\r
+    String eol = System.getProperty("line.separator", "\n");\r
+    StringBuffer expected = new StringBuffer();\r
+    int maxSize = 0;\r
+    for (int i = 0; i < expectedTokenSequences.length; i++) {\r
+      if (maxSize < expectedTokenSequences[i].length) {\r
+        maxSize = expectedTokenSequences[i].length;\r
+      }\r
+      for (int j = 0; j < expectedTokenSequences[i].length; j++) {\r
+        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' ');\r
+      }\r
+      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {\r
+        expected.append("...");\r
+      }\r
+      expected.append(eol).append("    ");\r
+    }\r
+    String retval = "Encountered \"";\r
+    Token tok = currentToken.next;\r
+    for (int i = 0; i < maxSize; i++) {\r
+      if (i != 0) retval += " ";\r
+      if (tok.kind == 0) {\r
+        retval += tokenImage[0];\r
+        break;\r
+      }\r
+      retval += " " + tokenImage[tok.kind];\r
+      retval += " \"";\r
+      retval += add_escapes(tok.image);\r
+      retval += " \"";\r
+      tok = tok.next;\r
+    }\r
+    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;\r
+    retval += "." + eol;\r
+    if (expectedTokenSequences.length == 1) {\r
+      retval += "Was expecting:" + eol + "    ";\r
+    } else {\r
+      retval += "Was expecting one of:" + eol + "    ";\r
+    }\r
+    retval += expected.toString();\r
+    return retval;\r
+  }\r
+\r
+  /**\r
+   * The end of line string for this machine.\r
+   */\r
+  protected String eol = System.getProperty("line.separator", "\n");\r
+\r
+  /**\r
+   * Used to convert raw characters to their escaped version\r
+   * when these raw version cannot be used as part of an ASCII\r
+   * string literal.\r
+   */\r
+  static String add_escapes(String str) {\r
+      StringBuffer retval = new StringBuffer();\r
+      char ch;\r
+      for (int i = 0; i < str.length(); i++) {\r
+        switch (str.charAt(i))\r
+        {\r
+           case 0 :\r
+              continue;\r
+           case '\b':\r
+              retval.append("\\b");\r
+              continue;\r
+           case '\t':\r
+              retval.append("\\t");\r
+              continue;\r
+           case '\n':\r
+              retval.append("\\n");\r
+              continue;\r
+           case '\f':\r
+              retval.append("\\f");\r
+              continue;\r
+           case '\r':\r
+              retval.append("\\r");\r
+              continue;\r
+           case '\"':\r
+              retval.append("\\\"");\r
+              continue;\r
+           case '\'':\r
+              retval.append("\\\'");\r
+              continue;\r
+           case '\\':\r
+              retval.append("\\\\");\r
+              continue;\r
+           default:\r
+              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {\r
+                 String s = "0000" + Integer.toString(ch, 16);\r
+                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));\r
+              } else {\r
+                 retval.append(ch);\r
+              }\r
+              continue;\r
+        }\r
+      }\r
+      return retval.toString();\r
+   }\r
+\r
+}\r
+/* JavaCC - OriginalChecksum=32cb99e372d0c543d869005aedf4515b (do not edit this line) */\r