001
002 /*
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements. See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018 package org.apache.commons.jexl2.parser;
019
020 /**
021 * This exception is thrown when parse errors are encountered.
022 */
023 public class ParseException extends Exception {
024 /**
025 * The version identifier.
026 */
027 private static final long serialVersionUID = 1L;
028 /**
029 * Last correct input before error occurs.
030 */
031 private String after = "";
032 /**
033 * Error line.
034 */
035 private int line = -1;
036 /**
037 * Error column.
038 */
039 private int column = -1;
040
041 /**
042 * Gets the line number.
043 * @return line number.
044 */
045 public int getLine() {
046 return line;
047 }
048
049 /**
050 * Gets the column number.
051 * @return the column.
052 */
053 public int getColumn() {
054 return column;
055 }
056
057 /**
058 * Gets the last correct input.
059 * @return the string after which the error occured
060 */
061 public String getAfter() {
062 return after;
063 }
064
065 /**
066 * This constructor is used by the method "generateParseException"
067 * in the generated parser. Calling this constructor generates
068 * a new object of this type with the fields "currentToken",
069 * "expectedTokenSequences", and "tokenImage" set.
070 * @param currentToken This is the last token that has been consumed successfully. If
071 * this object has been created due to a parse error, the token
072 * followng this token will (therefore) be the first error token.
073 * @param expectedTokenSequences Each entry in this array is an array of integers. Each array
074 * of integers represents a sequence of tokens (by their ordinal
075 * values) that is expected at this point of the parse.
076 * @param tokenImage This is a reference to the "tokenImage" array of the generated
077 * parser within which the parse error occurred. This array is
078 * defined in the generated ...Constants interface.
079 */
080 public ParseException(Token currentToken, int[][] expectedTokenSequences, String[] tokenImage) {
081 super("parse error");
082 Token tok = currentToken.next;
083 after = tok.image;
084 line = tok.beginLine;
085 column = tok.beginColumn;
086 }
087
088 /**
089 * Default ctor.
090 */
091 public ParseException() {
092 super();
093 }
094
095 /** Constructor with message. */
096 public ParseException(String message) {
097 super(message);
098 }
099 }