From 005fc6225b35925097ba1df329bd31eabefbe3f1 Mon Sep 17 00:00:00 2001 From: gmantele <gmantele@ari.uni-heidelberg.de> Date: Wed, 8 Mar 2017 18:25:33 +0100 Subject: [PATCH] [ADQL] Recompilation of the ADQLParser classes using JavaCC 6.0. Two classes have been modified after compilation: - ADQLParser - a simple cast for one of the automatically generated constructor. - ParseException - the token position has been stored for better syntax error messages. A note has been added at the top comment for both files to highlight the modified parts and how to restore them after re-generation. --- src/adql/parser/.gitignore | 3 - src/adql/parser/ADQLParser.java | 16 +- src/adql/parser/ParseException.java | 27 +- src/adql/parser/ParseException.java.backup | 135 +-- src/adql/parser/SimpleCharStream.java | 19 +- src/adql/parser/SimpleCharStream.java.backup | 869 +++++++++---------- src/adql/parser/Token.java | 6 +- src/adql/parser/Token.java.backup | 237 +++-- src/adql/parser/TokenMgrError.java | 32 +- src/adql/parser/TokenMgrError.java.backup | 134 +-- src/adql/parser/adqlGrammar.jj | 2 +- 11 files changed, 689 insertions(+), 791 deletions(-) delete mode 100644 src/adql/parser/.gitignore diff --git a/src/adql/parser/.gitignore b/src/adql/parser/.gitignore deleted file mode 100644 index 5e75933..0000000 --- a/src/adql/parser/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/ADQLParser.java -/ADQLParserConstants.java -/ADQLParserTokenManager.java diff --git a/src/adql/parser/ADQLParser.java b/src/adql/parser/ADQLParser.java index 5cff60b..40d14d3 100644 --- a/src/adql/parser/ADQLParser.java +++ b/src/adql/parser/ADQLParser.java @@ -1,5 +1,19 @@ /* ADQLParser.java */ -/* Generated By:JavaCC: Do not edit this line. ADQLParser.java */ +/* Generated By:JavaCC: Do not edit this line. ADQLParser.java + * + * Modified by Gregory Mantelet (ARI), March 2017 + * Modification: line 5686, from: + * + * public ADQLParser(java.io.InputStream stream){ + * this(stream, null); + * } + * + * to: + * + * public ADQLParser(java.io.InputStream stream){ + * this(stream, (String)null); + * } + */ package adql.parser; import java.io.FileReader; diff --git a/src/adql/parser/ParseException.java b/src/adql/parser/ParseException.java index fb440e4..108993a 100644 --- a/src/adql/parser/ParseException.java +++ b/src/adql/parser/ParseException.java @@ -1,7 +1,13 @@ -/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */ +/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 6.0 */ /* JavaCCOptions:KEEP_LINE_COL=null * - * Modified by Grégory Mantelet (CDS), on February 2012 + * Modified by Grégory Mantelet (CDS), on March 2017 + * Modification: several small modifications. + * /!\ DO NOT RE-GENERATE THIS FILE /!\ + * In case of re-generation, replace it by + * ParseException.java.backup (but maybe after a diff + * in case of significant modifications have been done + * by a new version of JavaCC). */ package adql.parser; @@ -16,7 +22,6 @@ import adql.query.TextPosition; * You can modify this class to customize your error reporting * mechanisms so long as you retain the public fields. */ -@SuppressWarnings("all") public class ParseException extends Exception { /** @@ -148,23 +153,23 @@ public class ParseException extends Exception { /*String eol = System.getProperty("line.separator", "\n"); StringBuffer expected = new StringBuffer(); int maxSize = 0; - for (int i = 0; i < expectedTokenSequences.length; i++) { - if (maxSize < expectedTokenSequences[i].length) { + for(int i = 0; i < expectedTokenSequences.length; i++){ + if (maxSize < expectedTokenSequences[i].length){ maxSize = expectedTokenSequences[i].length; } - for (int j = 0; j < expectedTokenSequences[i].length; j++) { + for(int j = 0; j < expectedTokenSequences[i].length; j++){ expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' '); } - if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) { + if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0){ expected.append("..."); } expected.append(eol).append(" "); } String retval = "Encountered \""; Token tok = currentToken.next; - for (int i = 0; i < maxSize; i++) { + for(int i = 0; i < maxSize; i++){ if (i != 0) retval += " "; - if (tok.kind == 0) { + if (tok.kind == 0){ retval += tokenImage[0]; break; } @@ -176,9 +181,9 @@ public class ParseException extends Exception { } retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn; retval += "." + eol; - if (expectedTokenSequences.length == 1) { + if (expectedTokenSequences.length == 1){ retval += "Was expecting:" + eol + " "; - } else { + }else{ retval += "Was expecting one of:" + eol + " "; } retval += expected.toString(); diff --git a/src/adql/parser/ParseException.java.backup b/src/adql/parser/ParseException.java.backup index 0a27535..108993a 100644 --- a/src/adql/parser/ParseException.java.backup +++ b/src/adql/parser/ParseException.java.backup @@ -1,5 +1,14 @@ -/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */ -/* JavaCCOptions:KEEP_LINE_COL=null */ +/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 6.0 */ +/* JavaCCOptions:KEEP_LINE_COL=null + * + * Modified by Grégory Mantelet (CDS), on March 2017 + * Modification: several small modifications. + * /!\ DO NOT RE-GENERATE THIS FILE /!\ + * In case of re-generation, replace it by + * ParseException.java.backup (but maybe after a diff + * in case of significant modifications have been done + * by a new version of JavaCC). + */ package adql.parser; import adql.query.TextPosition; @@ -13,7 +22,6 @@ import adql.query.TextPosition; * You can modify this class to customize your error reporting * mechanisms so long as you retain the public fields. */ -@SuppressWarnings("all") public class ParseException extends Exception { /** @@ -29,11 +37,7 @@ public class ParseException extends Exception { * a new object of this type with the fields "currentToken", * "expectedTokenSequences", and "tokenImage" set. */ - public ParseException(Token currentTokenVal, - int[][] expectedTokenSequencesVal, - String[] tokenImageVal - ) - { + public ParseException(Token currentTokenVal, int[][] expectedTokenSequencesVal, String[] tokenImageVal){ super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal)); currentToken = currentTokenVal; expectedTokenSequences = expectedTokenSequencesVal; @@ -52,12 +56,12 @@ public class ParseException extends Exception { * these constructors. */ - public ParseException() { + public ParseException(){ super(); } /** Constructor with message. */ - public ParseException(String message) { + public ParseException(String message){ super(message); } @@ -66,7 +70,6 @@ public class ParseException extends Exception { position = errorPosition; } - /** * This is the last token that has been consumed successfully. If * this object has been created due to a parse error, the token @@ -107,16 +110,16 @@ public class ParseException extends Exception { * from the parser) the correct error message * gets displayed. */ - private static String initialise(Token currentToken, int[][] expectedTokenSequences, String[] tokenImage) { + private static String initialise(Token currentToken, int[][] expectedTokenSequences, String[] tokenImage){ int maxSize = 0; // Build the list of expected tokens: StringBuffer expected = new StringBuffer(); - for (int i = 0; i < expectedTokenSequences.length; i++) { - if (maxSize < expectedTokenSequences[i].length) { + for(int i = 0; i < expectedTokenSequences.length; i++){ + if (maxSize < expectedTokenSequences[i].length){ maxSize = expectedTokenSequences[i].length; } - for (int j = 0; j < expectedTokenSequences[i].length; j++) { + for(int j = 0; j < expectedTokenSequences[i].length; j++){ expected.append(tokenImage[expectedTokenSequences[i][j]]); } expected.append(" "); @@ -126,9 +129,10 @@ public class ParseException extends Exception { StringBuffer msg = new StringBuffer(); msg.append(" Encountered \""); Token tok = currentToken.next; - for (int i = 0; i < maxSize; i++) { - if (i != 0) msg.append(' '); - if (tok.kind == 0) { + for(int i = 0; i < maxSize; i++){ + if (i != 0) + msg.append(' '); + if (tok.kind == 0){ msg.append(tokenImage[0]); break; } @@ -138,9 +142,9 @@ public class ParseException extends Exception { msg.append("\"."); // Append the expected tokens list: - if (expectedTokenSequences.length == 1) { + if (expectedTokenSequences.length == 1){ msg.append(" Was expecting: "); - } else { + }else{ msg.append(" Was expecting one of: "); } msg.append(expected); @@ -149,23 +153,23 @@ public class ParseException extends Exception { /*String eol = System.getProperty("line.separator", "\n"); StringBuffer expected = new StringBuffer(); int maxSize = 0; - for (int i = 0; i < expectedTokenSequences.length; i++) { - if (maxSize < expectedTokenSequences[i].length) { + for(int i = 0; i < expectedTokenSequences.length; i++){ + if (maxSize < expectedTokenSequences[i].length){ maxSize = expectedTokenSequences[i].length; } - for (int j = 0; j < expectedTokenSequences[i].length; j++) { + for(int j = 0; j < expectedTokenSequences[i].length; j++){ expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' '); } - if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) { + if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0){ expected.append("..."); } expected.append(eol).append(" "); } String retval = "Encountered \""; Token tok = currentToken.next; - for (int i = 0; i < maxSize; i++) { + for(int i = 0; i < maxSize; i++){ if (i != 0) retval += " "; - if (tok.kind == 0) { + if (tok.kind == 0){ retval += tokenImage[0]; break; } @@ -177,9 +181,9 @@ public class ParseException extends Exception { } retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn; retval += "." + eol; - if (expectedTokenSequences.length == 1) { + if (expectedTokenSequences.length == 1){ retval += "Was expecting:" + eol + " "; - } else { + }else{ retval += "Was expecting one of:" + eol + " "; } retval += expected.toString(); @@ -196,46 +200,45 @@ public class ParseException extends Exception { * when these raw version cannot be used as part of an ASCII * string literal. */ - static String add_escapes(String str) { + static String add_escapes(String str){ StringBuffer retval = new StringBuffer(); char ch; - for (int i = 0; i < str.length(); i++) { - switch (str.charAt(i)) - { - case 0 : - continue; - case '\b': - retval.append("\\b"); - continue; - case '\t': - retval.append("\\t"); - continue; - case '\n': - retval.append("\\n"); - continue; - case '\f': - retval.append("\\f"); - continue; - case '\r': - retval.append("\\r"); - continue; - case '\"': - retval.append("\\\""); - continue; - case '\'': - retval.append("\\\'"); - continue; - case '\\': - retval.append("\\\\"); - continue; - default: - if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { - String s = "0000" + Integer.toString(ch, 16); - retval.append("\\u" + s.substring(s.length() - 4, s.length())); - } else { - retval.append(ch); - } - continue; + for(int i = 0; i < str.length(); i++){ + switch(str.charAt(i)){ + case 0: + continue; + case '\b': + retval.append("\\b"); + continue; + case '\t': + retval.append("\\t"); + continue; + case '\n': + retval.append("\\n"); + continue; + case '\f': + retval.append("\\f"); + continue; + case '\r': + retval.append("\\r"); + continue; + case '\"': + retval.append("\\\""); + continue; + case '\'': + retval.append("\\\'"); + continue; + case '\\': + retval.append("\\\\"); + continue; + default: + if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e){ + String s = "0000" + Integer.toString(ch, 16); + retval.append("\\u" + s.substring(s.length() - 4, s.length())); + }else{ + retval.append(ch); + } + continue; } } return retval.toString(); diff --git a/src/adql/parser/SimpleCharStream.java b/src/adql/parser/SimpleCharStream.java index 75e085e..617d73e 100644 --- a/src/adql/parser/SimpleCharStream.java +++ b/src/adql/parser/SimpleCharStream.java @@ -1,4 +1,4 @@ -/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 5.0 */ +/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 6.0 */ /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ package adql.parser; @@ -7,7 +7,6 @@ package adql.parser; * contain only ASCII characters (without unicode processing). */ -@SuppressWarnings("all") public class SimpleCharStream { /** Whether parser is static. */ public static final boolean staticFlag = false; @@ -31,12 +30,13 @@ public class SimpleCharStream { protected int maxNextCharInd = 0; protected int inBuf = 0; protected int tabSize = 8; + protected boolean trackLineColumn = true; - protected void setTabSize(int i){ + public void setTabSize(int i){ tabSize = i; } - protected int getTabSize(int i){ + public int getTabSize(){ return tabSize; } @@ -183,6 +183,7 @@ public class SimpleCharStream { * @deprecated * @see #getEndColumn */ + public int getColumn(){ return bufcolumn[bufpos]; } @@ -192,6 +193,7 @@ public class SimpleCharStream { * @deprecated * @see #getEndLine */ + public int getLine(){ return bufline[bufpos]; } @@ -402,5 +404,12 @@ public class SimpleCharStream { column = bufcolumn[j]; } + boolean getTrackLineColumn(){ + return trackLineColumn; + } + + void setTrackLineColumn(boolean tlc){ + trackLineColumn = tlc; + } } -/* JavaCC - OriginalChecksum=42af0fefd9dd6e805cbddca0a6f8ad37 (do not edit this line) */ +/* JavaCC - OriginalChecksum=25c201ae6a86f1f10a8af29118337505 (do not edit this line) */ diff --git a/src/adql/parser/SimpleCharStream.java.backup b/src/adql/parser/SimpleCharStream.java.backup index 1f6fca7..617d73e 100644 --- a/src/adql/parser/SimpleCharStream.java.backup +++ b/src/adql/parser/SimpleCharStream.java.backup @@ -1,4 +1,4 @@ -/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 5.0 */ +/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 6.0 */ /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ package adql.parser; @@ -7,466 +7,409 @@ package adql.parser; * contain only ASCII characters (without unicode processing). */ -@SuppressWarnings("all") -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]; - } - +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 boolean trackLineColumn = true; + + public void setTabSize(int i){ + tabSize = i; + } + + public int getTabSize(){ + 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]; + } + + boolean getTrackLineColumn(){ + return trackLineColumn; + } + + void setTrackLineColumn(boolean tlc){ + trackLineColumn = tlc; + } } -/* JavaCC - OriginalChecksum=42af0fefd9dd6e805cbddca0a6f8ad37 (do not edit this line) */ +/* JavaCC - OriginalChecksum=25c201ae6a86f1f10a8af29118337505 (do not edit this line) */ diff --git a/src/adql/parser/Token.java b/src/adql/parser/Token.java index dc75a77..4aa2913 100644 --- a/src/adql/parser/Token.java +++ b/src/adql/parser/Token.java @@ -1,4 +1,4 @@ -/* Generated By:JavaCC: Do not edit this line. Token.java Version 5.0 */ +/* Generated By:JavaCC: Do not edit this line. Token.java Version 6.0 */ /* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ package adql.parser; @@ -6,7 +6,6 @@ package adql.parser; * Describes the input token stream. */ -@SuppressWarnings("all") public class Token implements java.io.Serializable { /** @@ -96,6 +95,7 @@ public class Token implements java.io.Serializable { /** * Returns the image. */ + @Override public String toString(){ return image; } @@ -124,4 +124,4 @@ public class Token implements java.io.Serializable { } } -/* JavaCC - OriginalChecksum=d231e694113b489b136cc4eb57fc02f6 (do not edit this line) */ +/* JavaCC - OriginalChecksum=4c61cfbec4532a0e2168ba896283031a (do not edit this line) */ diff --git a/src/adql/parser/Token.java.backup b/src/adql/parser/Token.java.backup index 01453f0..4aa2913 100644 --- a/src/adql/parser/Token.java.backup +++ b/src/adql/parser/Token.java.backup @@ -1,4 +1,4 @@ -/* Generated By:JavaCC: Do not edit this line. Token.java Version 5.0 */ +/* Generated By:JavaCC: Do not edit this line. Token.java Version 6.0 */ /* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ package adql.parser; @@ -6,127 +6,122 @@ package adql.parser; * Describes the input token stream. */ -@SuppressWarnings("all") public class Token implements java.io.Serializable { - /** - * The version identifier for this Serializable class. - * Increment only if the <i>serialized</i> form of the - * class changes. - */ - private static final long serialVersionUID = 1L; - - /** - * An integer that describes the kind of this token. This numbering - * system is determined by JavaCCParser, and a table of these numbers is - * stored in the file ...Constants.java. - */ - public int kind; - - /** The line number of the first character of this Token. */ - public int beginLine; - /** The column number of the first character of this Token. */ - public int beginColumn; - /** The line number of the last character of this Token. */ - public int endLine; - /** The column number of the last character of this Token. */ - public int endColumn; - - /** - * The string image of the token. - */ - public String image; - - /** - * A reference to the next regular (non-special) token from the input - * stream. If this is the last token from the input stream, or if the - * token manager has not read tokens beyond this one, this field is - * set to null. This is true only if this token is also a regular - * token. Otherwise, see below for a description of the contents of - * this field. - */ - public Token next; - - /** - * This field is used to access special tokens that occur prior to this - * token, but after the immediately preceding regular (non-special) token. - * If there are no such special tokens, this field is set to null. - * When there are more than one such special token, this field refers - * to the last of these special tokens, which in turn refers to the next - * previous special token through its specialToken field, and so on - * until the first special token (whose specialToken field is null). - * The next fields of special tokens refer to other special tokens that - * immediately follow it (without an intervening regular token). If there - * is no such token, this field is null. - */ - public Token specialToken; - - /** - * An optional attribute value of the Token. - * Tokens which are not used as syntactic sugar will often contain - * meaningful values that will be used later on by the compiler or - * interpreter. This attribute value is often different from the image. - * Any subclass of Token that actually wants to return a non-null value can - * override this method as appropriate. - */ - public Object getValue() { - return null; - } - - /** - * No-argument constructor - */ - public Token() {} - - /** - * Constructs a new token for the specified Image. - */ - public Token(int kind) - { - this(kind, null); - } - - /** - * Constructs a new token for the specified Image and Kind. - */ - public Token(int kind, String image) - { - this.kind = kind; - this.image = image; - } - - /** - * Returns the image. - */ - public String toString() - { - return image; - } - - /** - * Returns a new Token object, by default. However, if you want, you - * can create and return subclass objects based on the value of ofKind. - * Simply add the cases to the switch for all those special cases. - * For example, if you have a subclass of Token called IDToken that - * you want to create if ofKind is ID, simply add something like : - * - * case MyParserConstants.ID : return new IDToken(ofKind, image); - * - * to the following switch statement. Then you can cast matchedToken - * variable to the appropriate type and use sit in your lexical actions. - */ - public static Token newToken(int ofKind, String image) - { - switch(ofKind) - { - default : return new Token(ofKind, image); - } - } - - public static Token newToken(int ofKind) - { - return newToken(ofKind, null); - } + /** + * The version identifier for this Serializable class. + * Increment only if the <i>serialized</i> form of the + * class changes. + */ + private static final long serialVersionUID = 1L; + + /** + * An integer that describes the kind of this token. This numbering + * system is determined by JavaCCParser, and a table of these numbers is + * stored in the file ...Constants.java. + */ + public int kind; + + /** The line number of the first character of this Token. */ + public int beginLine; + /** The column number of the first character of this Token. */ + public int beginColumn; + /** The line number of the last character of this Token. */ + public int endLine; + /** The column number of the last character of this Token. */ + public int endColumn; + + /** + * The string image of the token. + */ + public String image; + + /** + * A reference to the next regular (non-special) token from the input + * stream. If this is the last token from the input stream, or if the + * token manager has not read tokens beyond this one, this field is + * set to null. This is true only if this token is also a regular + * token. Otherwise, see below for a description of the contents of + * this field. + */ + public Token next; + + /** + * This field is used to access special tokens that occur prior to this + * token, but after the immediately preceding regular (non-special) token. + * If there are no such special tokens, this field is set to null. + * When there are more than one such special token, this field refers + * to the last of these special tokens, which in turn refers to the next + * previous special token through its specialToken field, and so on + * until the first special token (whose specialToken field is null). + * The next fields of special tokens refer to other special tokens that + * immediately follow it (without an intervening regular token). If there + * is no such token, this field is null. + */ + public Token specialToken; + + /** + * An optional attribute value of the Token. + * Tokens which are not used as syntactic sugar will often contain + * meaningful values that will be used later on by the compiler or + * interpreter. This attribute value is often different from the image. + * Any subclass of Token that actually wants to return a non-null value can + * override this method as appropriate. + */ + public Object getValue(){ + return null; + } + + /** + * No-argument constructor + */ + public Token(){} + + /** + * Constructs a new token for the specified Image. + */ + public Token(int kind){ + this(kind, null); + } + + /** + * Constructs a new token for the specified Image and Kind. + */ + public Token(int kind, String image){ + this.kind = kind; + this.image = image; + } + + /** + * Returns the image. + */ + @Override + public String toString(){ + return image; + } + + /** + * Returns a new Token object, by default. However, if you want, you + * can create and return subclass objects based on the value of ofKind. + * Simply add the cases to the switch for all those special cases. + * For example, if you have a subclass of Token called IDToken that + * you want to create if ofKind is ID, simply add something like : + * + * case MyParserConstants.ID : return new IDToken(ofKind, image); + * + * to the following switch statement. Then you can cast matchedToken + * variable to the appropriate type and use sit in your lexical actions. + */ + public static Token newToken(int ofKind, String image){ + switch(ofKind){ + default: + return new Token(ofKind, image); + } + } + + public static Token newToken(int ofKind){ + return newToken(ofKind, null); + } } -/* JavaCC - OriginalChecksum=d231e694113b489b136cc4eb57fc02f6 (do not edit this line) */ +/* JavaCC - OriginalChecksum=4c61cfbec4532a0e2168ba896283031a (do not edit this line) */ diff --git a/src/adql/parser/TokenMgrError.java b/src/adql/parser/TokenMgrError.java index b41b384..10af73d 100644 --- a/src/adql/parser/TokenMgrError.java +++ b/src/adql/parser/TokenMgrError.java @@ -1,10 +1,8 @@ -/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */ +/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 6.0 */ /* JavaCCOptions: */ package adql.parser; /** Token Manager Error. */ - -@SuppressWarnings("all") public class TokenMgrError extends Error { /** @@ -44,12 +42,6 @@ public class TokenMgrError extends Error { */ int errorCode; - /** Indicates the line at which the error occurs. */ - int errorLine = -1; - - /** Indicates the column at which the error occurs. */ - int errorColumn = -1; - /** * Replaces unprintable characters by their escaped (or unicode escaped) * equivalents in the given string @@ -128,24 +120,6 @@ public class TokenMgrError extends Error { return super.getMessage(); } - /** - * Gets the line at which this error occurs. - * - * @return Error line or <code>-1</code> if unknown. - */ - public final int getErrorLine(){ - return errorLine; - } - - /** - * Gets the column at which this error occurs. - * - * @return Error column or <code>-1</code> if unknown. - */ - public final int getErrorColumn(){ - return errorColumn; - } - /* * Constructors of various flavors follow. */ @@ -162,8 +136,6 @@ public class TokenMgrError extends Error { /** Full Constructor. */ public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason){ this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason); - this.errorLine = errorLine; - this.errorColumn = errorColumn; } } -/* JavaCC - OriginalChecksum=be62b718c6ea188d507367a8560343a1 (do not edit this line) */ +/* JavaCC - OriginalChecksum=f63fc7c10226c13ff5a304e2fb1ae182 (do not edit this line) */ diff --git a/src/adql/parser/TokenMgrError.java.backup b/src/adql/parser/TokenMgrError.java.backup index 152db90..10af73d 100644 --- a/src/adql/parser/TokenMgrError.java.backup +++ b/src/adql/parser/TokenMgrError.java.backup @@ -1,18 +1,9 @@ -/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */ +/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 6.0 */ /* JavaCCOptions: */ package adql.parser; /** Token Manager Error. */ -/** - * TODO Javadoc of TokenMgrError ! - * - * @author Grégory Mantelet (CDS) - * @version 08/2011 - * - */ -@SuppressWarnings("all") -public class TokenMgrError extends Error -{ +public class TokenMgrError extends Error { /** * The version identifier for this Serializable class. @@ -51,56 +42,49 @@ public class TokenMgrError extends Error */ int errorCode; - /** Indicates the line at which the error occurs. */ - int errorLine = -1; - - /** Indicates the column at which the error occurs. */ - int errorColumn = -1; - /** * Replaces unprintable characters by their escaped (or unicode escaped) * equivalents in the given string */ - protected static final String addEscapes(String str) { + protected static final String addEscapes(String str){ StringBuffer retval = new StringBuffer(); char ch; - for (int i = 0; i < str.length(); i++) { - switch (str.charAt(i)) - { - case 0 : - continue; - case '\b': - retval.append("\\b"); - continue; - case '\t': - retval.append("\\t"); - continue; - case '\n': - retval.append("\\n"); - continue; - case '\f': - retval.append("\\f"); - continue; - case '\r': - retval.append("\\r"); - continue; - case '\"': - retval.append("\\\""); - continue; - case '\'': - retval.append("\\\'"); - continue; - case '\\': - retval.append("\\\\"); - continue; - default: - if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { - String s = "0000" + Integer.toString(ch, 16); - retval.append("\\u" + s.substring(s.length() - 4, s.length())); - } else { - retval.append(ch); - } - continue; + for(int i = 0; i < str.length(); i++){ + switch(str.charAt(i)){ + case 0: + continue; + case '\b': + retval.append("\\b"); + continue; + case '\t': + retval.append("\\t"); + continue; + case '\n': + retval.append("\\n"); + continue; + case '\f': + retval.append("\\f"); + continue; + case '\r': + retval.append("\\r"); + continue; + case '\"': + retval.append("\\\""); + continue; + case '\'': + retval.append("\\\'"); + continue; + case '\\': + retval.append("\\\\"); + continue; + default: + if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e){ + String s = "0000" + Integer.toString(ch, 16); + retval.append("\\u" + s.substring(s.length() - 4, s.length())); + }else{ + retval.append(ch); + } + continue; } } return retval.toString(); @@ -118,12 +102,8 @@ public class TokenMgrError extends Error * curchar : the offending character * Note: You can customize the lexical error message by modifying this method. */ - protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) { - return("Lexical error at line " + - errorLine + ", column " + - errorColumn + ". Encountered: " + - (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") + - "after : \"" + addEscapes(errorAfter) + "\""); + protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar){ + return ("Lexical error at line " + errorLine + ", column " + errorColumn + ". Encountered: " + (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") + "after : \"" + addEscapes(errorAfter) + "\""); } /** @@ -135,47 +115,27 @@ public class TokenMgrError extends Error * * from this method for such cases in the release version of your parser. */ - public String getMessage() { + @Override + public String getMessage(){ return super.getMessage(); } - /** - * Gets the line at which this error occurs. - * - * @return Error line or <code>-1</code> if unknown. - */ - public final int getErrorLine(){ - return errorLine; - } - - /** - * Gets the column at which this error occurs. - * - * @return Error column or <code>-1</code> if unknown. - */ - public final int getErrorColumn(){ - return errorColumn; - } - /* * Constructors of various flavors follow. */ /** No arg constructor. */ - public TokenMgrError() { - } + public TokenMgrError(){} /** Constructor with message and reason. */ - public TokenMgrError(String message, int reason) { + public TokenMgrError(String message, int reason){ super(message); errorCode = reason; } /** Full Constructor. */ - public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) { + public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason){ this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason); - this.errorLine = errorLine; - this.errorColumn = errorColumn; } } -/* JavaCC - OriginalChecksum=be62b718c6ea188d507367a8560343a1 (do not edit this line) */ +/* JavaCC - OriginalChecksum=f63fc7c10226c13ff5a304e2fb1ae182 (do not edit this line) */ diff --git a/src/adql/parser/adqlGrammar.jj b/src/adql/parser/adqlGrammar.jj index 2abf0dd..c0106f9 100644 --- a/src/adql/parser/adqlGrammar.jj +++ b/src/adql/parser/adqlGrammar.jj @@ -20,7 +20,7 @@ /* * This JavaCC file implements the BNF definition of ADQL v2.0 (IVOA Recommendation 30 Oct 2008 - http://www.ivoa.net/Documents/cover/ADQL-20081030.html). -* To generate the parser with this file use JavaCC. This .jj file has been successfully tested with JavaCC 5.0. +* To generate the parser with this file use JavaCC. This .jj file has been successfully tested with JavaCC 6.0. * * The generated parser checks the syntax of the given ADQL query and generates an object representation but no coherence with any database is done. * If the syntax is not conform to the ADQL definition an error message is printed else it will be the message "Correct syntax". -- GitLab