137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */ 237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/* JavaCCOptions:KEEP_LINE_COL=null */ 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 * This exception is thrown when parse errors are encountered. 1937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * You can explicitly create objects of this exception type by 2037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * calling the method generateParseException in the generated 2137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * parser. 2237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * 2337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * You can modify this class to customize your error reporting 2437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * mechanisms so long as you retain the public fields. 2537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */ 2637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassettipublic class ParseException extends Exception { 2737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 2837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** 2937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * The version identifier for this Serializable class. 3037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * Increment only if the <i>serialized</i> form of the 3137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * class changes. 3237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */ 3337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti private static final long serialVersionUID = 1L; 3437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 3537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** 3637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * This constructor is used by the method "generateParseException" 3737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * in the generated parser. Calling this constructor generates 3837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * a new object of this type with the fields "currentToken", 3937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * "expectedTokenSequences", and "tokenImage" set. 4037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */ 4137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public ParseException(Token currentTokenVal, 4237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int[][] expectedTokenSequencesVal, 4337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti String[] tokenImageVal 4437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti ) 4537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 4637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal)); 4737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti currentToken = currentTokenVal; 4837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti expectedTokenSequences = expectedTokenSequencesVal; 4937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti tokenImage = tokenImageVal; 5037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 5137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 5237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** 5337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * The following constructors are for use by you for whatever 5437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * purpose you can think of. Constructing the exception in this 5537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * manner makes the exception behave in the normal way - i.e., as 5637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * documented in the class "Throwable". The fields "errorToken", 5737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * "expectedTokenSequences", and "tokenImage" do not contain 5837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * relevant information. The JavaCC generated code does not use 5937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * these constructors. 6037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */ 6137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 6237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public ParseException() { 6337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti super(); 6437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 6537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 6637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** Constructor with message. */ 6737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public ParseException(String message) { 6837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti super(message); 6937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 7037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 7137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 7237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** 7337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * This is the last token that has been consumed successfully. If 7437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * this object has been created due to a parse error, the token 7537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * followng this token will (therefore) be the first error token. 7637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */ 7737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public Token currentToken; 7837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 7937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** 8037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * Each entry in this array is an array of integers. Each array 8137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * of integers represents a sequence of tokens (by their ordinal 8237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * values) that is expected at this point of the parse. 8337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */ 8437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public int[][] expectedTokenSequences; 8537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 8637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** 8737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * This is a reference to the "tokenImage" array of the generated 8837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * parser within which the parse error occurred. This array is 8937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * defined in the generated ...Constants interface. 9037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */ 9137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti public String[] tokenImage; 9237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 9337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** 9437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * It uses "currentToken" and "expectedTokenSequences" to generate a parse 9537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * error message and returns it. If this object has been created 9637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * due to a parse error, and you do not catch it (it gets thrown 9737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * from the parser) the correct error message 9837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * gets displayed. 9937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */ 10037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti private static String initialise(Token currentToken, 10137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int[][] expectedTokenSequences, 10237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti String[] tokenImage) { 10337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti String eol = System.getProperty("line.separator", "\n"); 104af3957cbd334e0cf8b13e3ce72afb50fb169c0ebFederico Tomassetti StringBuffer expected = new StringBuffer(); 10537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti int maxSize = 0; 10637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti for (int i = 0; i < expectedTokenSequences.length; i++) { 10737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (maxSize < expectedTokenSequences[i].length) { 10837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti maxSize = expectedTokenSequences[i].length; 10937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 11037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti for (int j = 0; j < expectedTokenSequences[i].length; j++) { 11137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' '); 11237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 11337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) { 11437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti expected.append("..."); 11537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 11637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti expected.append(eol).append(" "); 11737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 11837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti String retval = "Encountered \""; 11937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti Token tok = currentToken.next; 12037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti for (int i = 0; i < maxSize; i++) { 12137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (i != 0) retval += " "; 12237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (tok.kind == 0) { 12337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval += tokenImage[0]; 12437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti break; 12537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 12637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval += " " + tokenImage[tok.kind]; 12737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval += " \""; 12837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval += add_escapes(tok.image); 12937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval += " \""; 13037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti tok = tok.next; 13137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 13237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn; 13337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval += "." + eol; 13437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if (expectedTokenSequences.length == 1) { 13537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval += "Was expecting:" + eol + " "; 13637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } else { 13737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval += "Was expecting one of:" + eol + " "; 13837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 13937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval += expected.toString(); 14037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return retval; 14137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 14237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 14337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** 14437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * The end of line string for this machine. 14537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */ 14637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti protected String eol = System.getProperty("line.separator", "\n"); 14737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 14837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti /** 14937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * Used to convert raw characters to their escaped version 15037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * when these raw version cannot be used as part of an ASCII 15137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * string literal. 15237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */ 15337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti static String add_escapes(String str) { 154af3957cbd334e0cf8b13e3ce72afb50fb169c0ebFederico Tomassetti StringBuffer retval = new StringBuffer(); 15537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti char ch; 15637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti for (int i = 0; i < str.length(); i++) { 15737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti switch (str.charAt(i)) 15837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti { 15937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case 0 : 16037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti continue; 16137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '\b': 16237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval.append("\\b"); 16337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti continue; 16437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '\t': 16537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval.append("\\t"); 16637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti continue; 16737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '\n': 16837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval.append("\\n"); 16937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti continue; 17037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '\f': 17137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval.append("\\f"); 17237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti continue; 17337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '\r': 17437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval.append("\\r"); 17537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti continue; 17637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '\"': 17737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval.append("\\\""); 17837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti continue; 17937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '\'': 18037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval.append("\\\'"); 18137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti continue; 18237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti case '\\': 18337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval.append("\\\\"); 18437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti continue; 18537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti default: 18637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { 18737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti String s = "0000" + Integer.toString(ch, 16); 18837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval.append("\\u" + s.substring(s.length() - 4, s.length())); 18937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } else { 19037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti retval.append(ch); 19137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 19237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti continue; 19337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 19437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 19537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti return retval.toString(); 19637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti } 19737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti 19837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti} 19937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/* JavaCC - OriginalChecksum=62ba72b2159703420d5ce7232a0226fb (do not edit this line) */ 200