]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.graphviz/src/org/simantics/graphviz/internal/parser/SimpleCharStream.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.graphviz / src / org / simantics / graphviz / internal / parser / SimpleCharStream.java
diff --git a/bundles/org.simantics.graphviz/src/org/simantics/graphviz/internal/parser/SimpleCharStream.java b/bundles/org.simantics.graphviz/src/org/simantics/graphviz/internal/parser/SimpleCharStream.java
new file mode 100644 (file)
index 0000000..375e91a
--- /dev/null
@@ -0,0 +1,471 @@
+/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 5.0 */\r
+/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */\r
+package org.simantics.graphviz.internal.parser;\r
+\r
+/**\r
+ * An implementation of interface CharStream, where the stream is assumed to\r
+ * contain only ASCII characters (without unicode processing).\r
+ */\r
+\r
+public class SimpleCharStream\r
+{\r
+/** Whether parser is static. */\r
+  public static final boolean staticFlag = false;\r
+  int bufsize;\r
+  int available;\r
+  int tokenBegin;\r
+/** Position in buffer. */\r
+  public int bufpos = -1;\r
+  protected int bufline[];\r
+  protected int bufcolumn[];\r
+\r
+  protected int column = 0;\r
+  protected int line = 1;\r
+\r
+  protected boolean prevCharIsCR = false;\r
+  protected boolean prevCharIsLF = false;\r
+\r
+  protected java.io.Reader inputStream;\r
+\r
+  protected char[] buffer;\r
+  protected int maxNextCharInd = 0;\r
+  protected int inBuf = 0;\r
+  protected int tabSize = 8;\r
+\r
+  protected void setTabSize(int i) { tabSize = i; }\r
+  protected int getTabSize(int i) { return tabSize; }\r
+\r
+\r
+  protected void ExpandBuff(boolean wrapAround)\r
+  {\r
+    char[] newbuffer = new char[bufsize + 2048];\r
+    int newbufline[] = new int[bufsize + 2048];\r
+    int newbufcolumn[] = new int[bufsize + 2048];\r
+\r
+    try\r
+    {\r
+      if (wrapAround)\r
+      {\r
+        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);\r
+        System.arraycopy(buffer, 0, newbuffer, bufsize - tokenBegin, bufpos);\r
+        buffer = newbuffer;\r
+\r
+        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);\r
+        System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);\r
+        bufline = newbufline;\r
+\r
+        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);\r
+        System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);\r
+        bufcolumn = newbufcolumn;\r
+\r
+        maxNextCharInd = (bufpos += (bufsize - tokenBegin));\r
+      }\r
+      else\r
+      {\r
+        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);\r
+        buffer = newbuffer;\r
+\r
+        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);\r
+        bufline = newbufline;\r
+\r
+        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);\r
+        bufcolumn = newbufcolumn;\r
+\r
+        maxNextCharInd = (bufpos -= tokenBegin);\r
+      }\r
+    }\r
+    catch (Throwable t)\r
+    {\r
+      throw new Error(t.getMessage());\r
+    }\r
+\r
+\r
+    bufsize += 2048;\r
+    available = bufsize;\r
+    tokenBegin = 0;\r
+  }\r
+\r
+  protected void FillBuff() throws java.io.IOException\r
+  {\r
+    if (maxNextCharInd == available)\r
+    {\r
+      if (available == bufsize)\r
+      {\r
+        if (tokenBegin > 2048)\r
+        {\r
+          bufpos = maxNextCharInd = 0;\r
+          available = tokenBegin;\r
+        }\r
+        else if (tokenBegin < 0)\r
+          bufpos = maxNextCharInd = 0;\r
+        else\r
+          ExpandBuff(false);\r
+      }\r
+      else if (available > tokenBegin)\r
+        available = bufsize;\r
+      else if ((tokenBegin - available) < 2048)\r
+        ExpandBuff(true);\r
+      else\r
+        available = tokenBegin;\r
+    }\r
+\r
+    int i;\r
+    try {\r
+      if ((i = inputStream.read(buffer, maxNextCharInd, available - maxNextCharInd)) == -1)\r
+      {\r
+        inputStream.close();\r
+        throw new java.io.IOException();\r
+      }\r
+      else\r
+        maxNextCharInd += i;\r
+      return;\r
+    }\r
+    catch(java.io.IOException e) {\r
+      --bufpos;\r
+      backup(0);\r
+      if (tokenBegin == -1)\r
+        tokenBegin = bufpos;\r
+      throw e;\r
+    }\r
+  }\r
+\r
+/** Start. */\r
+  public char BeginToken() throws java.io.IOException\r
+  {\r
+    tokenBegin = -1;\r
+    char c = readChar();\r
+    tokenBegin = bufpos;\r
+\r
+    return c;\r
+  }\r
+\r
+  protected void UpdateLineColumn(char c)\r
+  {\r
+    column++;\r
+\r
+    if (prevCharIsLF)\r
+    {\r
+      prevCharIsLF = false;\r
+      line += (column = 1);\r
+    }\r
+    else if (prevCharIsCR)\r
+    {\r
+      prevCharIsCR = false;\r
+      if (c == '\n')\r
+      {\r
+        prevCharIsLF = true;\r
+      }\r
+      else\r
+        line += (column = 1);\r
+    }\r
+\r
+    switch (c)\r
+    {\r
+      case '\r' :\r
+        prevCharIsCR = true;\r
+        break;\r
+      case '\n' :\r
+        prevCharIsLF = true;\r
+        break;\r
+      case '\t' :\r
+        column--;\r
+        column += (tabSize - (column % tabSize));\r
+        break;\r
+      default :\r
+        break;\r
+    }\r
+\r
+    bufline[bufpos] = line;\r
+    bufcolumn[bufpos] = column;\r
+  }\r
+\r
+/** Read a character. */\r
+  public char readChar() throws java.io.IOException\r
+  {\r
+    if (inBuf > 0)\r
+    {\r
+      --inBuf;\r
+\r
+      if (++bufpos == bufsize)\r
+        bufpos = 0;\r
+\r
+      return buffer[bufpos];\r
+    }\r
+\r
+    if (++bufpos >= maxNextCharInd)\r
+      FillBuff();\r
+\r
+    char c = buffer[bufpos];\r
+\r
+    UpdateLineColumn(c);\r
+    return c;\r
+  }\r
+\r
+  @Deprecated\r
+  /**\r
+   * @deprecated\r
+   * @see #getEndColumn\r
+   */\r
+\r
+  public int getColumn() {\r
+    return bufcolumn[bufpos];\r
+  }\r
+\r
+  @Deprecated\r
+  /**\r
+   * @deprecated\r
+   * @see #getEndLine\r
+   */\r
+\r
+  public int getLine() {\r
+    return bufline[bufpos];\r
+  }\r
+\r
+  /** Get token end column number. */\r
+  public int getEndColumn() {\r
+    return bufcolumn[bufpos];\r
+  }\r
+\r
+  /** Get token end line number. */\r
+  public int getEndLine() {\r
+     return bufline[bufpos];\r
+  }\r
+\r
+  /** Get token beginning column number. */\r
+  public int getBeginColumn() {\r
+    return bufcolumn[tokenBegin];\r
+  }\r
+\r
+  /** Get token beginning line number. */\r
+  public int getBeginLine() {\r
+    return bufline[tokenBegin];\r
+  }\r
+\r
+/** Backup a number of characters. */\r
+  public void backup(int amount) {\r
+\r
+    inBuf += amount;\r
+    if ((bufpos -= amount) < 0)\r
+      bufpos += bufsize;\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.Reader dstream, int startline,\r
+  int startcolumn, int buffersize)\r
+  {\r
+    inputStream = dstream;\r
+    line = startline;\r
+    column = startcolumn - 1;\r
+\r
+    available = bufsize = buffersize;\r
+    buffer = new char[buffersize];\r
+    bufline = new int[buffersize];\r
+    bufcolumn = new int[buffersize];\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.Reader dstream, int startline,\r
+                          int startcolumn)\r
+  {\r
+    this(dstream, startline, startcolumn, 4096);\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.Reader dstream)\r
+  {\r
+    this(dstream, 1, 1, 4096);\r
+  }\r
+\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.Reader dstream, int startline,\r
+  int startcolumn, int buffersize)\r
+  {\r
+    inputStream = dstream;\r
+    line = startline;\r
+    column = startcolumn - 1;\r
+\r
+    if (buffer == null || buffersize != buffer.length)\r
+    {\r
+      available = bufsize = buffersize;\r
+      buffer = new char[buffersize];\r
+      bufline = new int[buffersize];\r
+      bufcolumn = new int[buffersize];\r
+    }\r
+    prevCharIsLF = prevCharIsCR = false;\r
+    tokenBegin = inBuf = maxNextCharInd = 0;\r
+    bufpos = -1;\r
+  }\r
+\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.Reader dstream, int startline,\r
+                     int startcolumn)\r
+  {\r
+    ReInit(dstream, startline, startcolumn, 4096);\r
+  }\r
+\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.Reader dstream)\r
+  {\r
+    ReInit(dstream, 1, 1, 4096);\r
+  }\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,\r
+  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException\r
+  {\r
+    this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.InputStream dstream, int startline,\r
+  int startcolumn, int buffersize)\r
+  {\r
+    this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,\r
+                          int startcolumn) throws java.io.UnsupportedEncodingException\r
+  {\r
+    this(dstream, encoding, startline, startcolumn, 4096);\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.InputStream dstream, int startline,\r
+                          int startcolumn)\r
+  {\r
+    this(dstream, startline, startcolumn, 4096);\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException\r
+  {\r
+    this(dstream, encoding, 1, 1, 4096);\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.InputStream dstream)\r
+  {\r
+    this(dstream, 1, 1, 4096);\r
+  }\r
+\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.InputStream dstream, String encoding, int startline,\r
+                          int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException\r
+  {\r
+    ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);\r
+  }\r
+\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.InputStream dstream, int startline,\r
+                          int startcolumn, int buffersize)\r
+  {\r
+    ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);\r
+  }\r
+\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException\r
+  {\r
+    ReInit(dstream, encoding, 1, 1, 4096);\r
+  }\r
+\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.InputStream dstream)\r
+  {\r
+    ReInit(dstream, 1, 1, 4096);\r
+  }\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.InputStream dstream, String encoding, int startline,\r
+                     int startcolumn) throws java.io.UnsupportedEncodingException\r
+  {\r
+    ReInit(dstream, encoding, startline, startcolumn, 4096);\r
+  }\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.InputStream dstream, int startline,\r
+                     int startcolumn)\r
+  {\r
+    ReInit(dstream, startline, startcolumn, 4096);\r
+  }\r
+  /** Get token literal value. */\r
+  public String GetImage()\r
+  {\r
+    if (bufpos >= tokenBegin)\r
+      return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);\r
+    else\r
+      return new String(buffer, tokenBegin, bufsize - tokenBegin) +\r
+                            new String(buffer, 0, bufpos + 1);\r
+  }\r
+\r
+  /** Get the suffix. */\r
+  public char[] GetSuffix(int len)\r
+  {\r
+    char[] ret = new char[len];\r
+\r
+    if ((bufpos + 1) >= len)\r
+      System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);\r
+    else\r
+    {\r
+      System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,\r
+                                                        len - bufpos - 1);\r
+      System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);\r
+    }\r
+\r
+    return ret;\r
+  }\r
+\r
+  /** Reset buffer when finished. */\r
+  public void Done()\r
+  {\r
+    buffer = null;\r
+    bufline = null;\r
+    bufcolumn = null;\r
+  }\r
+\r
+  /**\r
+   * Method to adjust line and column numbers for the start of a token.\r
+   */\r
+  public void adjustBeginLineColumn(int newLine, int newCol)\r
+  {\r
+    int start = tokenBegin;\r
+    int len;\r
+\r
+    if (bufpos >= tokenBegin)\r
+    {\r
+      len = bufpos - tokenBegin + inBuf + 1;\r
+    }\r
+    else\r
+    {\r
+      len = bufsize - tokenBegin + bufpos + 1 + inBuf;\r
+    }\r
+\r
+    int i = 0, j = 0, k = 0;\r
+    int nextColDiff = 0, columnDiff = 0;\r
+\r
+    while (i < len && bufline[j = start % bufsize] == bufline[k = ++start % bufsize])\r
+    {\r
+      bufline[j] = newLine;\r
+      nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];\r
+      bufcolumn[j] = newCol + columnDiff;\r
+      columnDiff = nextColDiff;\r
+      i++;\r
+    }\r
+\r
+    if (i < len)\r
+    {\r
+      bufline[j] = newLine++;\r
+      bufcolumn[j] = newCol + columnDiff;\r
+\r
+      while (i++ < len)\r
+      {\r
+        if (bufline[j = start % bufsize] != bufline[++start % bufsize])\r
+          bufline[j] = newLine++;\r
+        else\r
+          bufline[j] = newLine;\r
+      }\r
+    }\r
+\r
+    line = bufline[j];\r
+    column = bufcolumn[j];\r
+  }\r
+\r
+}\r
+/* JavaCC - OriginalChecksum=2ebb0dd14a7b91f73d64828e19480e88 (do not edit this line) */\r