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