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