KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > codehaus > groovy > syntax > UnexpectedTokenException


1 package org.codehaus.groovy.syntax;
2
3 import org.codehaus.groovy.syntax.Types;
4 import org.codehaus.groovy.syntax.Token;
5 import org.codehaus.groovy.syntax.ParserException;
6
7 public class UnexpectedTokenException extends ParserException {
8     private Token unexpectedToken;
9     private int[] expectedTypes;
10     private String JavaDoc comment;
11
12     public UnexpectedTokenException(Token token) {
13         this(token, null, null );
14     }
15     
16     public UnexpectedTokenException(Token token, int expectedType) {
17         this(token, new int[] { expectedType });
18     }
19     
20     public UnexpectedTokenException(Token token, int[] expectedTypes) {
21         this(token, expectedTypes, null );
22     }
23
24     public UnexpectedTokenException(Token token, int[] expectedTypes, String JavaDoc comment) {
25         super("Unexpected token", token);
26         this.unexpectedToken = token;
27         this.expectedTypes = expectedTypes;
28         this.comment = comment;
29     }
30
31     public Token getUnexpectedToken() {
32         return this.unexpectedToken;
33     }
34
35     public int[] getExpectedTypes() {
36         return this.expectedTypes;
37     }
38
39     public String JavaDoc getUnexpectedTokenText( ) {
40         String JavaDoc text = null;
41         if( this.unexpectedToken != null )
42         {
43             text = this.unexpectedToken.getText();
44         }
45
46         if( text == null )
47         {
48             text = "";
49         }
50
51         return text;
52     }
53
54     public String JavaDoc getMessage() {
55         StringBuffer JavaDoc message = new StringBuffer JavaDoc();
56
57         if( expectedTypes != null ) {
58             message.append( "expected " );
59
60             if (this.expectedTypes.length == 1) {
61                 message.append( Types.getDescription(this.expectedTypes[0]) );
62             }
63             else {
64                 message.append("one of { ");
65     
66                 for (int i = 0; i < expectedTypes.length; ++i) {
67                     message.append( Types.getDescription(this.expectedTypes[i]) );
68     
69                     if ((i + 1) < expectedTypes.length) {
70                         if( expectedTypes.length > 2 ) {
71                             message.append(", ");
72                         }
73                         else {
74                             message.append(" ");
75                         }
76                     }
77
78                     if ((i + 2) == expectedTypes.length) {
79                         message.append("or ");
80                     }
81                 }
82     
83                 message.append(" }");
84             }
85
86             message.append( "; found '" );
87         }
88         else {
89             message.append( "could not use '" );
90         }
91
92         message.append( getUnexpectedTokenText() ).append( "'" );
93         if( unexpectedToken != null ) {
94             message.append(" at " + unexpectedToken.getStartLine() + ":" + unexpectedToken.getStartColumn());
95         }
96         else {
97             message.append(" at unknown location (probably end of file)");
98         }
99
100         if( comment != null ) {
101             message.append( "; " );
102             message.append( comment );
103         }
104
105         return message.toString();
106     }
107 }
108
Popular Tags