1 /*
2  * Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.  Oracle designates this
8  * particular file as subject to the "Classpath" exception as provided
9  * by Oracle in the LICENSE file that accompanied this code.
10  *
11  * This code is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14  * version 2 for more details (a copy is included in the LICENSE file that
15  * accompanied this code).
16  *
17  * You should have received a copy of the GNU General Public License version
18  * 2 along with this work; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22  * or visit www.oracle.com if you need additional information or have any
23  * questions.
24  */
25 
26 package sun.tools.jstat;
27 
28 import java.io.StreamTokenizer;
29 import java.util.Set;
30 import java.util.Iterator;
31 
32 /**
33  * An exception class for syntax exceptions detected by the options file
34  * parser.
35  *
36  * @author Brian Doherty
37  * @since 1.5
38  */
39 @SuppressWarnings("serial") // JDK implementation class
40 public class SyntaxException extends ParserException {
41     private String message;
42 
SyntaxException(String message)43     public SyntaxException(String message) {
44         this.message = message;
45     }
46 
SyntaxException(int lineno, String expected, String found)47     public SyntaxException(int lineno, String expected, String found) {
48         message = "Syntax error at line " + lineno
49                   + ": Expected " + expected
50                   + ", Found " + found;
51     }
52 
SyntaxException(int lineno, String expected, Token found)53     public SyntaxException(int lineno, String expected, Token found) {
54         message = "Syntax error at line " + lineno
55                   + ": Expected " + expected
56                   + ", Found " + found.toMessage();
57     }
58 
SyntaxException(int lineno, Token expected, Token found)59     public SyntaxException(int lineno, Token expected, Token found) {
60         message = "Syntax error at line " + lineno
61                   + ": Expected " + expected.toMessage()
62                   + ", Found " + found.toMessage();
63     }
64 
SyntaxException(int lineno, Set<String> expected, Token found)65     public SyntaxException(int lineno, Set<String> expected, Token found) {
66         StringBuilder msg = new StringBuilder();
67 
68         msg.append("Syntax error at line ").append(lineno)
69                 .append(": Expected one of \'");
70 
71         for (String keyWord : expected) {
72             msg.append(keyWord).append('|');
73         }
74         if (!expected.isEmpty()) {
75             msg.setLength(msg.length() - 1);
76         }
77 
78         message = msg.append("\', Found ").append(found.toMessage()).toString();
79     }
80 
getMessage()81     public String getMessage() {
82         return message;
83     }
84 }
85 
86