raster@14180
|
1 |
/*
|
raster@14180
|
2 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
raster@14180
|
3 |
*
|
raster@14180
|
4 |
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
|
raster@14180
|
5 |
*
|
raster@14180
|
6 |
* The contents of this file are subject to the terms of either the GNU
|
raster@14180
|
7 |
* General Public License Version 2 only ("GPL") or the Common
|
raster@14180
|
8 |
* Development and Distribution License("CDDL") (collectively, the
|
raster@14180
|
9 |
* "License"). You may not use this file except in compliance with the
|
raster@14180
|
10 |
* License. You can obtain a copy of the License at
|
raster@14180
|
11 |
* http://www.netbeans.org/cddl-gplv2.html
|
raster@14180
|
12 |
* or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
|
raster@14180
|
13 |
* specific language governing permissions and limitations under the
|
raster@14180
|
14 |
* License. When distributing the software, include this License Header
|
raster@14180
|
15 |
* Notice in each file and include the License file at
|
raster@14180
|
16 |
* nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
|
raster@14180
|
17 |
* particular file as subject to the "Classpath" exception as provided
|
raster@14180
|
18 |
* by Sun in the GPL Version 2 section of the License file that
|
raster@14180
|
19 |
* accompanied this code. If applicable, add the following below the
|
raster@14180
|
20 |
* License Header, with the fields enclosed by brackets [] replaced by
|
raster@14180
|
21 |
* your own identifying information:
|
raster@14180
|
22 |
* "Portions Copyrighted [year] [name of copyright owner]"
|
raster@14180
|
23 |
*
|
raster@14180
|
24 |
* If you wish your version of this file to be governed by only the CDDL
|
raster@14180
|
25 |
* or only the GPL Version 2, indicate your decision by adding
|
raster@14180
|
26 |
* "[Contributor] elects to include this software in this distribution
|
raster@14180
|
27 |
* under the [CDDL or GPL Version 2] license." If you do not indicate a
|
raster@14180
|
28 |
* single choice of license, a recipient has the option to distribute
|
raster@14180
|
29 |
* your version of this file under either the CDDL, the GPL Version 2 or
|
raster@14180
|
30 |
* to extend the choice of license to its licensees as provided above.
|
raster@14180
|
31 |
* However, if you add GPL Version 2 code and therefore, elected the GPL
|
raster@14180
|
32 |
* Version 2 license, then the option applies only if the new code is
|
raster@14180
|
33 |
* made subject to such option by the copyright holder.
|
raster@14180
|
34 |
*
|
raster@14180
|
35 |
* Contributor(s):
|
raster@14180
|
36 |
*
|
raster@14180
|
37 |
* Portions Copyrighted 2008 Sun Microsystems, Inc.
|
raster@14180
|
38 |
*/
|
raster@14180
|
39 |
|
raster@14180
|
40 |
package org.netbeans.modules.ada.editor.parser;
|
raster@14180
|
41 |
|
raster@14180
|
42 |
import java.util.ArrayList;
|
raster@15779
|
43 |
import java.util.Arrays;
|
raster@14180
|
44 |
import java.util.List;
|
raster@14180
|
45 |
import java.util.logging.Level;
|
raster@14180
|
46 |
import java.util.logging.Logger;
|
raster@14180
|
47 |
import java_cup.runtime.Symbol;
|
raster@14180
|
48 |
import org.netbeans.modules.ada.editor.parser.AdaParser.Context;
|
raster@14180
|
49 |
import org.netbeans.modules.ada.editor.ast.ASTError;
|
raster@14180
|
50 |
import org.netbeans.modules.ada.editor.ast.ASTNode;
|
raster@14180
|
51 |
import org.netbeans.modules.ada.editor.ast.nodes.Program;
|
raster@15779
|
52 |
import org.netbeans.modules.csl.api.Severity;
|
raster@14180
|
53 |
import org.openide.util.NbBundle;
|
raster@15779
|
54 |
import org.netbeans.modules.csl.api.Error;
|
raster@14180
|
55 |
|
raster@14180
|
56 |
/**
|
raster@14180
|
57 |
* Based on org.netbeans.modules.php.editor.parser.PHP5ErrorHandler
|
raster@14180
|
58 |
*
|
raster@14180
|
59 |
* @author Andrea Lucarelli
|
raster@14180
|
60 |
*/
|
raster@14180
|
61 |
public class Ada95ErrorHandler implements ParserErrorHandler {
|
raster@14180
|
62 |
|
raster@14180
|
63 |
private static final Logger LOGGER = Logger.getLogger(Ada95ErrorHandler.class.getName());
|
raster@14180
|
64 |
|
raster@14180
|
65 |
public static class SyntaxError {
|
raster@14180
|
66 |
private final short[] expectedTokens;
|
raster@14180
|
67 |
private final Symbol currentToken;
|
raster@14180
|
68 |
private final Symbol previousToken;
|
raster@15779
|
69 |
|
raster@14180
|
70 |
public SyntaxError(short[] expectedTokens, Symbol currentToken, Symbol previousToken) {
|
raster@14180
|
71 |
this.expectedTokens = expectedTokens;
|
raster@14180
|
72 |
this.currentToken = currentToken;
|
raster@14180
|
73 |
this.previousToken = previousToken;
|
raster@14180
|
74 |
}
|
raster@14180
|
75 |
|
raster@14180
|
76 |
public Symbol getCurrentToken() {
|
raster@14180
|
77 |
return currentToken;
|
raster@14180
|
78 |
}
|
raster@14180
|
79 |
|
raster@14180
|
80 |
public Symbol getPreviousToken() {
|
raster@14180
|
81 |
return previousToken;
|
raster@14180
|
82 |
}
|
raster@14180
|
83 |
|
raster@14180
|
84 |
public short[] getExpectedTokens() {
|
raster@14180
|
85 |
return expectedTokens;
|
raster@14180
|
86 |
}
|
raster@14180
|
87 |
}
|
raster@14180
|
88 |
|
raster@14180
|
89 |
private final List<SyntaxError> syntaxErrors;
|
raster@14180
|
90 |
|
raster@14180
|
91 |
private final Context context;
|
raster@14180
|
92 |
AdaParser outer;
|
raster@14180
|
93 |
|
raster@14180
|
94 |
public Ada95ErrorHandler(Context context, AdaParser outer) {
|
raster@14180
|
95 |
super();
|
raster@14180
|
96 |
this.outer = outer;
|
raster@14180
|
97 |
this.context = context;
|
raster@14180
|
98 |
syntaxErrors = new ArrayList<SyntaxError>();
|
raster@16367
|
99 |
//LOGGER.setLevel(Level.FINE);
|
raster@14180
|
100 |
}
|
raster@14180
|
101 |
|
raster@14180
|
102 |
public void handleError(Type type, short[] expectedtokens, Symbol current, Symbol previous) {
|
raster@14180
|
103 |
Error error;
|
raster@14180
|
104 |
if (type == ParserErrorHandler.Type.SYNTAX_ERROR) {
|
raster@14180
|
105 |
// logging syntax error
|
raster@16367
|
106 |
if (LOGGER.isLoggable(Level.FINE)) {
|
raster@16367
|
107 |
LOGGER.fine("Syntax error:"); //NOI18N
|
raster@16367
|
108 |
LOGGER.fine("Current [" + current.left + ", " + current.right + "](" + Utils.getASTScannerTokenName(current.sym) + "): " + current.value); //NOI18N
|
raster@16367
|
109 |
LOGGER.fine("Previous [" + previous.left + ", " + previous.right + "] (" + Utils.getASTScannerTokenName(previous.sym) + "):" + previous.value); //NOI18N
|
raster@14180
|
110 |
StringBuffer message = new StringBuffer();
|
raster@14180
|
111 |
message.append("Expected tokens:"); //NOI18N
|
raster@14180
|
112 |
for (int i = 0; i < expectedtokens.length; i += 2) {
|
raster@14180
|
113 |
message.append(" ").append( Utils.getASTScannerTokenName(expectedtokens[i])); //NOI18N
|
raster@14180
|
114 |
}
|
raster@16367
|
115 |
LOGGER.fine(message.toString());
|
raster@14180
|
116 |
}
|
raster@14180
|
117 |
syntaxErrors.add(new SyntaxError(expectedtokens, current, previous));
|
raster@15779
|
118 |
} else {
|
raster@14180
|
119 |
String message = null;
|
raster@14180
|
120 |
if (current != null) {
|
raster@14180
|
121 |
String tagText = getTokenTextForm(current.sym);
|
raster@14180
|
122 |
if (tagText != null) {
|
raster@14180
|
123 |
message = NbBundle.getMessage(Ada95ErrorHandler.class, "SE_Unexpected") + " " + tagText;
|
raster@14180
|
124 |
}
|
raster@14180
|
125 |
else {
|
raster@14180
|
126 |
message = NbBundle.getMessage(Ada95ErrorHandler.class, "SE_Unexpected") + " " + Utils.getASTScannerTokenName(current.sym);
|
raster@14180
|
127 |
}
|
raster@14180
|
128 |
}
|
raster@14180
|
129 |
if (message == null) {
|
raster@14180
|
130 |
message = "Parser error"; // NOI18N
|
raster@14180
|
131 |
}
|
raster@15779
|
132 |
error = new AdaError(message, context.getSnapshot().getSource().getFileObject(), current.left, current.right, Severity.ERROR, null);
|
raster@15779
|
133 |
//context.getListener().error(error);
|
raster@14180
|
134 |
}
|
raster@14180
|
135 |
}
|
raster@14180
|
136 |
|
raster@14180
|
137 |
public void handleError(Type type, Symbol symbol, String message) {
|
raster@14180
|
138 |
Error error;
|
raster@14180
|
139 |
if (symbol != null) {
|
raster@14180
|
140 |
if (message == null) {
|
raster@14180
|
141 |
message = "Parser error";
|
raster@14180
|
142 |
}
|
raster@15779
|
143 |
error = new AdaError(message, context.getSnapshot().getSource().getFileObject(), symbol.left, symbol.right, Severity.ERROR, null);
|
raster@15779
|
144 |
//TODO: context.getListener().error(error);
|
raster@14180
|
145 |
}
|
raster@14180
|
146 |
}
|
raster@15779
|
147 |
|
raster@15779
|
148 |
public List<Error> displayFatalError(){
|
raster@15779
|
149 |
Error error = new FatalError();
|
raster@15779
|
150 |
return Arrays.asList(error);
|
raster@15779
|
151 |
}
|
raster@14180
|
152 |
|
raster@15779
|
153 |
public List<Error> displaySyntaxErrors(Program program) {
|
raster@15779
|
154 |
List<Error> errors = new ArrayList<Error>();
|
raster@14180
|
155 |
for (SyntaxError syntaxError : syntaxErrors) {
|
raster@14180
|
156 |
ASTNode astError = null;
|
raster@14180
|
157 |
if (program != null) {
|
raster@14180
|
158 |
astError = org.netbeans.modules.ada.editor.ast.ASTUtils.getNodeAtOffset(program, syntaxError.currentToken.left);
|
raster@14180
|
159 |
if (!(astError instanceof ASTError)) {
|
raster@14180
|
160 |
astError = org.netbeans.modules.ada.editor.ast.ASTUtils.getNodeAtOffset(program, syntaxError.previousToken.right);
|
raster@14180
|
161 |
if (!(astError instanceof ASTError)) {
|
raster@14180
|
162 |
astError = null;
|
raster@14180
|
163 |
}
|
raster@14180
|
164 |
}
|
raster@14180
|
165 |
if (astError != null) {
|
raster@16367
|
166 |
LOGGER.fine("ASTError [" + astError.getStartOffset() + ", " + astError.getEndOffset() + "]"); //NOI18N
|
raster@14180
|
167 |
} else {
|
raster@16367
|
168 |
LOGGER.fine("ASTError was not found"); //NOI18N
|
raster@14180
|
169 |
}
|
raster@14180
|
170 |
}
|
raster@14180
|
171 |
Error error = defaultSyntaxErrorHandling(syntaxError, astError);
|
raster@15779
|
172 |
errors.add(error);
|
raster@14180
|
173 |
}
|
raster@15779
|
174 |
return errors;
|
raster@14180
|
175 |
}
|
raster@14180
|
176 |
|
raster@14180
|
177 |
// This is just defualt handling. We can do a logic, which will find metter
|
raster@14180
|
178 |
private Error defaultSyntaxErrorHandling(SyntaxError syntaxError, ASTNode astError) {
|
raster@14180
|
179 |
Error error = null;
|
raster@14180
|
180 |
String unexpectedText = ""; //NOI18N
|
raster@14180
|
181 |
StringBuffer message = new StringBuffer();
|
raster@14180
|
182 |
boolean isUnexpected = false;
|
raster@14180
|
183 |
int start = syntaxError.getCurrentToken().left;
|
raster@14180
|
184 |
int end = syntaxError.getCurrentToken().right;
|
raster@14180
|
185 |
|
raster@14180
|
186 |
if (syntaxError.getCurrentToken().sym == Ada95ASTSymbols.EOF) {
|
raster@14180
|
187 |
isUnexpected = true;
|
raster@14180
|
188 |
unexpectedText = NbBundle.getMessage(Ada95ErrorHandler.class, "SE_EOF");
|
raster@14180
|
189 |
start = end - 1;
|
raster@14180
|
190 |
}
|
raster@14180
|
191 |
else {
|
raster@14180
|
192 |
String currentText = (String)syntaxError.getCurrentToken().value;
|
raster@14180
|
193 |
isUnexpected = currentText != null && currentText.trim().length() > 0;
|
raster@14180
|
194 |
if (isUnexpected) {
|
raster@14180
|
195 |
unexpectedText = currentText.trim();
|
raster@14180
|
196 |
end = start + unexpectedText.length();
|
raster@14180
|
197 |
}
|
raster@14180
|
198 |
}
|
raster@14180
|
199 |
|
raster@14180
|
200 |
List<String> possibleTags = new ArrayList<String>();
|
raster@14180
|
201 |
for (int i = 0; i < syntaxError.getExpectedTokens().length; i += 2) {
|
raster@14180
|
202 |
String text = getTokenTextForm(syntaxError.getExpectedTokens()[i]);
|
raster@14180
|
203 |
if (text != null) {
|
raster@14180
|
204 |
possibleTags.add(text);
|
raster@14180
|
205 |
}
|
raster@14180
|
206 |
}
|
raster@14180
|
207 |
|
raster@14180
|
208 |
message.append(NbBundle.getMessage(Ada95ErrorHandler.class, "SE_Message"));
|
raster@14180
|
209 |
message.append(':'); //NOI18N
|
raster@14180
|
210 |
if (isUnexpected) {
|
raster@14180
|
211 |
message.append(' ').append(NbBundle.getMessage(Ada95ErrorHandler.class, "SE_Unexpected"));
|
raster@14180
|
212 |
message.append(": "); //NOI18N
|
raster@14180
|
213 |
message.append(unexpectedText);
|
raster@14180
|
214 |
}
|
raster@14180
|
215 |
if (possibleTags.size() > 0) {
|
raster@14180
|
216 |
message.append('\n').append(NbBundle.getMessage(Ada95ErrorHandler.class, "SE_Expected"));
|
raster@14180
|
217 |
message.append(": "); //NOI18N
|
raster@14180
|
218 |
boolean addOR = false;
|
raster@14180
|
219 |
for (String tag : possibleTags) {
|
raster@14180
|
220 |
if (addOR) {
|
raster@14180
|
221 |
message.append(" " + NbBundle.getMessage(Ada95ErrorHandler.class, "SE_Or") + " ");
|
raster@14180
|
222 |
}
|
raster@14180
|
223 |
else {
|
raster@14180
|
224 |
addOR = true;
|
raster@14180
|
225 |
}
|
raster@14180
|
226 |
|
raster@14180
|
227 |
message.append(tag);
|
raster@14180
|
228 |
}
|
raster@14180
|
229 |
}
|
raster@14180
|
230 |
|
raster@14180
|
231 |
if (astError != null){
|
raster@14180
|
232 |
start = astError.getStartOffset();
|
raster@14180
|
233 |
end = astError.getEndOffset();
|
raster@14180
|
234 |
// if the asterror is trough two lines, the problem is ussually at the end
|
raster@14180
|
235 |
String text = context.getSource().substring(start, end);
|
raster@14180
|
236 |
int lastNewLine = text.length()-1;
|
raster@14180
|
237 |
while (text.charAt(lastNewLine) == '\n' || text.charAt(lastNewLine) == '\r'
|
raster@14180
|
238 |
|| text.charAt(lastNewLine) == '\t' || text.charAt(lastNewLine) == ' ') {
|
raster@14180
|
239 |
lastNewLine--;
|
raster@14180
|
240 |
if (lastNewLine < 0) {
|
raster@14180
|
241 |
break;
|
raster@14180
|
242 |
}
|
raster@14180
|
243 |
}
|
raster@14180
|
244 |
lastNewLine = text.lastIndexOf('\n', lastNewLine); //NOI18N
|
raster@14180
|
245 |
if (lastNewLine > 0) {
|
raster@14180
|
246 |
start = start + lastNewLine + 1;
|
raster@14180
|
247 |
}
|
raster@14180
|
248 |
}
|
raster@15779
|
249 |
error = new AdaError(message.toString(), context.getSnapshot().getSource().getFileObject(), start, end, Severity.ERROR, new Object[]{syntaxError});
|
raster@14180
|
250 |
return error;
|
raster@14180
|
251 |
}
|
raster@14180
|
252 |
|
raster@14180
|
253 |
public List<SyntaxError> getSyntaxErrors() {
|
raster@14180
|
254 |
return syntaxErrors;
|
raster@14180
|
255 |
}
|
raster@14180
|
256 |
|
raster@14180
|
257 |
private String getTokenTextForm (int token) {
|
raster@14180
|
258 |
String text = null;
|
raster@14180
|
259 |
switch (token) {
|
raster@14180
|
260 |
case Ada95ASTSymbols.BASED_LITERAL : text = "number"; break; //NOI18N
|
raster@14180
|
261 |
case Ada95ASTSymbols.DECIMAL_LITERAL : text = "number"; break; //NOI18N
|
raster@14180
|
262 |
case Ada95ASTSymbols.IDENTIFIER : text = "identifier"; break; //NOI18N
|
raster@14180
|
263 |
case Ada95ASTSymbols.ABORT : text = "abort"; break; //NOI18N
|
raster@14180
|
264 |
case Ada95ASTSymbols.ABS : text = "abs"; break; //NOI18N
|
raster@14180
|
265 |
case Ada95ASTSymbols.ABSTRACT : text = "abstract"; break; //NOI18N
|
raster@14180
|
266 |
case Ada95ASTSymbols.ACCESS : text = "access"; break; //NOI18N
|
raster@14180
|
267 |
case Ada95ASTSymbols.ACCEPT : text = "access"; break; //NOI18N
|
raster@14180
|
268 |
case Ada95ASTSymbols.ALIASED : text = "aliased"; break; //NOI18N
|
raster@14180
|
269 |
case Ada95ASTSymbols.ALL : text = "all"; break; //NOI18N
|
raster@14180
|
270 |
case Ada95ASTSymbols.AND : text = "and"; break; //NOI18N
|
raster@14180
|
271 |
case Ada95ASTSymbols.ARRAY : text = "array"; break; //NOI18N
|
raster@14180
|
272 |
case Ada95ASTSymbols.AT : text = "at"; break; //NOI18N
|
raster@14180
|
273 |
case Ada95ASTSymbols.BEGIN : text = "begin"; break; //NOI18N
|
raster@14180
|
274 |
case Ada95ASTSymbols.BODY : text = "body"; break; //NOI18N
|
raster@14180
|
275 |
case Ada95ASTSymbols.CONSTANT : text = "constant"; break; //NOI18N
|
raster@14180
|
276 |
case Ada95ASTSymbols.CASE : text = "case"; break; //NOI18N
|
raster@14180
|
277 |
case Ada95ASTSymbols.DECLARE : text = "declare"; break; //NOI18N
|
raster@14180
|
278 |
case Ada95ASTSymbols.DELAY : text = "delay"; break; //NOI18N
|
raster@14180
|
279 |
case Ada95ASTSymbols.DELTA : text = "delta"; break; //NOI18N
|
raster@14180
|
280 |
case Ada95ASTSymbols.DIGITS : text = "digits"; break; //NOI18N
|
raster@14180
|
281 |
case Ada95ASTSymbols.DO : text = "do"; break; //NOI18N
|
raster@14180
|
282 |
case Ada95ASTSymbols.ELSE : text = "else"; break; //NOI18N
|
raster@14180
|
283 |
case Ada95ASTSymbols.ELSIF : text = "elsif"; break; //NOI18N
|
raster@14180
|
284 |
case Ada95ASTSymbols.END : text = "end"; break; //NOI18N
|
raster@14180
|
285 |
case Ada95ASTSymbols.ENTRY : text = "entry"; break; //NOI18N
|
raster@14180
|
286 |
case Ada95ASTSymbols.EXCEPTION : text = "exception"; break; //NOI18N
|
raster@14180
|
287 |
case Ada95ASTSymbols.EXIT : text = "exit"; break; //NOI18N
|
raster@14180
|
288 |
case Ada95ASTSymbols.FOR : text = "for"; break; //NOI18N
|
raster@14180
|
289 |
case Ada95ASTSymbols.FUNCTION : text = "function"; break; //NOI18N
|
raster@14180
|
290 |
case Ada95ASTSymbols.GENERIC : text = "generic"; break; //NOI18N
|
raster@14180
|
291 |
case Ada95ASTSymbols.GOTO : text = "goto"; break; //NOI18N
|
raster@14180
|
292 |
case Ada95ASTSymbols.IF : text = "if"; break; //NOI18N
|
raster@14180
|
293 |
case Ada95ASTSymbols.IN : text = "in"; break; //NOI18N
|
raster@14180
|
294 |
case Ada95ASTSymbols.IS : text = "is"; break; //NOI18N
|
raster@14180
|
295 |
case Ada95ASTSymbols.LIMITED : text = "limited"; break; //NOI18N
|
raster@14180
|
296 |
case Ada95ASTSymbols.LOOP : text = "loop"; break; //NOI18N
|
raster@14180
|
297 |
case Ada95ASTSymbols.MOD : text = "mod"; break; //NOI18N
|
raster@14180
|
298 |
case Ada95ASTSymbols.NEW : text = "new"; break; //NOI18N
|
raster@14180
|
299 |
case Ada95ASTSymbols.NOT : text = "not"; break; //NOI18N
|
raster@14180
|
300 |
case Ada95ASTSymbols.NULL : text = "null"; break; //NOI18N
|
raster@14180
|
301 |
case Ada95ASTSymbols.OF : text = "of"; break; //NOI18N
|
raster@14180
|
302 |
case Ada95ASTSymbols.OR : text = "or"; break; //NOI18N
|
raster@14180
|
303 |
case Ada95ASTSymbols.OTHERS : text = "others"; break; //NOI18N
|
raster@14180
|
304 |
case Ada95ASTSymbols.OUT : text = "out"; break; //NOI18N
|
raster@14180
|
305 |
case Ada95ASTSymbols.PACKAGE : text = "package"; break; //NOI18N
|
raster@14180
|
306 |
case Ada95ASTSymbols.PRAGMA : text = "pragma"; break; //NOI18N
|
raster@14180
|
307 |
case Ada95ASTSymbols.PRIVATE : text = "private"; break; //NOI18N
|
raster@14180
|
308 |
case Ada95ASTSymbols.PROCEDURE : text = "procedure"; break; //NOI18N
|
raster@14180
|
309 |
case Ada95ASTSymbols.PROTECTED : text = "protected"; break; //NOI18N
|
raster@14180
|
310 |
case Ada95ASTSymbols.RETURN : text = "return"; break; //NOI18N
|
raster@14180
|
311 |
case Ada95ASTSymbols.REVERSE : text = "reverse"; break; //NOI18N
|
raster@14180
|
312 |
case Ada95ASTSymbols.RAISE : text = "raise"; break; //NOI18N
|
raster@14180
|
313 |
case Ada95ASTSymbols.RANGE : text = "range"; break; //NOI18N
|
raster@14180
|
314 |
case Ada95ASTSymbols.RECORD : text = "record"; break; //NOI18N
|
raster@14180
|
315 |
case Ada95ASTSymbols.REM : text = "rem"; break; //NOI18N
|
raster@14180
|
316 |
case Ada95ASTSymbols.RENAMES : text = "renames"; break; //NOI18N
|
raster@14180
|
317 |
case Ada95ASTSymbols.REQUEUE : text = "requeue"; break; //NOI18N
|
raster@14180
|
318 |
case Ada95ASTSymbols.SELECT : text = "select"; break; //NOI18N
|
raster@14180
|
319 |
case Ada95ASTSymbols.SEPARATE : text = "separate"; break; //NOI18N
|
raster@14180
|
320 |
case Ada95ASTSymbols.SUBTYPE : text = "subtype"; break; //NOI18N
|
raster@14180
|
321 |
case Ada95ASTSymbols.TAGGED : text = "tagged"; break; //NOI18N
|
raster@14180
|
322 |
case Ada95ASTSymbols.TASK : text = "task"; break; //NOI18N
|
raster@14180
|
323 |
case Ada95ASTSymbols.TERMINATE : text = "terminate"; break; //NOI18N
|
raster@14180
|
324 |
case Ada95ASTSymbols.THEN : text = "then"; break; //NOI18N
|
raster@14180
|
325 |
case Ada95ASTSymbols.TYPE : text = "type"; break; //NOI18N
|
raster@14180
|
326 |
case Ada95ASTSymbols.UNTIL : text = "until"; break; //NOI18N
|
raster@14180
|
327 |
case Ada95ASTSymbols.USE : text = "use"; break; //NOI18N
|
raster@14180
|
328 |
case Ada95ASTSymbols.WHEN : text = "when"; break; //NOI18N
|
raster@14180
|
329 |
case Ada95ASTSymbols.WHILE : text = "while"; break; //NOI18N
|
raster@14180
|
330 |
case Ada95ASTSymbols.WITH : text = "with"; break; //NOI18N
|
raster@14180
|
331 |
case Ada95ASTSymbols.XOR : text = "xor"; break; //NOI18N
|
raster@14180
|
332 |
case Ada95ASTSymbols.AMP : text = "&"; break; //NOI18N
|
raster@14180
|
333 |
case Ada95ASTSymbols.TICK : text = "'"; break; //NOI18N
|
raster@14180
|
334 |
case Ada95ASTSymbols.LPAREN : text = "("; break; //NOI18N
|
raster@14180
|
335 |
case Ada95ASTSymbols.RPAREN : text = ")"; break; //NOI18N
|
raster@14180
|
336 |
case Ada95ASTSymbols.STAR : text = "*"; break; //NOI18N
|
raster@14180
|
337 |
case Ada95ASTSymbols.PLUS : text = "+"; break; //NOI18N
|
raster@14180
|
338 |
case Ada95ASTSymbols.COMMA : text = ","; break; //NOI18N
|
raster@14180
|
339 |
case Ada95ASTSymbols.MINUS : text = "-"; break; //NOI18N
|
raster@14180
|
340 |
case Ada95ASTSymbols.DOT : text = "."; break; //NOI18N
|
raster@14180
|
341 |
case Ada95ASTSymbols.SLASH : text = "/"; break; //NOI18N
|
raster@14180
|
342 |
case Ada95ASTSymbols.COLON : text = ":"; break; //NOI18N
|
raster@14180
|
343 |
case Ada95ASTSymbols.SEMICOLON : text = ";"; break; //NOI18N
|
raster@14180
|
344 |
case Ada95ASTSymbols.GT : text = "<"; break; //NOI18N
|
raster@14180
|
345 |
case Ada95ASTSymbols.EQ : text = "="; break; //NOI18N
|
raster@14180
|
346 |
case Ada95ASTSymbols.LT : text = ">"; break; //NOI18N
|
raster@14180
|
347 |
case Ada95ASTSymbols.BAR : text = "|"; break; //NOI18N
|
raster@14180
|
348 |
case Ada95ASTSymbols.ARROW : text = "=>"; break; //NOI18N
|
raster@14180
|
349 |
case Ada95ASTSymbols.DOT_DOT : text = ".."; break; //NOI18N
|
raster@15779
|
350 |
case Ada95ASTSymbols.EXPON : text = "**"; break; //NOI18N
|
raster@14180
|
351 |
case Ada95ASTSymbols.ASSIGNMENT : text = ":="; break; //NOI18N
|
raster@14180
|
352 |
case Ada95ASTSymbols.INEQ : text = "/="; break; //NOI18N
|
raster@14180
|
353 |
case Ada95ASTSymbols.GTEQ : text = ">="; break; //NOI18N
|
raster@14180
|
354 |
case Ada95ASTSymbols.LTEQ : text = "<="; break; //NOI18N
|
raster@14180
|
355 |
case Ada95ASTSymbols.LTLT : text = "<<"; break; //NOI18N
|
raster@14180
|
356 |
case Ada95ASTSymbols.GTGT : text = ">>"; break; //NOI18N
|
raster@14180
|
357 |
case Ada95ASTSymbols.BOX : text = "<>"; break; //NOI18N
|
raster@14180
|
358 |
}
|
raster@14180
|
359 |
return text;
|
raster@14180
|
360 |
}
|
raster@15779
|
361 |
|
raster@15779
|
362 |
private class FatalError extends AdaError{
|
raster@15779
|
363 |
FatalError(){
|
raster@15779
|
364 |
super(NbBundle.getMessage(Ada95ErrorHandler.class, "MSG_FatalError"),
|
raster@15779
|
365 |
context.getSnapshot().getSource().getFileObject(),
|
raster@15779
|
366 |
0, context.getSource().length(),
|
raster@15779
|
367 |
Severity.ERROR, null);
|
raster@15779
|
368 |
}
|
raster@15779
|
369 |
|
raster@15779
|
370 |
@Override
|
raster@15779
|
371 |
public boolean isLineError() {
|
raster@15779
|
372 |
return false;
|
raster@15779
|
373 |
}
|
raster@15779
|
374 |
}
|
raster@14180
|
375 |
}
|