137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/* Generated By:JavaCC: Do not edit this line. JavaCharStream.java Version 5.0 */ 237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ 337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/* 437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * 537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * This file is part of Java 1.8 parser and Abstract Syntax Tree. 637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * 737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * Java 1.8 parser and Abstract Syntax Tree is free software: you can redistribute it and/or modify 837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * it under the terms of the GNU Lesser General Public License as published by 937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * the Free Software Foundation, either version 3 of the License, or 1037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * (at your option) any later version. 1137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * 1237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * You should have received a copy of the GNU Lesser General Public License 1337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * along with Java 1.8 parser and Abstract Syntax Tree. If not, see <http://www.gnu.org/licenses/>. 1437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */ 1537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassettipackage com.github.javaparser; 1637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 1737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** 1837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * An implementation of interface CharStream, where the stream is assumed to 1937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * contain only ASCII characters (with java-like unicode escape processing). 2037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */ 2137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 2237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassettipublic 2337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetticlass JavaCharStream 2437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti{ 2537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** Whether parser is static. */ 2637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public static final boolean staticFlag = false; 2737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 2837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti static final int hexval(char c) throws java.io.IOException { 2937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti switch(c) 3037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 3137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '0' : 3237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 0; 3337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '1' : 3437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 1; 3537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '2' : 3637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 2; 3737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '3' : 3837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 3; 3937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '4' : 4037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 4; 4137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '5' : 4237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 5; 4337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '6' : 4437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 6; 4537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '7' : 4637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 7; 4737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '8' : 4837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 8; 4937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '9' : 5037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 9; 5137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 5237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case 'a' : 5337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case 'A' : 5437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 10; 5537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case 'b' : 5637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case 'B' : 5737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 11; 5837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case 'c' : 5937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case 'C' : 6037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 12; 6137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case 'd' : 6237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case 'D' : 6337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 13; 6437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case 'e' : 6537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case 'E' : 6637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 14; 6737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case 'f' : 6837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case 'F' : 6937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return 15; 7037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 7137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 7237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti throw new java.io.IOException(); // Should never come here 7337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 7437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 7537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Position in buffer. */ 7637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public int bufpos = -1; 7737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int bufsize; 7837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int available; 7937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int tokenBegin; 8037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected int bufline[]; 8137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected int bufcolumn[]; 8237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 8337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected int column = 0; 8437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected int line = 1; 8537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 8637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected boolean prevCharIsCR = false; 8737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected boolean prevCharIsLF = false; 8837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 8937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected java.io.Reader inputStream; 9037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 9137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected char[] nextCharBuf; 9237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected char[] buffer; 9337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected int maxNextCharInd = 0; 9437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected int nextCharInd = -1; 9537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected int inBuf = 0; 9637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected int tabSize = 8; 9737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 9837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected void setTabSize(int i) { tabSize = i; } 9937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected int getTabSize(int i) { return tabSize; } 10037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 10137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected void ExpandBuff(boolean wrapAround) 10237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 10337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti char[] newbuffer = new char[bufsize + 2048]; 10437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int newbufline[] = new int[bufsize + 2048]; 10537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int newbufcolumn[] = new int[bufsize + 2048]; 10637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 10737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti try 10837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 10937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (wrapAround) 11037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 11137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin); 11237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti System.arraycopy(buffer, 0, newbuffer, bufsize - tokenBegin, bufpos); 11337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti buffer = newbuffer; 11437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 11537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin); 11637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos); 11737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufline = newbufline; 11837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 11937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin); 12037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos); 12137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufcolumn = newbufcolumn; 12237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 12337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufpos += (bufsize - tokenBegin); 12437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 12537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti else 12637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 12737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin); 12837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti buffer = newbuffer; 12937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 13037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin); 13137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufline = newbufline; 13237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 13337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin); 13437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufcolumn = newbufcolumn; 13537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 13637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufpos -= tokenBegin; 13737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 13837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 13937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti catch (Throwable t) 14037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 14137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti throw new Error(t.getMessage()); 14237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 14337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 14437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti available = (bufsize += 2048); 14537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti tokenBegin = 0; 14637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 14737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 14837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected void FillBuff() throws java.io.IOException 14937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 15037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int i; 15137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (maxNextCharInd == 4096) 15237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti maxNextCharInd = nextCharInd = 0; 15337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 15437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti try { 15537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if ((i = inputStream.read(nextCharBuf, maxNextCharInd, 15637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 4096 - maxNextCharInd)) == -1) 15737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 15837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti inputStream.close(); 15937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti throw new java.io.IOException(); 16037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 16137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti else 16237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti maxNextCharInd += i; 16337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return; 16437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 16537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti catch(java.io.IOException e) { 16637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (bufpos != 0) 16737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 16837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti --bufpos; 16937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti backup(0); 17037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 17137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti else 17237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 17337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufline[bufpos] = line; 17437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufcolumn[bufpos] = column; 17537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 17637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti throw e; 17737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 17837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 17937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 18037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected char ReadByte() throws java.io.IOException 18137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 18237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (++nextCharInd >= maxNextCharInd) 18337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti FillBuff(); 18437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 18537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return nextCharBuf[nextCharInd]; 18637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 18737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 18837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** @return starting character for token. */ 18937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public char BeginToken() throws java.io.IOException 19037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 19137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (inBuf > 0) 19237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 19337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti --inBuf; 19437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 19537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (++bufpos == bufsize) 19637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufpos = 0; 19737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 19837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti tokenBegin = bufpos; 19937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return buffer[bufpos]; 20037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 20137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 20237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti tokenBegin = 0; 20337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufpos = -1; 20437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 20537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return readChar(); 20637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 20737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 20837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected void AdjustBuffSize() 20937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 21037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (available == bufsize) 21137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 21237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (tokenBegin > 2048) 21337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 21437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufpos = 0; 21537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti available = tokenBegin; 21637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 21737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti else 21837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti ExpandBuff(false); 21937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 22037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti else if (available > tokenBegin) 22137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti available = bufsize; 22237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti else if ((tokenBegin - available) < 2048) 22337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti ExpandBuff(true); 22437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti else 22537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti available = tokenBegin; 22637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 22737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 22837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected void UpdateLineColumn(char c) 22937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 23037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti column++; 23137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 23237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (prevCharIsLF) 23337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 23437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti prevCharIsLF = false; 23537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti line += (column = 1); 23637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 23737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti else if (prevCharIsCR) 23837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 23937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti prevCharIsCR = false; 24037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (c == '\n') 24137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 24237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti prevCharIsLF = true; 24337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 24437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti else 24537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti line += (column = 1); 24637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 24737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 24837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti switch (c) 24937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 25037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '\r' : 25137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti prevCharIsCR = true; 25237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti break; 25337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '\n' : 25437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti prevCharIsLF = true; 25537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti break; 25637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '\t' : 25737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti column--; 25837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti column += (tabSize - (column % tabSize)); 25937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti break; 26037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti default : 26137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti break; 26237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 26337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 26437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufline[bufpos] = line; 26537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufcolumn[bufpos] = column; 26637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 26737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 26837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Read a character. */ 26937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public char readChar() throws java.io.IOException 27037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 27137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (inBuf > 0) 27237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 27337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti --inBuf; 27437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 27537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (++bufpos == bufsize) 27637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufpos = 0; 27737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 27837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return buffer[bufpos]; 27937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 28037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 28137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti char c; 28237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 28337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (++bufpos == available) 28437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti AdjustBuffSize(); 28537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 28637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if ((buffer[bufpos] = c = ReadByte()) == '\\') 28737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 28837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti UpdateLineColumn(c); 28937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 29037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int backSlashCnt = 1; 29137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 29237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti for (;;) // Read all the backslashes 29337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 29437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (++bufpos == available) 29537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti AdjustBuffSize(); 29637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 29737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti try 29837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 29937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if ((buffer[bufpos] = c = ReadByte()) != '\\') 30037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 30137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti UpdateLineColumn(c); 30237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti // found a non-backslash char. 30337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if ((c == 'u') && ((backSlashCnt & 1) == 1)) 30437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 30537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (--bufpos < 0) 30637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufpos = bufsize - 1; 30737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 30837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti break; 30937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 31037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 31137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti backup(backSlashCnt); 31237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return '\\'; 31337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 31437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 31537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti catch(java.io.IOException e) 31637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 31737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti // We are returning one backslash so we should only backup (count-1) 31837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (backSlashCnt > 1) 31937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti backup(backSlashCnt-1); 32037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 32137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return '\\'; 32237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 32337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 32437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti UpdateLineColumn(c); 32537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti backSlashCnt++; 32637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 32737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 32837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti // Here, we have seen an odd number of backslash's followed by a 'u' 32937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti try 33037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 33137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti while ((c = ReadByte()) == 'u') 33237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti ++column; 33337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 33437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti buffer[bufpos] = c = (char)(hexval(c) << 12 | 33537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti hexval(ReadByte()) << 8 | 33637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti hexval(ReadByte()) << 4 | 33737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti hexval(ReadByte())); 33837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 33937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti column += 4; 34037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 34137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti catch(java.io.IOException e) 34237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 34337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti throw new Error("Invalid escape character at line " + line + 34437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti " column " + column + "."); 34537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 34637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 34737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (backSlashCnt == 1) 34837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return c; 34937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti else 35037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 35137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti backup(backSlashCnt - 1); 35237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return '\\'; 35337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 35437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 35537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti else 35637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 35737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti UpdateLineColumn(c); 35837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return c; 35937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 36037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 36137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 36237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti @Deprecated 36337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** 36437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * @deprecated 36537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * @see #getEndColumn 36637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */ 36737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public int getColumn() { 36837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return bufcolumn[bufpos]; 36937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 37037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 37137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti @Deprecated 37237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** 37337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * @deprecated 37437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * @see #getEndLine 37537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */ 37637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public int getLine() { 37737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return bufline[bufpos]; 37837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 37937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 38037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Get end column. */ 38137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public int getEndColumn() { 38237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return bufcolumn[bufpos]; 38337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 38437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 38537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Get end line. */ 38637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public int getEndLine() { 38737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return bufline[bufpos]; 38837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 38937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 39037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** @return column of token start */ 39137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public int getBeginColumn() { 39237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return bufcolumn[tokenBegin]; 39337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 39437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 39537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** @return line number of token start */ 39637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public int getBeginLine() { 39737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return bufline[tokenBegin]; 39837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 39937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 40037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Retreat. */ 40137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public void backup(int amount) { 40237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 40337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti inBuf += amount; 40437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if ((bufpos -= amount) < 0) 40537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufpos += bufsize; 40637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 40737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 40837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Constructor. */ 40937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public JavaCharStream(java.io.Reader dstream, 41037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int startline, int startcolumn, int buffersize) 41137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 41237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti inputStream = dstream; 41337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti line = startline; 41437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti column = startcolumn - 1; 41537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 41637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti available = bufsize = buffersize; 41737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti buffer = new char[buffersize]; 41837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufline = new int[buffersize]; 41937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufcolumn = new int[buffersize]; 42037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti nextCharBuf = new char[4096]; 42137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 42237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 42337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Constructor. */ 42437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public JavaCharStream(java.io.Reader dstream, 42537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int startline, int startcolumn) 42637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 42737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti this(dstream, startline, startcolumn, 4096); 42837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 42937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 43037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Constructor. */ 43137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public JavaCharStream(java.io.Reader dstream) 43237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 43337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti this(dstream, 1, 1, 4096); 43437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 43537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Reinitialise. */ 43637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public void ReInit(java.io.Reader dstream, 43737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int startline, int startcolumn, int buffersize) 43837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 43937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti inputStream = dstream; 44037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti line = startline; 44137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti column = startcolumn - 1; 44237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 44337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (buffer == null || buffersize != buffer.length) 44437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 44537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti available = bufsize = buffersize; 44637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti buffer = new char[buffersize]; 44737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufline = new int[buffersize]; 44837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufcolumn = new int[buffersize]; 44937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti nextCharBuf = new char[4096]; 45037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 45137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti prevCharIsLF = prevCharIsCR = false; 45237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti tokenBegin = inBuf = maxNextCharInd = 0; 45337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti nextCharInd = bufpos = -1; 45437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 45537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 45637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Reinitialise. */ 45737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public void ReInit(java.io.Reader dstream, 45837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int startline, int startcolumn) 45937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 46037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti ReInit(dstream, startline, startcolumn, 4096); 46137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 46237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 46337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Reinitialise. */ 46437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public void ReInit(java.io.Reader dstream) 46537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 46637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti ReInit(dstream, 1, 1, 4096); 46737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 46837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Constructor. */ 46937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public JavaCharStream(java.io.InputStream dstream, String encoding, int startline, 47037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException 47137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 47237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize); 47337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 47437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 47537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Constructor. */ 47637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public JavaCharStream(java.io.InputStream dstream, int startline, 47737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int startcolumn, int buffersize) 47837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 47937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096); 48037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 48137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 48237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Constructor. */ 48337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public JavaCharStream(java.io.InputStream dstream, String encoding, int startline, 48437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int startcolumn) throws java.io.UnsupportedEncodingException 48537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 48637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti this(dstream, encoding, startline, startcolumn, 4096); 48737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 48837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 48937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Constructor. */ 49037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public JavaCharStream(java.io.InputStream dstream, int startline, 49137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int startcolumn) 49237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 49337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti this(dstream, startline, startcolumn, 4096); 49437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 49537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 49637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Constructor. */ 49737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public JavaCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException 49837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 49937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti this(dstream, encoding, 1, 1, 4096); 50037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 50137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 50237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Constructor. */ 50337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public JavaCharStream(java.io.InputStream dstream) 50437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 50537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti this(dstream, 1, 1, 4096); 50637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 50737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 50837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Reinitialise. */ 50937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public void ReInit(java.io.InputStream dstream, String encoding, int startline, 51037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException 51137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 51237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize); 51337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 51437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 51537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Reinitialise. */ 51637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public void ReInit(java.io.InputStream dstream, int startline, 51737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int startcolumn, int buffersize) 51837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 51937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize); 52037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 52137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Reinitialise. */ 52237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public void ReInit(java.io.InputStream dstream, String encoding, int startline, 52337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int startcolumn) throws java.io.UnsupportedEncodingException 52437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 52537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti ReInit(dstream, encoding, startline, startcolumn, 4096); 52637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 52737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Reinitialise. */ 52837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public void ReInit(java.io.InputStream dstream, int startline, 52937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int startcolumn) 53037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 53137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti ReInit(dstream, startline, startcolumn, 4096); 53237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 53337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Reinitialise. */ 53437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException 53537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 53637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti ReInit(dstream, encoding, 1, 1, 4096); 53737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 53837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 53937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/** Reinitialise. */ 54037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public void ReInit(java.io.InputStream dstream) 54137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 54237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti ReInit(dstream, 1, 1, 4096); 54337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 54437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 54537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** @return token image as String */ 54637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public String GetImage() 54737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 54837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (bufpos >= tokenBegin) 54937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return new String(buffer, tokenBegin, bufpos - tokenBegin + 1); 55037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti else 55137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return new String(buffer, tokenBegin, bufsize - tokenBegin) + 55237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti new String(buffer, 0, bufpos + 1); 55337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 55437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 55537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** @return suffix */ 55637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public char[] GetSuffix(int len) 55737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 55837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti char[] ret = new char[len]; 55937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 56037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if ((bufpos + 1) >= len) 56137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti System.arraycopy(buffer, bufpos - len + 1, ret, 0, len); 56237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti else 56337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 56437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0, 56537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti len - bufpos - 1); 56637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1); 56737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 56837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 56937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return ret; 57037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 57137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 57237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** Set buffers back to null when finished. */ 57337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public void Done() 57437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 57537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti nextCharBuf = null; 57637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti buffer = null; 57737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufline = null; 57837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufcolumn = null; 57937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 58037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 58137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** 58237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * Method to adjust line and column numbers for the start of a token. 58337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */ 58437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public void adjustBeginLineColumn(int newLine, int newCol) 58537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 58637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int start = tokenBegin; 58737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int len; 58837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 58937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (bufpos >= tokenBegin) 59037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 59137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti len = bufpos - tokenBegin + inBuf + 1; 59237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 59337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti else 59437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 59537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti len = bufsize - tokenBegin + bufpos + 1 + inBuf; 59637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 59737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 59837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int i = 0, j = 0, k = 0; 59937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int nextColDiff = 0, columnDiff = 0; 60037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 60137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti while (i < len && bufline[j = start % bufsize] == bufline[k = ++start % bufsize]) 60237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 60337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufline[j] = newLine; 60437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j]; 60537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufcolumn[j] = newCol + columnDiff; 60637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti columnDiff = nextColDiff; 60737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti i++; 60837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 60937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 61037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (i < len) 61137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 61237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufline[j] = newLine++; 61337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufcolumn[j] = newCol + columnDiff; 61437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 61537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti while (i++ < len) 61637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 61737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (bufline[j = start % bufsize] != bufline[++start % bufsize]) 61837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufline[j] = newLine++; 61937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti else 62037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti bufline[j] = newLine; 62137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 62237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 62337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 62437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti line = bufline[j]; 62537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti column = bufcolumn[j]; 62637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 62737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 62837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti} 62937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/* JavaCC - OriginalChecksum=5111a95355f2f1cc405246f828703097 (do not edit this line) */ 630