Clover coverage report - PMD - 3.7
Coverage timestamp: Wed May 31 2006 09:25:59 EDT

file stats: | LOC: | 1,639 |  | Methods: | 88
| NCLOC: | 1,462 |  | Classes: | 3

Source file | Conditionals | Statements | Methods | TOTAL

JspParser.java

38%

63.5%

85.2%

58.2%

1 |  | /* Generated By:JJTree&JavaCC: Do not edit this line. JspParser.java */
2 |  | /**
3 |  | * JSP Parser for PMD.
4 |  | * @author Pieter � Application Engineers NV/SA � http://www.ae.be
5 |  | */
6 |  |
7 |  | package net.sourceforge.pmd.jsp.ast;
8 |  |
9 |  | public class JspParser/*@bgen(jjtree)*/implements JspParserTreeConstants, JspParserConstants {/*@bgen(jjtree)*/
10 |  | protected JJTJspParserState jjtree = new JJTJspParserState();
11 |  | /**
12 |  | * Return the contents of a quote.
13 |  | * @param quote String - starting and ending with " or '
14 |  | * @return String a substring of quote: quote without the first and list
15 |  | * character.
16 |  | */
17 | 14 | private static String quoteContent(String quote) {
18 | 14 | return quote.substring(1, quote.length()-1);
19 |  | }
20 |  |
21 |  | /**
22 |  | * Return the contents of a EL expression or a Value Binding expression.
23 |  | * @param expression String - starting with ${ or #{ and ending with }
24 |  | * @return String a substring of expression: expression without the first two and list
25 |  | * characters.
26 |  | */
27 | 5 | private static String expressionContent(String expression) {
28 | 5 | return expression.substring(2, expression.length()-1).trim();
29 |  | }
30 |  |
31 |  | /** ******************************************************************** */
32 |  | /** ************************* JSP GRAMMAR **************************** */
33 |  | /** ******************************************************************** */
34 |  |
35 |  | /**
36 |  | * The root of the AST of a JSP.
37 |  | */
38 | 39 | final public ASTCompilationUnit CompilationUnit() throws ParseException {
39 |  | /*@bgen(jjtree) CompilationUnit */
40 | 39 | ASTCompilationUnit jjtn000 = new ASTCompilationUnit(this, JJTCOMPILATIONUNIT);
41 | 39 | boolean jjtc000 = true;
42 | 39 | jjtree.openNodeScope(jjtn000);
43 | 39 | try {
44 | 39 | Prolog();
45 | 39 | Content();
46 | 39 | jj_consume_token(0);
47 | 39 | jjtree.closeNodeScope(jjtn000, true);
48 | 39 | jjtc000 = false;
49 | 39 | {if (true) return jjtn000;}
50 |  | } catch (Throwable jjte000) {
51 | 0 | if (jjtc000) {
52 | 0 | jjtree.clearNodeScope(jjtn000);
53 | 0 | jjtc000 = false;
54 |  | } else {
55 | 0 | jjtree.popNode();
56 |  | }
57 | 0 | if (jjte000 instanceof RuntimeException) {
58 | 0 | {if (true) throw (RuntimeException)jjte000;}
59 |  | }
60 | 0 | if (jjte000 instanceof ParseException) {
61 | 0 | {if (true) throw (ParseException)jjte000;}
62 |  | }
63 | 0 | {if (true) throw (Error)jjte000;}
64 |  | } finally {
65 | 39 | if (jjtc000) {
66 | 0 | jjtree.closeNodeScope(jjtn000, true);
67 |  | }
68 |  | }
69 | 0 | throw new RuntimeException("Missing return statement in function");
70 |  | }
71 |  |
72 |  | /**
73 |  | * The optional prolog of a JSP, including (xml) declarations and DTD.
74 |  | */
75 | 39 | final public void Prolog() throws ParseException {
76 | 39 | if (jj_2_1(2147483647)) {
77 | 1 | label_1:
78 |  | while (true) {
79 | 1 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
80 | 0 | case COMMENT_START:
81 | 0 | case JSP_COMMENT_START:
82 |  | ;
83 | 0 | break;
84 | 1 | default:
85 | 1 | jj_la1[0] = jj_gen;
86 | 1 | break label_1;
87 |  | }
88 | 0 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
89 | 0 | case COMMENT_START:
90 | 0 | CommentTag();
91 | 0 | break;
92 | 0 | case JSP_COMMENT_START:
93 | 0 | JspComment();
94 | 0 | break;
95 | 0 | default:
96 | 0 | jj_la1[1] = jj_gen;
97 | 0 | jj_consume_token(-1);
98 | 0 | throw new ParseException();
99 |  | }
100 |  | }
101 | 1 | Declaration();
102 |  | } else {
103 |  | ;
104 |  | }
105 | 39 | if (jj_2_2(2147483647)) {
106 | 1 | label_2:
107 |  | while (true) {
108 | 1 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
109 | 0 | case COMMENT_START:
110 | 0 | case JSP_COMMENT_START:
111 |  | ;
112 | 0 | break;
113 | 1 | default:
114 | 1 | jj_la1[2] = jj_gen;
115 | 1 | break label_2;
116 |  | }
117 | 0 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
118 | 0 | case COMMENT_START:
119 | 0 | CommentTag();
120 | 0 | break;
121 | 0 | case JSP_COMMENT_START:
122 | 0 | JspComment();
123 | 0 | break;
124 | 0 | default:
125 | 0 | jj_la1[3] = jj_gen;
126 | 0 | jj_consume_token(-1);
127 | 0 | throw new ParseException();
128 |  | }
129 |  | }
130 | 1 | DoctypeDeclaration();
131 |  | } else {
132 |  | ;
133 |  | }
134 |  | }
135 |  |
136 |  | /**
137 |  | * Everything between a start-tag and the corresponding end-tag of an element.
138 |  | */
139 | 129 | final public void Content() throws ParseException {
140 |  | /*@bgen(jjtree) Content */
141 | 129 | ASTContent jjtn000 = new ASTContent(this, JJTCONTENT);
142 | 129 | boolean jjtc000 = true;
143 | 129 | jjtree.openNodeScope(jjtn000);
144 | 129 | try {
145 | 129 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
146 | 0 | case EL_EXPRESSION:
147 | 18 | case UNPARSED_TEXT:
148 | 18 | Text();
149 | 18 | break;
150 | 91 | case TAG_START:
151 | 6 | case COMMENT_START:
152 | 1 | case CDATA_START:
153 | 2 | case JSP_COMMENT_START:
154 | 1 | case JSP_DECLARATION_START:
155 | 1 | case JSP_EXPRESSION_START:
156 | 2 | case JSP_SCRIPTLET_START:
157 | 7 | case JSP_DIRECTIVE_START:
158 | 111 | ContentElementPossiblyWithText();
159 | 111 | break;
160 | 0 | default:
161 | 0 | jj_la1[4] = jj_gen;
162 | 0 | jj_consume_token(-1);
163 | 0 | throw new ParseException();
164 |  | }
165 | 129 | label_3:
166 |  | while (true) {
167 | 142 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
168 | 9 | case TAG_START:
169 | 0 | case COMMENT_START:
170 | 0 | case CDATA_START:
171 | 0 | case JSP_COMMENT_START:
172 | 0 | case JSP_DECLARATION_START:
173 | 0 | case JSP_EXPRESSION_START:
174 | 0 | case JSP_SCRIPTLET_START:
175 | 4 | case JSP_DIRECTIVE_START:
176 |  | ;
177 | 13 | break;
178 | 129 | default:
179 | 129 | jj_la1[5] = jj_gen;
180 | 129 | break label_3;
181 |  | }
182 | 13 | ContentElementPossiblyWithText();
183 |  | }
184 |  | } catch (Throwable jjte000) {
185 | 0 | if (jjtc000) {
186 | 0 | jjtree.clearNodeScope(jjtn000);
187 | 0 | jjtc000 = false;
188 |  | } else {
189 | 0 | jjtree.popNode();
190 |  | }
191 | 0 | if (jjte000 instanceof RuntimeException) {
192 | 0 | {if (true) throw (RuntimeException)jjte000;}
193 |  | }
194 | 0 | if (jjte000 instanceof ParseException) {
195 | 0 | {if (true) throw (ParseException)jjte000;}
196 |  | }
197 | 0 | {if (true) throw (Error)jjte000;}
198 |  | } finally {
199 | 129 | if (jjtc000) {
200 | 129 | jjtree.closeNodeScope(jjtn000, true);
201 |  | }
202 |  | }
203 |  | }
204 |  |
205 |  | /**
206 |  | * A single (non-text) element that can occur between a start- and end-tag of an element.
207 |  | * Possibly followed by text.
208 |  | */
209 | 124 | final public void ContentElementPossiblyWithText() throws ParseException {
210 | 124 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
211 | 6 | case COMMENT_START:
212 | 6 | CommentTag();
213 | 6 | break;
214 | 100 | case TAG_START:
215 | 100 | Element();
216 | 100 | break;
217 | 1 | case CDATA_START:
218 | 1 | CData();
219 | 1 | break;
220 | 2 | case JSP_COMMENT_START:
221 | 2 | JspComment();
222 | 2 | break;
223 | 1 | case JSP_DECLARATION_START:
224 | 1 | JspDeclaration();
225 | 1 | break;
226 | 1 | case JSP_EXPRESSION_START:
227 | 1 | JspExpression();
228 | 1 | break;
229 | 2 | case JSP_SCRIPTLET_START:
230 | 2 | JspScriptlet();
231 | 2 | break;
232 | 11 | case JSP_DIRECTIVE_START:
233 | 11 | JspDirective();
234 | 11 | break;
235 | 0 | default:
236 | 0 | jj_la1[6] = jj_gen;
237 | 0 | jj_consume_token(-1);
238 | 0 | throw new ParseException();
239 |  | }
240 | 124 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
241 | 0 | case EL_EXPRESSION:
242 | 8 | case UNPARSED_TEXT:
243 | 8 | Text();
244 | 8 | break;
245 | 116 | default:
246 | 116 | jj_la1[7] = jj_gen;
247 |  | ;
248 |  | }
249 |  | }
250 |  |
251 | 11 | final public void JspDirective() throws ParseException {
252 |  | /*@bgen(jjtree) JspDirective */
253 | 11 | ASTJspDirective jjtn000 = new ASTJspDirective(this, JJTJSPDIRECTIVE);
254 | 11 | boolean jjtc000 = true;
255 | 11 | jjtree.openNodeScope(jjtn000);Token t;
256 | 11 | try {
257 | 11 | jj_consume_token(JSP_DIRECTIVE_START);
258 | 11 | t = jj_consume_token(JSP_DIRECTIVE_NAME);
259 | 11 | jjtn000.setName(t.image);
260 | 11 | label_4:
261 |  | while (true) {
262 | 23 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
263 | 12 | case JSP_DIRECTIVE_ATTRIBUTE_NAME:
264 |  | ;
265 | 12 | break;
266 | 11 | default:
267 | 11 | jj_la1[8] = jj_gen;
268 | 11 | break label_4;
269 |  | }
270 | 12 | JspDirectiveAttribute();
271 |  | }
272 | 11 | jj_consume_token(JSP_DIRECTIVE_END);
273 |  | } catch (Throwable jjte000) {
274 | 0 | if (jjtc000) {
275 | 0 | jjtree.clearNodeScope(jjtn000);
276 | 0 | jjtc000 = false;
277 |  | } else {
278 | 0 | jjtree.popNode();
279 |  | }
280 | 0 | if (jjte000 instanceof RuntimeException) {
281 | 0 | {if (true) throw (RuntimeException)jjte000;}
282 |  | }
283 | 0 | if (jjte000 instanceof ParseException) {
284 | 0 | {if (true) throw (ParseException)jjte000;}
285 |  | }
286 | 0 | {if (true) throw (Error)jjte000;}
287 |  | } finally {
288 | 11 | if (jjtc000) {
289 | 11 | jjtree.closeNodeScope(jjtn000, true);
290 |  | }
291 |  | }
292 |  | }
293 |  |
294 | 12 | final public void JspDirectiveAttribute() throws ParseException {
295 |  | /*@bgen(jjtree) JspDirectiveAttribute */
296 | 12 | ASTJspDirectiveAttribute jjtn000 = new ASTJspDirectiveAttribute(this, JJTJSPDIRECTIVEATTRIBUTE);
297 | 12 | boolean jjtc000 = true;
298 | 12 | jjtree.openNodeScope(jjtn000);Token t;
299 | 12 | try {
300 | 12 | t = jj_consume_token(JSP_DIRECTIVE_ATTRIBUTE_NAME);
301 | 12 | jjtn000.setName(t.image);
302 | 12 | jj_consume_token(JSP_DIRECTIVE_ATTRIBUTE_EQUALS);
303 | 12 | t = jj_consume_token(JSP_DIRECTIVE_ATTRIBUTE_VALUE);
304 | 12 | jjtree.closeNodeScope(jjtn000, true);
305 | 12 | jjtc000 = false;
306 | 12 | jjtn000.setValue(quoteContent(t.image));
307 |  | } finally {
308 | 12 | if (jjtc000) {
309 | 0 | jjtree.closeNodeScope(jjtn000, true);
310 |  | }
311 |  | }
312 |  | }
313 |  |
314 | 2 | final public void JspScriptlet() throws ParseException {
315 |  | /*@bgen(jjtree) JspScriptlet */
316 | 2 | ASTJspScriptlet jjtn000 = new ASTJspScriptlet(this, JJTJSPSCRIPTLET);
317 | 2 | boolean jjtc000 = true;
318 | 2 | jjtree.openNodeScope(jjtn000);Token t;
319 | 2 | try {
320 | 2 | jj_consume_token(JSP_SCRIPTLET_START);
321 | 2 | t = jj_consume_token(JSP_SCRIPTLET);
322 | 2 | jjtn000.setImage(t.image.trim());
323 | 2 | jj_consume_token(JSP_SCRIPTLET_END);
324 |  | } finally {
325 | 2 | if (jjtc000) {
326 | 2 | jjtree.closeNodeScope(jjtn000, true);
327 |  | }
328 |  | }
329 |  | }
330 |  |
331 | 1 | final public void JspExpression() throws ParseException {
332 |  | /*@bgen(jjtree) JspExpression */
333 | 1 | ASTJspExpression jjtn000 = new ASTJspExpression(this, JJTJSPEXPRESSION);
334 | 1 | boolean jjtc000 = true;
335 | 1 | jjtree.openNodeScope(jjtn000);Token t;
336 | 1 | try {
337 | 1 | jj_consume_token(JSP_EXPRESSION_START);
338 | 1 | t = jj_consume_token(JSP_EXPRESSION);
339 | 1 | jjtn000.setImage(t.image.trim());
340 | 1 | jj_consume_token(JSP_EXPRESSION_END);
341 |  | } finally {
342 | 1 | if (jjtc000) {
343 | 1 | jjtree.closeNodeScope(jjtn000, true);
344 |  | }
345 |  | }
346 |  | }
347 |  |
348 | 1 | final public void JspDeclaration() throws ParseException {
349 |  | /*@bgen(jjtree) JspDeclaration */
350 | 1 | ASTJspDeclaration jjtn000 = new ASTJspDeclaration(this, JJTJSPDECLARATION);
351 | 1 | boolean jjtc000 = true;
352 | 1 | jjtree.openNodeScope(jjtn000);Token t;
353 | 1 | try {
354 | 1 | jj_consume_token(JSP_DECLARATION_START);
355 | 1 | t = jj_consume_token(JSP_DECLARATION);
356 | 1 | jjtn000.setImage(t.image.trim());
357 | 1 | jj_consume_token(JSP_DECLARATION_END);
358 |  | } finally {
359 | 1 | if (jjtc000) {
360 | 1 | jjtree.closeNodeScope(jjtn000, true);
361 |  | }
362 |  | }
363 |  | }
364 |  |
365 | 2 | final public void JspComment() throws ParseException {
366 |  | /*@bgen(jjtree) JspComment */
367 | 2 | ASTJspComment jjtn000 = new ASTJspComment(this, JJTJSPCOMMENT);
368 | 2 | boolean jjtc000 = true;
369 | 2 | jjtree.openNodeScope(jjtn000);Token t;
370 | 2 | try {
371 | 2 | jj_consume_token(JSP_COMMENT_START);
372 | 2 | t = jj_consume_token(JSP_COMMENT_CONTENT);
373 | 2 | jjtn000.setImage(t.image.trim());
374 | 2 | jj_consume_token(JSP_COMMENT_END);
375 |  | } finally {
376 | 2 | if (jjtc000) {
377 | 2 | jjtree.closeNodeScope(jjtn000, true);
378 |  | }
379 |  | }
380 |  | }
381 |  |
382 |  | /**
383 |  | * This production groups all characters between two tags, where
384 |  | * tag is an xml-tag "<...>" or a jsp-page-tag "<%...%>" or CDATA "<![CDATA[...]]>".
385 |  | * Text consists of unparsed text and/or Expression Language expressions.
386 |  | */
387 | 26 | final public void Text() throws ParseException {
388 |  | /*@bgen(jjtree) Text */
389 | 26 | ASTText jjtn000 = new ASTText(this, JJTTEXT);
390 | 26 | boolean jjtc000 = true;
391 | 26 | jjtree.openNodeScope(jjtn000);StringBuffer content = new StringBuffer();
392 | 26 | String tmp;
393 | 26 | try {
394 | 26 | label_5:
395 |  | while (true) {
396 | 28 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
397 | 27 | case UNPARSED_TEXT:
398 | 27 | tmp = UnparsedText();
399 | 27 | content.append(tmp);
400 | 27 | break;
401 | 1 | case EL_EXPRESSION:
402 | 1 | tmp = ElExpression();
403 | 1 | content.append(tmp);
404 | 1 | break;
405 | 0 | default:
406 | 0 | jj_la1[9] = jj_gen;
407 | 0 | jj_consume_token(-1);
408 | 0 | throw new ParseException();
409 |  | }
410 | 28 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
411 | 1 | case EL_EXPRESSION:
412 | 1 | case UNPARSED_TEXT:
413 |  | ;
414 | 2 | break;
415 | 26 | default:
416 | 26 | jj_la1[10] = jj_gen;
417 | 26 | break label_5;
418 |  | }
419 |  | }
420 | 26 | jjtree.closeNodeScope(jjtn000, true);
421 | 26 | jjtc000 = false;
422 | 26 | jjtn000.setImage(content.toString());
423 |  | } catch (Throwable jjte000) {
424 | 0 | if (jjtc000) {
425 | 0 | jjtree.clearNodeScope(jjtn000);
426 | 0 | jjtc000 = false;
427 |  | } else {
428 | 0 | jjtree.popNode();
429 |  | }
430 | 0 | if (jjte000 instanceof RuntimeException) {
431 | 0 | {if (true) throw (RuntimeException)jjte000;}
432 |  | }
433 | 0 | if (jjte000 instanceof ParseException) {
434 | 0 | {if (true) throw (ParseException)jjte000;}
435 |  | }
436 | 0 | {if (true) throw (Error)jjte000;}
437 |  | } finally {
438 | 26 | if (jjtc000) {
439 | 0 | jjtree.closeNodeScope(jjtn000, true);
440 |  | }
441 |  | }
442 |  | }
443 |  |
444 | 27 | final public String UnparsedText() throws ParseException {
445 |  | /*@bgen(jjtree) UnparsedText */
446 | 27 | ASTUnparsedText jjtn000 = new ASTUnparsedText(this, JJTUNPARSEDTEXT);
447 | 27 | boolean jjtc000 = true;
448 | 27 | jjtree.openNodeScope(jjtn000);Token t;
449 | 27 | try {
450 | 27 | t = jj_consume_token(UNPARSED_TEXT);
451 | 27 | jjtree.closeNodeScope(jjtn000, true);
452 | 27 | jjtc000 = false;
453 | 27 | jjtn000.setImage(t.image);
454 | 27 | {if (true) return t.image;}
455 |  | } finally {
456 | 27 | if (jjtc000) {
457 | 0 | jjtree.closeNodeScope(jjtn000, true);
458 |  | }
459 |  | }
460 | 0 | throw new RuntimeException("Missing return statement in function");
461 |  | }
462 |  |
463 |  | /**
464 |  | * Text that contains no single quotes, and that does not contain the start
465 |  | * of a EL expression or value binding.
466 |  | */
467 | 11 | final public String UnparsedTextNoSingleQuotes() throws ParseException {
468 |  | /*@bgen(jjtree) UnparsedText */
469 | 11 | ASTUnparsedText jjtn000 = new ASTUnparsedText(this, JJTUNPARSEDTEXT);
470 | 11 | boolean jjtc000 = true;
471 | 11 | jjtree.openNodeScope(jjtn000);Token t;
472 | 11 | try {
473 | 11 | t = jj_consume_token(UNPARSED_TEXT_NO_SINGLE_QUOTES);
474 | 11 | jjtree.closeNodeScope(jjtn000, true);
475 | 11 | jjtc000 = false;
476 | 11 | jjtn000.setImage(t.image);
477 | 11 | {if (true) return t.image;}
478 |  | } finally {
479 | 11 | if (jjtc000) {
480 | 0 | jjtree.closeNodeScope(jjtn000, true);
481 |  | }
482 |  | }
483 | 0 | throw new RuntimeException("Missing return statement in function");
484 |  | }
485 |  |
486 |  | /**
487 |  | * Text that contains no double quotes, and that does not contain the start
488 |  | * of a EL expression or value binding.
489 |  | */
490 | 11 | final public String UnparsedTextNoDoubleQuotes() throws ParseException {
491 |  | /*@bgen(jjtree) UnparsedText */
492 | 11 | ASTUnparsedText jjtn000 = new ASTUnparsedText(this, JJTUNPARSEDTEXT);
493 | 11 | boolean jjtc000 = true;
494 | 11 | jjtree.openNodeScope(jjtn000);Token t;
495 | 11 | try {
496 | 11 | t = jj_consume_token(UNPARSED_TEXT_NO_DOUBLE_QUOTES);
497 | 11 | jjtree.closeNodeScope(jjtn000, true);
498 | 11 | jjtc000 = false;
499 | 11 | jjtn000.setImage(t.image);
500 | 11 | {if (true) return t.image;}
501 |  | } finally {
502 | 11 | if (jjtc000) {
503 | 0 | jjtree.closeNodeScope(jjtn000, true);
504 |  | }
505 |  | }
506 | 0 | throw new RuntimeException("Missing return statement in function");
507 |  | }
508 |  |
509 |  | /**
510 |  | * An EL expression, not within an attribute value.
511 |  | */
512 | 1 | final public String ElExpression() throws ParseException {
513 |  | /*@bgen(jjtree) ElExpression */
514 | 1 | ASTElExpression jjtn000 = new ASTElExpression(this, JJTELEXPRESSION);
515 | 1 | boolean jjtc000 = true;
516 | 1 | jjtree.openNodeScope(jjtn000);Token t;
517 | 1 | try {
518 | 1 | t = jj_consume_token(EL_EXPRESSION);
519 | 1 | jjtree.closeNodeScope(jjtn000, true);
520 | 1 | jjtc000 = false;
521 | 1 | jjtn000.setImage(expressionContent(t.image));
522 | 1 | {if (true) return t.image;}
523 |  | } finally {
524 | 1 | if (jjtc000) {
525 | 0 | jjtree.closeNodeScope(jjtn000, true);
526 |  | }
527 |  | }
528 | 0 | throw new RuntimeException("Missing return statement in function");
529 |  | }
530 |  |
531 | 2 | final public String ValueBindingInAttribute() throws ParseException {
532 |  | /*@bgen(jjtree) ValueBinding */
533 | 2 | ASTValueBinding jjtn000 = new ASTValueBinding(this, JJTVALUEBINDING);
534 | 2 | boolean jjtc000 = true;
535 | 2 | jjtree.openNodeScope(jjtn000);Token t;
536 | 2 | try {
537 | 2 | t = jj_consume_token(VALUE_BINDING_IN_ATTRIBUTE);
538 | 2 | jjtree.closeNodeScope(jjtn000, true);
539 | 2 | jjtc000 = false;
540 | 2 | jjtn000.setImage(expressionContent(t.image));
541 | 2 | {if (true) return t.image;}
542 |  | } finally {
543 | 2 | if (jjtc000) {
544 | 0 | jjtree.closeNodeScope(jjtn000, true);
545 |  | }
546 |  | }
547 | 0 | throw new RuntimeException("Missing return statement in function");
548 |  | }
549 |  |
550 | 2 | final public String ElExpressionInAttribute() throws ParseException {
551 |  | /*@bgen(jjtree) ElExpression */
552 | 2 | ASTElExpression jjtn000 = new ASTElExpression(this, JJTELEXPRESSION);
553 | 2 | boolean jjtc000 = true;
554 | 2 | jjtree.openNodeScope(jjtn000);Token t;
555 | 2 | try {
556 | 2 | t = jj_consume_token(EL_EXPRESSION_IN_ATTRIBUTE);
557 | 2 | jjtree.closeNodeScope(jjtn000, true);
558 | 2 | jjtc000 = false;
559 | 2 | jjtn000.setImage(expressionContent(t.image));
560 | 2 | {if (true) return t.image;}
561 |  | } finally {
562 | 2 | if (jjtc000) {
563 | 0 | jjtree.closeNodeScope(jjtn000, true);
564 |  | }
565 |  | }
566 | 0 | throw new RuntimeException("Missing return statement in function");
567 |  | }
568 |  |
569 | 1 | final public void CData() throws ParseException {
570 |  | /*@bgen(jjtree) CData */
571 | 1 | ASTCData jjtn000 = new ASTCData(this, JJTCDATA);
572 | 1 | boolean jjtc000 = true;
573 | 1 | jjtree.openNodeScope(jjtn000);StringBuffer content = new StringBuffer();
574 | 1 | Token t;
575 | 1 | try {
576 | 1 | jj_consume_token(CDATA_START);
577 | 1 | label_6:
578 |  | while (true) {
579 | 21 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
580 | 20 | case UNPARSED:
581 |  | ;
582 | 20 | break;
583 | 1 | default:
584 | 1 | jj_la1[11] = jj_gen;
585 | 1 | break label_6;
586 |  | }
587 | 20 | t = jj_consume_token(UNPARSED);
588 | 20 | content.append(t.image);
589 |  | }
590 | 1 | jj_consume_token(CDATA_END);
591 | 1 | jjtree.closeNodeScope(jjtn000, true);
592 | 1 | jjtc000 = false;
593 | 1 | jjtn000.setImage(content.toString());
594 |  | } finally {
595 | 1 | if (jjtc000) {
596 | 0 | jjtree.closeNodeScope(jjtn000, true);
597 |  | }
598 |  | }
599 |  | }
600 |  |
601 |  | /**
602 |  | * A XML element, either with a single empty tag, or with a starting and closing tag
603 |  | * with optional contained content.
604 |  | */
605 | 100 | final public void Element() throws ParseException {
606 |  | /*@bgen(jjtree) Element */
607 | 100 | ASTElement jjtn000 = new ASTElement(this, JJTELEMENT);
608 | 100 | boolean jjtc000 = true;
609 | 100 | jjtree.openNodeScope(jjtn000);Token startTagName;
610 | 100 | Token endTagName;
611 | 100 | String tagName;
612 | 100 | try {
613 | 100 | jj_consume_token(TAG_START);
614 | 100 | startTagName = jj_consume_token(TAG_NAME);
615 | 100 | tagName = startTagName.image; jjtn000.setName(tagName);
616 | 100 | label_7:
617 |  | while (true) {
618 | 125 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
619 | 25 | case ATTR_NAME:
620 |  | ;
621 | 25 | break;
622 | 100 | default:
623 | 100 | jj_la1[12] = jj_gen;
624 | 100 | break label_7;
625 |  | }
626 | 25 | Attribute();
627 |  | }
628 | 100 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
629 | 94 | case TAG_END:
630 | 94 | jj_consume_token(TAG_END);
631 | 94 | jjtn000.setEmpty(false);
632 | 94 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
633 | 58 | case TAG_START:
634 | 6 | case COMMENT_START:
635 | 1 | case CDATA_START:
636 | 2 | case JSP_COMMENT_START:
637 | 1 | case JSP_DECLARATION_START:
638 | 1 | case JSP_EXPRESSION_START:
639 | 2 | case JSP_SCRIPTLET_START:
640 | 1 | case JSP_DIRECTIVE_START:
641 | 0 | case EL_EXPRESSION:
642 | 18 | case UNPARSED_TEXT:
643 | 90 | Content();
644 | 90 | break;
645 | 4 | default:
646 | 4 | jj_la1[13] = jj_gen;
647 |  | ;
648 |  | }
649 | 94 | jj_consume_token(ENDTAG_START);
650 | 94 | endTagName = jj_consume_token(TAG_NAME);
651 | 94 | if (! tagName.equalsIgnoreCase(endTagName.image)) {
652 | 0 | {if (true) throw new StartAndEndTagMismatchException(
653 |  | startTagName.beginLine, startTagName.beginColumn,
654 |  | startTagName.image,
655 |  | endTagName.beginLine, endTagName.beginColumn,
656 |  | endTagName.image );}
657 |  | }
658 | 94 | jj_consume_token(TAG_END);
659 | 94 | break;
660 | 6 | case TAG_SLASHEND:
661 | 6 | jj_consume_token(TAG_SLASHEND);
662 | 6 | jjtree.closeNodeScope(jjtn000, true);
663 | 6 | jjtc000 = false;
664 | 6 | jjtn000.setEmpty(true);
665 | 6 | break;
666 | 0 | default:
667 | 0 | jj_la1[14] = jj_gen;
668 | 0 | jj_consume_token(-1);
669 | 0 | throw new ParseException();
670 |  | }
671 |  | } catch (Throwable jjte000) {
672 | 0 | if (jjtc000) {
673 | 0 | jjtree.clearNodeScope(jjtn000);
674 | 0 | jjtc000 = false;
675 |  | } else {
676 | 0 | jjtree.popNode();
677 |  | }
678 | 0 | if (jjte000 instanceof RuntimeException) {
679 | 0 | {if (true) throw (RuntimeException)jjte000;}
680 |  | }
681 | 0 | if (jjte000 instanceof ParseException) {
682 | 0 | {if (true) throw (ParseException)jjte000;}
683 |  | }
684 | 0 | {if (true) throw (Error)jjte000;}
685 |  | } finally {
686 | 100 | if (jjtc000) {
687 | 94 | jjtree.closeNodeScope(jjtn000, true);
688 |  | }
689 |  | }
690 |  | }
691 |  |
692 | 27 | final public void Attribute() throws ParseException {
693 |  | /*@bgen(jjtree) Attribute */
694 | 27 | ASTAttribute jjtn000 = new ASTAttribute(this, JJTATTRIBUTE);
695 | 27 | boolean jjtc000 = true;
696 | 27 | jjtree.openNodeScope(jjtn000);Token t;
697 | 27 | try {
698 | 27 | t = jj_consume_token(ATTR_NAME);
699 | 27 | jjtn000.setName(t.image);
700 | 27 | jj_consume_token(ATTR_EQ);
701 | 27 | AttributeValue();
702 |  | } catch (Throwable jjte000) {
703 | 0 | if (jjtc000) {
704 | 0 | jjtree.clearNodeScope(jjtn000);
705 | 0 | jjtc000 = false;
706 |  | } else {
707 | 0 | jjtree.popNode();
708 |  | }
709 | 0 | if (jjte000 instanceof RuntimeException) {
710 | 0 | {if (true) throw (RuntimeException)jjte000;}
711 |  | }
712 | 0 | if (jjte000 instanceof ParseException) {
713 | 0 | {if (true) throw (ParseException)jjte000;}
714 |  | }
715 | 0 | {if (true) throw (Error)jjte000;}
716 |  | } finally {
717 | 27 | if (jjtc000) {
718 | 27 | jjtree.closeNodeScope(jjtn000, true);
719 |  | }
720 |  | }
721 |  | }
722 |  |
723 |  | /**
724 |  | * The value of an attribute of an element.
725 |  | * EL expressions, JSF value bindings, and JSP expressions
726 |  | * are parsed as sub-nodes of the AttributeValue node.
727 |  | */
728 | 27 | final public void AttributeValue() throws ParseException {
729 |  | /*@bgen(jjtree) AttributeValue */
730 | 27 | ASTAttributeValue jjtn000 = new ASTAttributeValue(this, JJTATTRIBUTEVALUE);
731 | 27 | boolean jjtc000 = true;
732 | 27 | jjtree.openNodeScope(jjtn000);StringBuffer content = new StringBuffer();
733 | 27 | String tmp;
734 | 27 | Token t;
735 | 27 | try {
736 | 27 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
737 | 12 | case DOUBLE_QUOTE:
738 | 12 | jj_consume_token(DOUBLE_QUOTE);
739 | 12 | label_8:
740 |  | while (true) {
741 | 24 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
742 | 1 | case EL_EXPRESSION_IN_ATTRIBUTE:
743 | 0 | case VALUE_BINDING_IN_ATTRIBUTE:
744 | 0 | case JSP_EXPRESSION_IN_ATTRIBUTE:
745 | 11 | case UNPARSED_TEXT_NO_DOUBLE_QUOTES:
746 |  | ;
747 | 12 | break;
748 | 12 | default:
749 | 12 | jj_la1[15] = jj_gen;
750 | 12 | break label_8;
751 |  | }
752 | 12 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
753 | 11 | case UNPARSED_TEXT_NO_DOUBLE_QUOTES:
754 | 11 | tmp = UnparsedTextNoDoubleQuotes();
755 | 11 | break;
756 | 1 | case EL_EXPRESSION_IN_ATTRIBUTE:
757 | 0 | case VALUE_BINDING_IN_ATTRIBUTE:
758 | 0 | case JSP_EXPRESSION_IN_ATTRIBUTE:
759 | 1 | tmp = QuoteIndependentAttributeValueContent();
760 | 1 | break;
761 | 0 | default:
762 | 0 | jj_la1[16] = jj_gen;
763 | 0 | jj_consume_token(-1);
764 | 0 | throw new ParseException();
765 |  | }
766 | 12 | content.append(tmp);
767 |  | }
768 | 12 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
769 | 10 | case ENDING_DOUBLE_QUOTE:
770 | 10 | jj_consume_token(ENDING_DOUBLE_QUOTE);
771 | 10 | break;
772 | 2 | case DOLLAR_OR_HASH_DOUBLE_QUOTE:
773 | 2 | t = jj_consume_token(DOLLAR_OR_HASH_DOUBLE_QUOTE);
774 | 2 | content.append(t.image.substring(0, 1));
775 | 2 | break;
776 | 0 | default:
777 | 0 | jj_la1[17] = jj_gen;
778 | 0 | jj_consume_token(-1);
779 | 0 | throw new ParseException();
780 |  | }
781 | 12 | break;
782 | 15 | case SINGLE_QUOTE:
783 | 15 | jj_consume_token(SINGLE_QUOTE);
784 | 15 | label_9:
785 |  | while (true) {
786 | 30 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
787 | 1 | case EL_EXPRESSION_IN_ATTRIBUTE:
788 | 2 | case VALUE_BINDING_IN_ATTRIBUTE:
789 | 1 | case JSP_EXPRESSION_IN_ATTRIBUTE:
790 | 11 | case UNPARSED_TEXT_NO_SINGLE_QUOTES:
791 |  | ;
792 | 15 | break;
793 | 15 | default:
794 | 15 | jj_la1[18] = jj_gen;
795 | 15 | break label_9;
796 |  | }
797 | 15 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
798 | 11 | case UNPARSED_TEXT_NO_SINGLE_QUOTES:
799 | 11 | tmp = UnparsedTextNoSingleQuotes();
800 | 11 | break;
801 | 1 | case EL_EXPRESSION_IN_ATTRIBUTE:
802 | 2 | case VALUE_BINDING_IN_ATTRIBUTE:
803 | 1 | case JSP_EXPRESSION_IN_ATTRIBUTE:
804 | 4 | tmp = QuoteIndependentAttributeValueContent();
805 | 4 | break;
806 | 0 | default:
807 | 0 | jj_la1[19] = jj_gen;
808 | 0 | jj_consume_token(-1);
809 | 0 | throw new ParseException();
810 |  | }
811 | 15 | content.append(tmp);
812 |  | }
813 | 15 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
814 | 15 | case ENDING_SINGLE_QUOTE:
815 | 15 | jj_consume_token(ENDING_SINGLE_QUOTE);
816 | 15 | break;
817 | 0 | case DOLLAR_OR_HASH_SINGLE_QUOTE:
818 | 0 | t = jj_consume_token(DOLLAR_OR_HASH_SINGLE_QUOTE);
819 | 0 | content.append(t.image.substring(0, 1));
820 | 0 | break;
821 | 0 | default:
822 | 0 | jj_la1[20] = jj_gen;
823 | 0 | jj_consume_token(-1);
824 | 0 | throw new ParseException();
825 |  | }
826 | 15 | break;
827 | 0 | default:
828 | 0 | jj_la1[21] = jj_gen;
829 | 0 | jj_consume_token(-1);
830 | 0 | throw new ParseException();
831 |  | }
832 | 27 | jjtree.closeNodeScope(jjtn000, true);
833 | 27 | jjtc000 = false;
834 | 27 | jjtn000.setImage( content.toString() );
835 |  | } catch (Throwable jjte000) {
836 | 0 | if (jjtc000) {
837 | 0 | jjtree.clearNodeScope(jjtn000);
838 | 0 | jjtc000 = false;
839 |  | } else {
840 | 0 | jjtree.popNode();
841 |  | }
842 | 0 | if (jjte000 instanceof RuntimeException) {
843 | 0 | {if (true) throw (RuntimeException)jjte000;}
844 |  | }
845 | 0 | if (jjte000 instanceof ParseException) {
846 | 0 | {if (true) throw (ParseException)jjte000;}
847 |  | }
848 | 0 | {if (true) throw (Error)jjte000;}
849 |  | } finally {
850 | 27 | if (jjtc000) {
851 | 0 | jjtree.closeNodeScope(jjtn000, true);
852 |  | }
853 |  | }
854 |  | }
855 |  |
856 |  | /**
857 |  | * Partial content of an attribute value that can contain all quotes.
858 |  | * This groups EL expressions, value bindings, and JSP expressions.
859 |  | */
860 | 5 | final public String QuoteIndependentAttributeValueContent() throws ParseException {
861 | 5 | String tmp;
862 | 5 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
863 | 2 | case EL_EXPRESSION_IN_ATTRIBUTE:
864 | 2 | tmp = ElExpressionInAttribute();
865 | 2 | break;
866 | 2 | case VALUE_BINDING_IN_ATTRIBUTE:
867 | 2 | tmp = ValueBindingInAttribute();
868 | 2 | break;
869 | 1 | case JSP_EXPRESSION_IN_ATTRIBUTE:
870 | 1 | tmp = JspExpressionInAttribute();
871 | 1 | break;
872 | 0 | default:
873 | 0 | jj_la1[22] = jj_gen;
874 | 0 | jj_consume_token(-1);
875 | 0 | throw new ParseException();
876 |  | }
877 | 5 | {if (true) return tmp;}
878 | 0 | throw new RuntimeException("Missing return statement in function");
879 |  | }
880 |  |
881 | 1 | final public String JspExpressionInAttribute() throws ParseException {
882 |  | /*@bgen(jjtree) JspExpressionInAttribute */
883 | 1 | ASTJspExpressionInAttribute jjtn000 = new ASTJspExpressionInAttribute(this, JJTJSPEXPRESSIONINATTRIBUTE);
884 | 1 | boolean jjtc000 = true;
885 | 1 | jjtree.openNodeScope(jjtn000);Token t;
886 | 1 | try {
887 | 1 | t = jj_consume_token(JSP_EXPRESSION_IN_ATTRIBUTE);
888 | 1 | jjtree.closeNodeScope(jjtn000, true);
889 | 1 | jjtc000 = false;
890 | 1 | jjtn000.setImage(t.image.substring(3, t.image.length()-2).trim()); // without <% and %>
891 | 1 | {if (true) return t.image;}
892 |  | } finally {
893 | 1 | if (jjtc000) {
894 | 0 | jjtree.closeNodeScope(jjtn000, true);
895 |  | }
896 |  | }
897 | 0 | throw new RuntimeException("Missing return statement in function");
898 |  | }
899 |  |
900 | 6 | final public void CommentTag() throws ParseException {
901 |  | /*@bgen(jjtree) CommentTag */
902 | 6 | ASTCommentTag jjtn000 = new ASTCommentTag(this, JJTCOMMENTTAG);
903 | 6 | boolean jjtc000 = true;
904 | 6 | jjtree.openNodeScope(jjtn000);StringBuffer content = new StringBuffer();
905 | 6 | Token t;
906 | 6 | try {
907 | 6 | jj_consume_token(COMMENT_START);
908 | 6 | label_10:
909 |  | while (true) {
910 | 631 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
911 | 625 | case COMMENT_TEXT:
912 |  | ;
913 | 625 | break;
914 | 6 | default:
915 | 6 | jj_la1[23] = jj_gen;
916 | 6 | break label_10;
917 |  | }
918 | 625 | t = jj_consume_token(COMMENT_TEXT);
919 | 625 | content.append(t.image);
920 |  | }
921 | 6 | jj_consume_token(COMMENT_END);
922 | 6 | jjtree.closeNodeScope(jjtn000, true);
923 | 6 | jjtc000 = false;
924 | 6 | jjtn000.setImage(content.toString().trim());
925 |  | } finally {
926 | 6 | if (jjtc000) {
927 | 0 | jjtree.closeNodeScope(jjtn000, true);
928 |  | }
929 |  | }
930 |  | }
931 |  |
932 | 1 | final public void Declaration() throws ParseException {
933 |  | /*@bgen(jjtree) Declaration */
934 | 1 | ASTDeclaration jjtn000 = new ASTDeclaration(this, JJTDECLARATION);
935 | 1 | boolean jjtc000 = true;
936 | 1 | jjtree.openNodeScope(jjtn000);Token t;
937 | 1 | try {
938 | 1 | jj_consume_token(DECL_START);
939 | 1 | t = jj_consume_token(TAG_NAME);
940 | 1 | jjtn000.setName(t.image);
941 | 1 | label_11:
942 |  | while (true) {
943 | 3 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
944 | 2 | case ATTR_NAME:
945 |  | ;
946 | 2 | break;
947 | 1 | default:
948 | 1 | jj_la1[24] = jj_gen;
949 | 1 | break label_11;
950 |  | }
951 | 2 | Attribute();
952 |  | }
953 | 1 | jj_consume_token(DECL_END);
954 |  | } catch (Throwable jjte000) {
955 | 0 | if (jjtc000) {
956 | 0 | jjtree.clearNodeScope(jjtn000);
957 | 0 | jjtc000 = false;
958 |  | } else {
959 | 0 | jjtree.popNode();
960 |  | }
961 | 0 | if (jjte000 instanceof RuntimeException) {
962 | 0 | {if (true) throw (RuntimeException)jjte000;}
963 |  | }
964 | 0 | if (jjte000 instanceof ParseException) {
965 | 0 | {if (true) throw (ParseException)jjte000;}
966 |  | }
967 | 0 | {if (true) throw (Error)jjte000;}
968 |  | } finally {
969 | 1 | if (jjtc000) {
970 | 1 | jjtree.closeNodeScope(jjtn000, true);
971 |  | }
972 |  | }
973 |  | }
974 |  |
975 | 1 | final public void DoctypeDeclaration() throws ParseException {
976 |  | /*@bgen(jjtree) DoctypeDeclaration */
977 | 1 | ASTDoctypeDeclaration jjtn000 = new ASTDoctypeDeclaration(this, JJTDOCTYPEDECLARATION);
978 | 1 | boolean jjtc000 = true;
979 | 1 | jjtree.openNodeScope(jjtn000);Token t;
980 | 1 | try {
981 | 1 | jj_consume_token(DOCTYPE_DECL_START);
982 | 1 | jj_consume_token(WHITESPACES);
983 | 1 | t = jj_consume_token(NAME);
984 | 1 | jjtn000.setName(t.image);
985 | 1 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
986 | 1 | case WHITESPACES:
987 | 1 | jj_consume_token(WHITESPACES);
988 | 1 | break;
989 | 0 | default:
990 | 0 | jj_la1[25] = jj_gen;
991 |  | ;
992 |  | }
993 | 1 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
994 | 1 | case PUBLIC:
995 | 0 | case SYSTEM:
996 | 1 | DoctypeExternalId();
997 | 1 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
998 | 0 | case WHITESPACES:
999 | 0 | jj_consume_token(WHITESPACES);
1000 | 0 | break;
1001 | 1 | default:
1002 | 1 | jj_la1[26] = jj_gen;
1003 |  | ;
1004 |  | }
1005 | 1 | break;
1006 | 0 | default:
1007 | 0 | jj_la1[27] = jj_gen;
1008 |  | ;
1009 |  | }
1010 | 1 | jj_consume_token(DOCTYPE_DECL_END);
1011 |  | } catch (Throwable jjte000) {
1012 | 0 | if (jjtc000) {
1013 | 0 | jjtree.clearNodeScope(jjtn000);
1014 | 0 | jjtc000 = false;
1015 |  | } else {
1016 | 0 | jjtree.popNode();
1017 |  | }
1018 | 0 | if (jjte000 instanceof RuntimeException) {
1019 | 0 | {if (true) throw (RuntimeException)jjte000;}
1020 |  | }
1021 | 0 | if (jjte000 instanceof ParseException) {
1022 | 0 | {if (true) throw (ParseException)jjte000;}
1023 |  | }
1024 | 0 | {if (true) throw (Error)jjte000;}
1025 |  | } finally {
1026 | 1 | if (jjtc000) {
1027 | 1 | jjtree.closeNodeScope(jjtn000, true);
1028 |  | }
1029 |  | }
1030 |  | }
1031 |  |
1032 | 1 | final public void DoctypeExternalId() throws ParseException {
1033 |  | /*@bgen(jjtree) DoctypeExternalId */
1034 | 1 | ASTDoctypeExternalId jjtn000 = new ASTDoctypeExternalId(this, JJTDOCTYPEEXTERNALID);
1035 | 1 | boolean jjtc000 = true;
1036 | 1 | jjtree.openNodeScope(jjtn000);Token systemLiteral;
1037 | 1 | Token pubIdLiteral;
1038 | 1 | try {
1039 | 1 | switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1040 | 0 | case SYSTEM:
1041 | 0 | jj_consume_token(SYSTEM);
1042 | 0 | jj_consume_token(WHITESPACES);
1043 | 0 | systemLiteral = jj_consume_token(QUOTED_LITERAL);
1044 | 0 | jjtree.closeNodeScope(jjtn000, true);
1045 | 0 | jjtc000 = false;
1046 | 0 | jjtn000.setUri(quoteContent(systemLiteral.image));
1047 | 0 | break;
1048 | 1 | case PUBLIC:
1049 | 1 | jj_consume_token(PUBLIC);
1050 | 1 | jj_consume_token(WHITESPACES);
1051 | 1 | pubIdLiteral = jj_consume_token(QUOTED_LITERAL);
1052 | 1 | jjtn000.setPublicId(quoteContent(pubIdLiteral.image));
1053 | 1 | jj_consume_token(WHITESPACES);
1054 | 1 | systemLiteral = jj_consume_token(QUOTED_LITERAL);
1055 | 1 | jjtree.closeNodeScope(jjtn000, true);
1056 | 1 | jjtc000 = false;
1057 | 1 | jjtn000.setUri(quoteContent(systemLiteral.image));
1058 | 1 | break;
1059 | 0 | default:
1060 | 0 | jj_la1[28] = jj_gen;
1061 | 0 | jj_consume_token(-1);
1062 | 0 | throw new ParseException();
1063 |  | }
1064 |  | } finally {
1065 | 1 | if (jjtc000) {
1066 | 0 | jjtree.closeNodeScope(jjtn000, true);
1067 |  | }
1068 |  | }
1069 |  | }
1070 |  |
1071 | 39 | final private boolean jj_2_1(int xla) {
1072 | 39 | jj_la = xla; jj_lastpos = jj_scanpos = token;
1073 | 39 | try { return !jj_3_1(); }
1074 | 0 | catch(LookaheadSuccess ls) { return true; }
1075 | 39 | finally { jj_save(0, xla); }
1076 |  | }
1077 |  |
1078 | 39 | final private boolean jj_2_2(int xla) {
1079 | 39 | jj_la = xla; jj_lastpos = jj_scanpos = token;
1080 | 39 | try { return !jj_3_2(); }
1081 | 0 | catch(LookaheadSuccess ls) { return true; }
1082 | 39 | finally { jj_save(1, xla); }
1083 |  | }
1084 |  |
1085 | 1 | final private boolean jj_3R_31() {
1086 | 0 | if (jj_scan_token(SINGLE_QUOTE)) return true;
1087 | 1 | Token xsp;
1088 | 1 | while (true) {
1089 | 2 | xsp = jj_scanpos;
1090 | 1 | if (jj_3R_34()) { jj_scanpos = xsp; break; }
1091 |  | }
1092 | 1 | xsp = jj_scanpos;
1093 | 1 | if (jj_scan_token(69)) {
1094 | 0 | jj_scanpos = xsp;
1095 | 0 | if (jj_3R_35()) return true;
1096 |  | }
1097 | 1 | return false;
1098 |  | }
1099 |  |
1100 | 2 | final private boolean jj_3R_46() {
1101 | 2 | if (jj_scan_token(EL_EXPRESSION_IN_ATTRIBUTE)) return true;
1102 | 0 | return false;
1103 |  | }
1104 |  |
1105 | 2 | final private boolean jj_3R_30() {
1106 | 1 | if (jj_scan_token(DOUBLE_QUOTE)) return true;
1107 | 1 | Token xsp;
1108 | 1 | while (true) {
1109 | 2 | xsp = jj_scanpos;
1110 | 1 | if (jj_3R_32()) { jj_scanpos = xsp; break; }
1111 |  | }
1112 | 1 | xsp = jj_scanpos;
1113 | 1 | if (jj_scan_token(72)) {
1114 | 0 | jj_scanpos = xsp;
1115 | 0 | if (jj_3R_33()) return true;
1116 |  | }
1117 | 1 | return false;
1118 |  | }
1119 |  |
1120 | 1 | final private boolean jj_3R_29() {
1121 | 0 | if (jj_scan_token(PUBLIC)) return true;
1122 | 0 | if (jj_scan_token(WHITESPACES)) return true;
1123 | 0 | if (jj_scan_token(QUOTED_LITERAL)) return true;
1124 | 0 | if (jj_scan_token(WHITESPACES)) return true;
1125 | 0 | if (jj_scan_token(QUOTED_LITERAL)) return true;
1126 | 1 | return false;
1127 |  | }
1128 |  |
1129 | 2 | final private boolean jj_3R_47() {
1130 | 2 | if (jj_scan_token(VALUE_BINDING_IN_ATTRIBUTE)) return true;
1131 | 0 | return false;
1132 |  | }
1133 |  |
1134 | 2 | final private boolean jj_3R_27() {
1135 | 2 | Token xsp;
1136 | 2 | xsp = jj_scanpos;
1137 | 2 | if (jj_3R_30()) {
1138 | 1 | jj_scanpos = xsp;
1139 | 0 | if (jj_3R_31()) return true;
1140 |  | }
1141 | 2 | return false;
1142 |  | }
1143 |  |
1144 | 1 | final private boolean jj_3R_25() {
1145 | 1 | Token xsp;
1146 | 1 | xsp = jj_scanpos;
1147 | 1 | if (jj_3R_28()) {
1148 | 1 | jj_scanpos = xsp;
1149 | 0 | if (jj_3R_29()) return true;
1150 |  | }
1151 | 1 | return false;
1152 |  | }
1153 |  |
1154 | 1 | final private boolean jj_3R_28() {
1155 | 1 | if (jj_scan_token(SYSTEM)) return true;
1156 | 0 | if (jj_scan_token(WHITESPACES)) return true;
1157 | 0 | if (jj_scan_token(QUOTED_LITERAL)) return true;
1158 | 0 | return false;
1159 |  | }
1160 |  |
1161 | 1 | final private boolean jj_3R_21() {
1162 | 0 | if (jj_3R_25()) return true;
1163 | 1 | Token xsp;
1164 | 1 | xsp = jj_scanpos;
1165 | 1 | if (jj_scan_token(48)) jj_scanpos = xsp;
1166 | 1 | return false;
1167 |  | }
1168 |  |
1169 | 2 | final private boolean jj_3R_40() {
1170 | 1 | if (jj_scan_token(UNPARSED_TEXT_NO_DOUBLE_QUOTES)) return true;
1171 | 1 | return false;
1172 |  | }
1173 |  |
1174 | 39 | final private boolean jj_3R_15() {
1175 | 38 | if (jj_scan_token(DOCTYPE_DECL_START)) return true;
1176 | 0 | if (jj_scan_token(WHITESPACES)) return true;
1177 | 0 | if (jj_scan_token(NAME)) return true;
1178 | 1 | Token xsp;
1179 | 1 | xsp = jj_scanpos;
1180 | 0 | if (jj_scan_token(48)) jj_scanpos = xsp;
1181 | 1 | xsp = jj_scanpos;
1182 | 0 | if (jj_3R_21()) jj_scanpos = xsp;
1183 | 0 | if (jj_scan_token(DOCTYPE_DECL_END)) return true;
1184 | 1 | return false;
1185 |  | }
1186 |  |
1187 | 3 | final private boolean jj_3R_24() {
1188 | 1 | if (jj_scan_token(ATTR_NAME)) return true;
1189 | 0 | if (jj_scan_token(ATTR_EQ)) return true;
1190 | 0 | if (jj_3R_27()) return true;
1191 | 2 | return false;
1192 |  | }
1193 |  |
1194 | 39 | final private boolean jj_3R_20() {
1195 | 39 | if (jj_3R_23()) return true;
1196 | 0 | return false;
1197 |  | }
1198 |  |
1199 | 2 | final private boolean jj_3R_42() {
1200 | 1 | if (jj_scan_token(UNPARSED_TEXT_NO_SINGLE_QUOTES)) return true;
1201 | 1 | return false;
1202 |  | }
1203 |  |
1204 | 3 | final private boolean jj_3R_18() {
1205 | 1 | if (jj_3R_24()) return true;
1206 | 2 | return false;
1207 |  | }
1208 |  |
1209 | 39 | final private boolean jj_3R_13() {
1210 | 38 | if (jj_scan_token(DECL_START)) return true;
1211 | 0 | if (jj_scan_token(TAG_NAME)) return true;
1212 | 1 | Token xsp;
1213 | 1 | while (true) {
1214 | 3 | xsp = jj_scanpos;
1215 | 1 | if (jj_3R_18()) { jj_scanpos = xsp; break; }
1216 |  | }
1217 | 0 | if (jj_scan_token(DECL_END)) return true;
1218 | 1 | return false;
1219 |  | }
1220 |  |
1221 | 39 | final private boolean jj_3R_17() {
1222 | 39 | if (jj_3R_23()) return true;
1223 | 0 | return false;
1224 |  | }
1225 |  |
1226 | 0 | final private boolean jj_3R_26() {
1227 | 0 | if (jj_scan_token(COMMENT_TEXT)) return true;
1228 | 0 | return false;
1229 |  | }
1230 |  |
1231 | 39 | final private boolean jj_3R_19() {
1232 | 39 | if (jj_3R_22()) return true;
1233 | 0 | return false;
1234 |  | }
1235 |  |
1236 | 39 | final private boolean jj_3R_14() {
1237 | 39 | Token xsp;
1238 | 39 | xsp = jj_scanpos;
1239 | 39 | if (jj_3R_19()) {
1240 | 39 | jj_scanpos = xsp;
1241 | 39 | if (jj_3R_20()) return true;
1242 |  | }
1243 | 0 | return false;
1244 |  | }
1245 |  |
1246 | 78 | final private boolean jj_3R_22() {
1247 | 78 | if (jj_scan_token(COMMENT_START)) return true;
1248 | 0 | Token xsp;
1249 | 0 | while (true) {
1250 | 0 | xsp = jj_scanpos;
1251 | 0 | if (jj_3R_26()) { jj_scanpos = xsp; break; }
1252 |  | }
1253 | 0 | if (jj_scan_token(COMMENT_END)) return true;
1254 | 0 | return false;
1255 |  | }
1256 |  |
1257 | 39 | final private boolean jj_3_2() {
1258 | 39 | Token xsp;
1259 | 39 | while (true) {
1260 | 39 | xsp = jj_scanpos;
1261 | 39 | if (jj_3R_14()) { jj_scanpos = xsp; break; }
1262 |  | }
1263 | 38 | if (jj_3R_15()) return true;
1264 | 1 | return false;
1265 |  | }
1266 |  |
1267 | 39 | final private boolean jj_3R_12() {
1268 | 39 | Token xsp;
1269 | 39 | xsp = jj_scanpos;
1270 | 39 | if (jj_3R_16()) {
1271 | 39 | jj_scanpos = xsp;
1272 | 39 | if (jj_3R_17()) return true;
1273 |  | }
1274 | 0 | return false;
1275 |  | }
1276 |  |
1277 | 39 | final private boolean jj_3R_16() {
1278 | 39 | if (jj_3R_22()) return true;
1279 | 0 | return false;
1280 |  | }
1281 |  |
1282 | 2 | final private boolean jj_3R_48() {
1283 | 2 | if (jj_scan_token(JSP_EXPRESSION_IN_ATTRIBUTE)) return true;
1284 | 0 | return false;
1285 |  | }
1286 |  |
1287 | 2 | final private boolean jj_3R_45() {
1288 | 2 | if (jj_3R_48()) return true;
1289 | 0 | return false;
1290 |  | }
1291 |  |
1292 | 39 | final private boolean jj_3_1() {
1293 | 39 | Token xsp;
1294 | 39 | while (true) {
1295 | 39 | xsp = jj_scanpos;
1296 | 39 | if (jj_3R_12()) { jj_scanpos = xsp; break; }
1297 |  | }
1298 | 38 | if (jj_3R_13()) return true;
1299 | 1 | return false;
1300 |  | }
1301 |  |
1302 | 2 | final private boolean jj_3R_44() {
1303 | 2 | if (jj_3R_47()) return true;
1304 | 0 | return false;
1305 |  | }
1306 |  |
1307 | 2 | final private boolean jj_3R_43() {
1308 | 2 | if (jj_3R_46()) return true;
1309 | 0 | return false;
1310 |  | }
1311 |  |
1312 | 1 | final private boolean jj_3R_39() {
1313 | 1 | if (jj_3R_41()) return true;
1314 | 0 | return false;
1315 |  | }
1316 |  |
1317 | 0 | final private boolean jj_3R_35() {
1318 | 0 | if (jj_scan_token(DOLLAR_OR_HASH_SINGLE_QUOTE)) return true;
1319 | 0 | return false;
1320 |  | }
1321 |  |
1322 | 2 | final private boolean jj_3R_38() {
1323 | 1 | if (jj_3R_42()) return true;
1324 | 1 | return false;
1325 |  | }
1326 |  |
1327 | 0 | final private boolean jj_3R_33() {
1328 | 0 | if (jj_scan_token(DOLLAR_OR_HASH_DOUBLE_QUOTE)) return true;
1329 | 0 | return false;
1330 |  | }
1331 |  |
1332 | 2 | final private boolean jj_3R_41() {
1333 | 2 | Token xsp;
1334 | 2 | xsp = jj_scanpos;
1335 | 2 | if (jj_3R_43()) {
1336 | 2 | jj_scanpos = xsp;
1337 | 2 | if (jj_3R_44()) {
1338 | 2 | jj_scanpos = xsp;
1339 | 2 | if (jj_3R_45()) return true;
1340 |  | }
1341 |  | }
1342 | 0 | return false;
1343 |  | }
1344 |  |
1345 | 2 | final private boolean jj_3R_34() {
1346 | 2 | Token xsp;
1347 | 2 | xsp = jj_scanpos;
1348 | 2 | if (jj_3R_38()) {
1349 | 1 | jj_scanpos = xsp;
1350 | 1 | if (jj_3R_39()) return true;
1351 |  | }
1352 | 1 | return false;
1353 |  | }
1354 |  |
1355 | 1 | final private boolean jj_3R_37() {
1356 | 1 | if (jj_3R_41()) return true;
1357 | 0 | return false;
1358 |  | }
1359 |  |
1360 | 2 | final private boolean jj_3R_36() {
1361 | 1 | if (jj_3R_40()) return true;
1362 | 1 | return false;
1363 |  | }
1364 |  |
1365 | 78 | final private boolean jj_3R_23() {
1366 | 78 | if (jj_scan_token(JSP_COMMENT_START)) return true;
1367 | 0 | if (jj_scan_token(JSP_COMMENT_CONTENT)) return true;
1368 | 0 | if (jj_scan_token(JSP_COMMENT_END)) return true;
1369 | 0 | return false;
1370 |  | }
1371 |  |
1372 | 2 | final private boolean jj_3R_32() {
1373 | 2 | Token xsp;
1374 | 2 | xsp = jj_scanpos;
1375 | 2 | if (jj_3R_36()) {
1376 | 1 | jj_scanpos = xsp;
1377 | 1 | if (jj_3R_37()) return true;
1378 |  | }
1379 | 1 | return false;
1380 |  | }
1381 |  |
1382 |  | public JspParserTokenManager token_source;
1383 |  | public Token token, jj_nt;
1384 |  | private int jj_ntk;
1385 |  | private Token jj_scanpos, jj_lastpos;
1386 |  | private int jj_la;
1387 |  | public boolean lookingAhead = false;
1388 |  | private boolean jj_semLA;
1389 |  | private int jj_gen;
1390 |  | final private int[] jj_la1 = new int[29];
1391 |  | static private int[] jj_la1_0;
1392 |  | static private int[] jj_la1_1;
1393 |  | static private int[] jj_la1_2;
1394 |  | static {
1395 | 12 | jj_la1_0();
1396 | 12 | jj_la1_1();
1397 | 12 | jj_la1_2();
1398 |  | }
1399 | 12 | private static void jj_la1_0() {
1400 | 12 | jj_la1_0 = new int[] {0x11000000,0x11000000,0x11000000,0x11000000,0xf9400000,0xf9400000,0xf9400000,0x0,0x0,0x0,0x0,0x0,0x0,0xf9400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
1401 |  | }
1402 | 12 | private static void jj_la1_1() {
1403 | 12 | jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x7,0x1,0x1,0x6,0x10,0x6,0x6,0x400000,0x4000000,0x7,0x28000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x10000,0x10000,0xc0000,0xc0000,};
1404 |  | }
1405 | 12 | private static void jj_la1_2() {
1406 | 12 | jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x21c,0x21c,0x500,0x5c,0x5c,0xa0,0x3,0x1c,0x1000,0x0,0x0,0x0,0x0,0x0,};
1407 |  | }
1408 |  | final private JJCalls[] jj_2_rtns = new JJCalls[2];
1409 |  | private boolean jj_rescan = false;
1410 |  | private int jj_gc = 0;
1411 |  |
1412 | 39 | public JspParser(CharStream stream) {
1413 | 39 | token_source = new JspParserTokenManager(stream);
1414 | 39 | token = new Token();
1415 | 39 | jj_ntk = -1;
1416 | 39 | jj_gen = 0;
1417 | 1131 | for (int i = 0; i < 29; i++) jj_la1[i] = -1;
1418 | 78 | for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1419 |  | }
1420 |  |
1421 | 0 | public void ReInit(CharStream stream) {
1422 | 0 | token_source.ReInit(stream);
1423 | 0 | token = new Token();
1424 | 0 | jj_ntk = -1;
1425 | 0 | jjtree.reset();
1426 | 0 | jj_gen = 0;
1427 | 0 | for (int i = 0; i < 29; i++) jj_la1[i] = -1;
1428 | 0 | for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1429 |  | }
1430 |  |
1431 | 0 | public JspParser(JspParserTokenManager tm) {
1432 | 0 | token_source = tm;
1433 | 0 | token = new Token();
1434 | 0 | jj_ntk = -1;
1435 | 0 | jj_gen = 0;
1436 | 0 | for (int i = 0; i < 29; i++) jj_la1[i] = -1;
1437 | 0 | for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1438 |  | }
1439 |  |
1440 | 0 | public void ReInit(JspParserTokenManager tm) {
1441 | 0 | token_source = tm;
1442 | 0 | token = new Token();
1443 | 0 | jj_ntk = -1;
1444 | 0 | jjtree.reset();
1445 | 0 | jj_gen = 0;
1446 | 0 | for (int i = 0; i < 29; i++) jj_la1[i] = -1;
1447 | 0 | for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1448 |  | }
1449 |  |
1450 | 1543 | final private Token jj_consume_token(int kind) throws ParseException {
1451 | 1543 | Token oldToken;
1452 | ? | if ((oldToken = token).next != null) token = token.next;
1453 | 360 | else token = token.next = token_source.getNextToken();
1454 | 1543 | jj_ntk = -1;
1455 | 1543 | if (token.kind == kind) {
1456 | 1543 | jj_gen++;
1457 | 1543 | if (++jj_gc > 100) {
1458 | 6 | jj_gc = 0;
1459 | 6 | for (int i = 0; i < jj_2_rtns.length; i++) {
1460 | 12 | JJCalls c = jj_2_rtns[i];
1461 | 12 | while (c != null) {
1462 | 12 | if (c.gen < jj_gen) c.first = null;
1463 | 12 | c = c.next;
1464 |  | }
1465 |  | }
1466 |  | }
1467 | 1543 | return token;
1468 |  | }
1469 | 0 | token = oldToken;
1470 | 0 | jj_kind = kind;
1471 | 0 | throw generateParseException();
1472 |  | }
1473 |  |
1474 |  | static private final class LookaheadSuccess extends java.lang.Error { }
1475 |  | final private LookaheadSuccess jj_ls = new LookaheadSuccess();
1476 | 267 | final private boolean jj_scan_token(int kind) {
1477 | 267 | if (jj_scanpos == jj_lastpos) {
1478 | 99 | jj_la--;
1479 | 99 | if (jj_scanpos.next == null) {
1480 | 61 | jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
1481 |  | } else {
1482 | 38 | jj_lastpos = jj_scanpos = jj_scanpos.next;
1483 |  | }
1484 |  | } else {
1485 | 168 | jj_scanpos = jj_scanpos.next;
1486 |  | }
1487 | 267 | if (jj_rescan) {
1488 | 0 | int i = 0; Token tok = token;
1489 | 0 | while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
1490 | 0 | if (tok != null) jj_add_error_token(kind, i);
1491 |  | }
1492 | 244 | if (jj_scanpos.kind != kind) return true;
1493 | 0 | if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
1494 | 23 | return false;
1495 |  | }
1496 |  |
1497 | 0 | final public Token getNextToken() {
1498 | 0 | if (token.next != null) token = token.next;
1499 | 0 | else token = token.next = token_source.getNextToken();
1500 | 0 | jj_ntk = -1;
1501 | 0 | jj_gen++;
1502 | 0 | return token;
1503 |  | }
1504 |  |
1505 | 0 | final public Token getToken(int index) {
1506 | 0 | Token t = lookingAhead ? jj_scanpos : token;
1507 | 0 | for (int i = 0; i < index; i++) {
1508 | 0 | if (t.next != null) t = t.next;
1509 | 0 | else t = t.next = token_source.getNextToken();
1510 |  | }
1511 | 0 | return t;
1512 |  | }
1513 |  |
1514 | 1174 | final private int jj_ntk() {
1515 | ? | if ((jj_nt=token.next) == null)
1516 | 1122 | return (jj_ntk = (token.next=token_source.getNextToken()).kind);
1517 |  | else
1518 | 52 | return (jj_ntk = jj_nt.kind);
1519 |  | }
1520 |  |
1521 |  | private java.util.Vector jj_expentries = new java.util.Vector();
1522 |  | private int[] jj_expentry;
1523 |  | private int jj_kind = -1;
1524 |  | private int[] jj_lasttokens = new int[100];
1525 |  | private int jj_endpos;
1526 |  |
1527 | 0 | private void jj_add_error_token(int kind, int pos) {
1528 | 0 | if (pos >= 100) return;
1529 | 0 | if (pos == jj_endpos + 1) {
1530 | 0 | jj_lasttokens[jj_endpos++] = kind;
1531 | 0 | } else if (jj_endpos != 0) {
1532 | 0 | jj_expentry = new int[jj_endpos];
1533 | 0 | for (int i = 0; i < jj_endpos; i++) {
1534 | 0 | jj_expentry[i] = jj_lasttokens[i];
1535 |  | }
1536 | 0 | boolean exists = false;
1537 | 0 | for (java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) {
1538 | 0 | int[] oldentry = (int[])(e.nextElement());
1539 | 0 | if (oldentry.length == jj_expentry.length) {
1540 | 0 | exists = true;
1541 | 0 | for (int i = 0; i < jj_expentry.length; i++) {
1542 | 0 | if (oldentry[i] != jj_expentry[i]) {
1543 | 0 | exists = false;
1544 | 0 | break;
1545 |  | }
1546 |  | }
1547 | 0 | if (exists) break;
1548 |  | }
1549 |  | }
1550 | 0 | if (!exists) jj_expentries.addElement(jj_expentry);
1551 | 0 | if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
1552 |  | }
1553 |  | }
1554 |  |
1555 | 0 | public ParseException generateParseException() {
1556 | 0 | jj_expentries.removeAllElements();
1557 | 0 | boolean[] la1tokens = new boolean[77];
1558 | 0 | for (int i = 0; i < 77; i++) {
1559 | 0 | la1tokens[i] = false;
1560 |  | }
1561 | 0 | if (jj_kind >= 0) {
1562 | 0 | la1tokens[jj_kind] = true;
1563 | 0 | jj_kind = -1;
1564 |  | }
1565 | 0 | for (int i = 0; i < 29; i++) {
1566 | 0 | if (jj_la1[i] == jj_gen) {
1567 | 0 | for (int j = 0; j < 32; j++) {
1568 | 0 | if ((jj_la1_0[i] & (1<<j)) != 0) {
1569 | 0 | la1tokens[j] = true;
1570 |  | }
1571 | 0 | if ((jj_la1_1[i] & (1<<j)) != 0) {
1572 | 0 | la1tokens[32+j] = true;
1573 |  | }
1574 | 0 | if ((jj_la1_2[i] & (1<<j)) != 0) {
1575 | 0 | la1tokens[64+j] = true;
1576 |  | }
1577 |  | }
1578 |  | }
1579 |  | }
1580 | 0 | for (int i = 0; i < 77; i++) {
1581 | 0 | if (la1tokens[i]) {
1582 | 0 | jj_expentry = new int[1];
1583 | 0 | jj_expentry[0] = i;
1584 | 0 | jj_expentries.addElement(jj_expentry);
1585 |  | }
1586 |  | }
1587 | 0 | jj_endpos = 0;
1588 | 0 | jj_rescan_token();
1589 | 0 | jj_add_error_token(0, 0);
1590 | 0 | int[][] exptokseq = new int[jj_expentries.size()][];
1591 | 0 | for (int i = 0; i < jj_expentries.size(); i++) {
1592 | 0 | exptokseq[i] = (int[])jj_expentries.elementAt(i);
1593 |  | }
1594 | 0 | return new ParseException(token, exptokseq, tokenImage);
1595 |  | }
1596 |  |
1597 | 0 | final public void enable_tracing() {
1598 |  | }
1599 |  |
1600 | 0 | final public void disable_tracing() {
1601 |  | }
1602 |  |
1603 | 0 | final private void jj_rescan_token() {
1604 | 0 | jj_rescan = true;
1605 | 0 | for (int i = 0; i < 2; i++) {
1606 | 0 | try {
1607 | 0 | JJCalls p = jj_2_rtns[i];
1608 | 0 | do {
1609 | 0 | if (p.gen > jj_gen) {
1610 | 0 | jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
1611 | 0 | switch (i) {
1612 | 0 | case 0: jj_3_1(); break;
1613 | 0 | case 1: jj_3_2(); break;
1614 |  | }
1615 |  | }
1616 | 0 | p = p.next;
1617 | 0 | } while (p != null);
1618 |  | } catch(LookaheadSuccess ls) { }
1619 |  | }
1620 | 0 | jj_rescan = false;
1621 |  | }
1622 |  |
1623 | 78 | final private void jj_save(int index, int xla) {
1624 | 78 | JJCalls p = jj_2_rtns[index];
1625 | 78 | while (p.gen > jj_gen) {
1626 | 0 | if (p.next == null) { p = p.next = new JJCalls(); break; }
1627 | 0 | p = p.next;
1628 |  | }
1629 | 78 | p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
1630 |  | }
1631 |  |
1632 |  | static final class JJCalls {
1633 |  | int gen;
1634 |  | Token first;
1635 |  | int arg;
1636 |  | JJCalls next;
1637 |  | }
1638 |  |
1639 |  | }