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    }