View Javadoc
1   /*
2    * Copyright (c) 2004, 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  public class SyntaxException extends ParserException {
40      private String message;
41  
42      public SyntaxException(String message) {
43          this.message = message;
44      }
45  
46      public SyntaxException(int lineno, String expected, String found) {
47          message = "Syntax error at line " + lineno
48                    + ": Expected " + expected
49                    + ", Found " + found;
50      }
51  
52      public SyntaxException(int lineno, String expected, Token found) {
53          message = "Syntax error at line " + lineno
54                    + ": Expected " + expected
55                    + ", Found " + found.toMessage();
56      }
57  
58      public SyntaxException(int lineno, Token expected, Token found) {
59          message = "Syntax error at line " + lineno
60                    + ": Expected " + expected.toMessage()
61                    + ", Found " + found.toMessage();
62      }
63  
64      public SyntaxException(int lineno, Set expected, Token found) {
65          StringBuilder msg = new StringBuilder();
66  
67          msg.append("Syntax error at line " + lineno + ": Expected one of \'");
68  
69          boolean first = true;
70          for (Iterator i = expected.iterator(); i.hasNext(); /* empty */) {
71              String keyWord = (String)i.next();
72              if (first) {
73                  msg.append(keyWord);
74                  first = false;
75              } else {
76                  msg.append("|" + keyWord);
77              }
78          }
79  
80          msg.append("\', Found " + found.toMessage());
81          message = msg.toString();
82      }
83  
84      public String getMessage() {
85          return message;
86      }
87  }