blob: ccf8cf6760181f6a2676af31870212d407acabba [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 2004 Sun Microsystems, Inc. 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. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26package sun.tools.jstat;
27
28import java.io.StreamTokenizer;
29
30/**
31 * A class for encapsulating tokens returned from StreamTokenizer primarily
32 * for output formatting purposes.
33 *
34 * @author Brian Doherty
35 * @since 1.5
36 */
37public class Token {
38 public String sval;
39 public double nval;
40 public int ttype;
41
42 public Token(int ttype, String sval, double nval) {
43 this.ttype = ttype;
44 this.sval = sval;
45 this.nval = nval;
46 }
47
48 public Token(int ttype, String sval) {
49 this(ttype, sval, 0);
50 }
51
52 public Token(int ttype) {
53 this(ttype, null, 0);
54 }
55
56 public String toMessage() {
57 switch(ttype) {
58 case StreamTokenizer.TT_EOL:
59 return "\"EOL\"";
60 case StreamTokenizer.TT_EOF:
61 return "\"EOF\"";
62 case StreamTokenizer.TT_NUMBER:
63 return "NUMBER";
64 case StreamTokenizer.TT_WORD:
65 if (sval == null) {
66 return "IDENTIFIER";
67 } else {
68 return "IDENTIFIER " + sval;
69 }
70 default:
71 if (ttype == (int)'"') {
72 String msg = "QUOTED STRING";
73 if (sval != null)
74 msg = msg + " \"" + sval + "\"";
75 return msg;
76 } else {
77 return "CHARACTER \'" + (char)ttype + "\'";
78 }
79 }
80 }
81
82 public String toString() {
83 StringBuilder sb = new StringBuilder();
84 switch(ttype) {
85 case StreamTokenizer.TT_EOL:
86 sb.append("ttype=TT_EOL");
87 break;
88 case StreamTokenizer.TT_EOF:
89 sb.append("ttype=TT_EOF");
90 break;
91 case StreamTokenizer.TT_NUMBER:
92 sb.append("ttype=TT_NUM,").append("nval="+nval);
93 break;
94 case StreamTokenizer.TT_WORD:
95 if (sval == null) {
96 sb.append("ttype=TT_WORD:IDENTIFIER");
97 } else {
98 sb.append("ttype=TT_WORD:").append("sval="+sval);
99 }
100 break;
101 default:
102 if (ttype == (int)'"') {
103 sb.append("ttype=TT_STRING:").append("sval="+sval);
104 } else {
105 sb.append("ttype=TT_CHAR:").append((char)ttype);
106 }
107 break;
108 }
109 return sb.toString();
110 }
111}