Mon, 26 Jul 2010 14:25:56 -0700
6957438: improve code for generating warning messages containing option names
Reviewed-by: mcimadamore
1 /*
2 * Copyright (c) 1999, 2008, 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 */
26 package com.sun.tools.javac.parser;
28 import java.util.Locale;
30 import com.sun.tools.javac.api.Formattable;
31 import com.sun.tools.javac.api.Messages;
33 /** An interface that defines codes for Java source tokens
34 * returned from lexical analysis.
35 *
36 * <p><b>This is NOT part of any supported API.
37 * If you write code that depends on this, you do so at your own risk.
38 * This code and its internal interfaces are subject to change or
39 * deletion without notice.</b>
40 */
41 public enum Token implements Formattable {
42 EOF,
43 ERROR,
44 IDENTIFIER,
45 ABSTRACT("abstract"),
46 ASSERT("assert"),
47 BOOLEAN("boolean"),
48 BREAK("break"),
49 BYTE("byte"),
50 CASE("case"),
51 CATCH("catch"),
52 CHAR("char"),
53 CLASS("class"),
54 CONST("const"),
55 CONTINUE("continue"),
56 DEFAULT("default"),
57 DO("do"),
58 DOUBLE("double"),
59 ELSE("else"),
60 ENUM("enum"),
61 EXTENDS("extends"),
62 FINAL("final"),
63 FINALLY("finally"),
64 FLOAT("float"),
65 FOR("for"),
66 GOTO("goto"),
67 IF("if"),
68 IMPLEMENTS("implements"),
69 IMPORT("import"),
70 INSTANCEOF("instanceof"),
71 INT("int"),
72 INTERFACE("interface"),
73 LONG("long"),
74 NATIVE("native"),
75 NEW("new"),
76 PACKAGE("package"),
77 PRIVATE("private"),
78 PROTECTED("protected"),
79 PUBLIC("public"),
80 RETURN("return"),
81 SHORT("short"),
82 STATIC("static"),
83 STRICTFP("strictfp"),
84 SUPER("super"),
85 SWITCH("switch"),
86 SYNCHRONIZED("synchronized"),
87 THIS("this"),
88 THROW("throw"),
89 THROWS("throws"),
90 TRANSIENT("transient"),
91 TRY("try"),
92 VOID("void"),
93 VOLATILE("volatile"),
94 WHILE("while"),
95 INTLITERAL,
96 LONGLITERAL,
97 FLOATLITERAL,
98 DOUBLELITERAL,
99 CHARLITERAL,
100 STRINGLITERAL,
101 TRUE("true"),
102 FALSE("false"),
103 NULL("null"),
104 LPAREN("("),
105 RPAREN(")"),
106 LBRACE("{"),
107 RBRACE("}"),
108 LBRACKET("["),
109 RBRACKET("]"),
110 SEMI(";"),
111 COMMA(","),
112 DOT("."),
113 ELLIPSIS("..."),
114 EQ("="),
115 GT(">"),
116 LT("<"),
117 BANG("!"),
118 TILDE("~"),
119 QUES("?"),
120 COLON(":"),
121 EQEQ("=="),
122 LTEQ("<="),
123 GTEQ(">="),
124 BANGEQ("!="),
125 AMPAMP("&&"),
126 BARBAR("||"),
127 PLUSPLUS("++"),
128 SUBSUB("--"),
129 PLUS("+"),
130 SUB("-"),
131 STAR("*"),
132 SLASH("/"),
133 AMP("&"),
134 BAR("|"),
135 CARET("^"),
136 PERCENT("%"),
137 LTLT("<<"),
138 GTGT(">>"),
139 GTGTGT(">>>"),
140 PLUSEQ("+="),
141 SUBEQ("-="),
142 STAREQ("*="),
143 SLASHEQ("/="),
144 AMPEQ("&="),
145 BAREQ("|="),
146 CARETEQ("^="),
147 PERCENTEQ("%="),
148 LTLTEQ("<<="),
149 GTGTEQ(">>="),
150 GTGTGTEQ(">>>="),
151 MONKEYS_AT("@"),
152 CUSTOM;
154 Token() {
155 this(null);
156 }
157 Token(String name) {
158 this.name = name;
159 }
161 public final String name;
163 public String toString() {
164 switch (this) {
165 case IDENTIFIER:
166 return "token.identifier";
167 case CHARLITERAL:
168 return "token.character";
169 case STRINGLITERAL:
170 return "token.string";
171 case INTLITERAL:
172 return "token.integer";
173 case LONGLITERAL:
174 return "token.long-integer";
175 case FLOATLITERAL:
176 return "token.float";
177 case DOUBLELITERAL:
178 return "token.double";
179 case ERROR:
180 return "token.bad-symbol";
181 case EOF:
182 return "token.end-of-input";
183 case DOT: case COMMA: case SEMI: case LPAREN: case RPAREN:
184 case LBRACKET: case RBRACKET: case LBRACE: case RBRACE:
185 return "'" + name + "'";
186 default:
187 return name;
188 }
189 }
191 public String getKind() {
192 return "Token";
193 }
195 public String toString(Locale locale, Messages messages) {
196 return name != null ? toString() : messages.getLocalizedString(locale, "compiler.misc." + toString());
197 }
198 }