Skip to content

Package: ExtScanner

ExtScanner

nameinstructionbranchcomplexitylinemethod
ExtScanner(Reader)
M: 0 C: 24
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 8
100%
M: 0 C: 1
100%
ExtScanner(Reader, ExtParser)
M: 0 C: 27
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
next_token()
M: 67 C: 408
86%
M: 62 C: 81
57%
M: 62 C: 70
53%
M: 61 C: 106
63%
M: 0 C: 1
100%
static {...}
M: 0 C: 38
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 7
100%
M: 0 C: 1
100%
yybegin(int)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
yycharat(int)
M: 0 C: 8
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
yyclose()
M: 0 C: 14
100%
M: 1 C: 1
50%
M: 1 C: 1
50%
M: 0 C: 5
100%
M: 0 C: 1
100%
yylength()
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
yypushback(int)
M: 3 C: 11
79%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 1 C: 3
75%
M: 0 C: 1
100%
yyreset(Reader)
M: 4 C: 45
92%
M: 1 C: 1
50%
M: 1 C: 1
50%
M: 1 C: 11
92%
M: 0 C: 1
100%
yystate()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
yytext()
M: 0 C: 13
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
zzRefill()
M: 52 C: 92
64%
M: 5 C: 7
58%
M: 4 C: 3
43%
M: 9 C: 17
65%
M: 0 C: 1
100%
zzScanError(int)
M: 5 C: 10
67%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 3
60%
M: 0 C: 1
100%
zzUnpackAction()
M: 0 C: 12
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
zzUnpackAction(String, int, int[])
M: 0 C: 31
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
zzUnpackAttribute()
M: 0 C: 12
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
zzUnpackAttribute(String, int, int[])
M: 0 C: 31
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
zzUnpackCMap(String)
M: 0 C: 31
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
zzUnpackRowMap()
M: 0 C: 12
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
zzUnpackRowMap(String, int, int[])
M: 0 C: 30
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 8
100%
M: 0 C: 1
100%
zzUnpackTrans()
M: 0 C: 12
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
zzUnpackTrans(String, int, int[])
M: 0 C: 32
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 10
100%
M: 0 C: 1
100%

Coverage

1: /* The following code was generated by JFlex 1.6.1 */
2:
3: package pruefskript.scanner;
4:
5: /*----------------------------------------------------------------------------
6: * lex.l - functions for scanning extended check scripts
7: *
8: * Copyright (c) 2002-2012 The fli4l team
9: *
10: * This file is part of fli4l.
11: *
12: * fli4l is free software: you can redistribute it and/or modify
13: * it under the terms of the GNU General Public License as published by
14: * the Free Software Foundation, either version 3 of the License, or
15: * (at your option) any later version.
16: *
17: * fli4l is distributed in the hope that it will be useful,
18: * but WITHOUT ANY WARRANTY; without even the implied warranty of
19: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20: * GNU General Public License for more details.
21: *
22: * You should have received a copy of the GNU General Public License
23: * along with fli4l. If not, see <http://www.gnu.org/licenses/>.
24: *
25: * Last Update: $Id$
26: *----------------------------------------------------------------------------
27: */
28: import pruefskript.parser.ExtParser;
29: import pruefskript.parser.ExtParserVal;
30: import pruefskript.parser.nodes.IDNode;
31: import pruefskript.parser.nodes.IdSetNode;
32: import pruefskript.parser.nodes.MajorVerNode;
33: import pruefskript.parser.nodes.NumNode;
34: import pruefskript.parser.nodes.StringNode;
35: import pruefskript.parser.nodes.VerNode;
36: import pruefskript.parser.nodes.VerExprNode;
37: // This will suppress all the PMD warnings in this class
38: @SuppressWarnings("PMD")
39:
40: /**
41: * This class is a scanner generated by
42: * <a href="http://www.jflex.de/">JFlex</a> 1.6.1
43: * from the specification file <tt>extScanner.flex</tt>
44: */
45: public class ExtScanner {
46:
47: /** This character denotes the end of file */
48: public static final int YYEOF = -1;
49:
50: /** initial size of the lookahead buffer */
51: private static final int ZZ_BUFFERSIZE = 16384;
52:
53: /** lexical states */
54: public static final int YYINITIAL = 0;
55:
56: /**
57: * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
58: * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
59: * at the beginning of a line
60: * l is of the form l = 2*k, k a non negative integer
61: */
62: private static final int ZZ_LEXSTATE[] = {
63: 0, 0
64: };
65:
66: /**
67: * Translates characters to character classes
68: */
69: private static final String ZZ_CMAP_PACKED =
70: "\11\0\1\117\1\72\1\74\1\74\1\73\22\0\1\117\1\76\1\70"+
71: "\1\116\1\0\1\7\1\107\1\71\1\100\1\101\1\113\1\111\1\104"+
72: "\1\112\1\64\1\114\1\2\3\4\1\66\5\4\1\65\1\0\1\105"+
73: "\1\75\1\106\1\115\1\0\1\37\1\63\1\50\1\31\1\22\1\13"+
74: "\1\41\1\21\1\12\2\5\1\26\1\55\1\23\1\43\1\45\1\57"+
75: "\1\40\1\27\1\20\1\54\1\61\1\36\1\5\1\51\1\5\1\102"+
76: "\1\67\1\103\1\0\1\6\1\0\1\33\1\62\1\46\1\30\1\16"+
77: "\1\11\1\35\1\15\1\10\2\5\1\24\1\53\1\17\1\42\1\44"+
78: "\1\56\1\34\1\25\1\14\1\52\1\60\1\32\1\3\1\47\1\5"+
79: "\1\67\1\110\1\67\1\77\6\0\1\74\u1fa2\0\1\74\1\74\uded5\0"+
80: "\1\1\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u0110\0";
81:
82: /**
83: * Translates characters to character classes
84: */
85: private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
86:
87: /**
88: * Translates DFA states to action switch labels.
89: */
90: private static final int [] ZZ_ACTION = zzUnpackAction();
91:
92: private static final String ZZ_ACTION_PACKED_0 =
93: "\1\0\1\1\1\2\1\3\1\4\1\3\1\1\1\5"+
94: "\34\4\1\6\2\1\1\7\1\2\1\10\1\11\1\12"+
95: "\1\13\1\14\1\15\1\16\1\17\1\20\2\1\1\21"+
96: "\1\22\1\23\1\24\1\1\1\2\1\3\2\0\1\4"+
97: "\1\0\1\25\1\26\1\27\31\4\1\30\1\4\1\30"+
98: "\4\4\1\31\12\4\1\0\1\32\1\0\1\33\1\34"+
99: "\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44"+
100: "\1\0\17\4\1\45\33\4\1\46\1\47\1\44\1\0"+
101: "\6\4\1\50\1\51\4\4\1\52\10\4\1\53\20\4"+
102: "\1\54\1\47\1\44\1\0\1\4\1\55\3\4\1\56"+
103: "\3\4\1\57\15\4\1\60\6\4\1\0\7\4\1\61"+
104: "\15\4\1\62\2\4\1\0\1\4\1\63\1\4\1\64"+
105: "\1\65\1\66\1\67\1\70\6\4\1\71\1\0\4\4"+
106: "\1\72\2\4\1\0\6\4\1\0\2\4\1\73\2\4"+
107: "\1\0\1\74\2\4\1\54\1\75";
108:
109: private static int [] zzUnpackAction() {
110: int [] result = new int[310];
111: int offset = 0;
112: offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
113: return result;
114: }
115:
116: private static int zzUnpackAction(String packed, int offset, int [] result) {
117: int i = 0; /* index in packed string */
118: int j = offset; /* index in unpacked array */
119: int l = packed.length();
120:• while (i < l) {
121: int count = packed.charAt(i++);
122: int value = packed.charAt(i++);
123:• do result[j++] = value; while (--count > 0);
124: }
125: return j;
126: }
127:
128:
129: /**
130: * Translates a state to a row index in the transition table
131: */
132: private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
133:
134: private static final String ZZ_ROWMAP_PACKED_0 =
135: "\0\0\0\120\0\120\0\240\0\360\0\u0140\0\u0190\0\120"+
136: "\0\u01e0\0\u0230\0\u0280\0\u02d0\0\u0320\0\u0370\0\u03c0\0\u0410"+
137: "\0\u0460\0\u04b0\0\u0500\0\u0550\0\u05a0\0\u05f0\0\u0640\0\u0690"+
138: "\0\u06e0\0\u0730\0\u0780\0\u07d0\0\u0820\0\u0870\0\u08c0\0\u0910"+
139: "\0\u0960\0\u09b0\0\u0a00\0\u0a50\0\120\0\u0aa0\0\u0af0\0\u0b40"+
140: "\0\u0b90\0\u0be0\0\u0c30\0\120\0\120\0\120\0\120\0\120"+
141: "\0\u0c80\0\u0cd0\0\u0d20\0\u0d70\0\120\0\120\0\120\0\120"+
142: "\0\u0dc0\0\u0e10\0\u0e60\0\u0e60\0\u0eb0\0\u0f00\0\u0f50\0\360"+
143: "\0\360\0\360\0\u0fa0\0\u0ff0\0\u1040\0\u1090\0\u10e0\0\u1130"+
144: "\0\u1180\0\u11d0\0\u1220\0\u1270\0\u12c0\0\u1310\0\u1360\0\u13b0"+
145: "\0\u1400\0\u1450\0\u14a0\0\u14f0\0\u1540\0\u1590\0\u15e0\0\u1630"+
146: "\0\u1680\0\u16d0\0\u1720\0\u1770\0\u17c0\0\u1810\0\u1860\0\u18b0"+
147: "\0\u1900\0\u1950\0\360\0\u19a0\0\u19f0\0\u1a40\0\u1a90\0\u1ae0"+
148: "\0\u1b30\0\u1b80\0\u1bd0\0\u1c20\0\u1c70\0\u0aa0\0\120\0\u1cc0"+
149: "\0\120\0\120\0\120\0\120\0\120\0\120\0\120\0\120"+
150: "\0\u1d10\0\u1d60\0\u1db0\0\u1e00\0\u1e50\0\u1ea0\0\u1ef0\0\u1f40"+
151: "\0\u1f90\0\u1fe0\0\u2030\0\u2080\0\u20d0\0\u2120\0\u2170\0\u21c0"+
152: "\0\u2210\0\u2260\0\360\0\u22b0\0\u2300\0\u2350\0\u23a0\0\u23f0"+
153: "\0\u2440\0\u2490\0\u24e0\0\u2530\0\u2580\0\u25d0\0\u2620\0\u2670"+
154: "\0\u26c0\0\u2710\0\u2760\0\u27b0\0\u2800\0\u2850\0\u28a0\0\u28f0"+
155: "\0\u2940\0\u2990\0\u29e0\0\u2a30\0\u2a80\0\u2ad0\0\120\0\u2b20"+
156: "\0\u2b70\0\u2bc0\0\u2c10\0\u2c60\0\u2cb0\0\u2d00\0\u2d50\0\u2da0"+
157: "\0\360\0\360\0\u2df0\0\u2e40\0\u2e90\0\u2ee0\0\360\0\u2f30"+
158: "\0\u2f80\0\u2fd0\0\u3020\0\u3070\0\u30c0\0\u3110\0\u3160\0\360"+
159: "\0\u31b0\0\u3200\0\u3250\0\u32a0\0\u32f0\0\u3340\0\u3390\0\u33e0"+
160: "\0\u3430\0\u3480\0\u34d0\0\u3520\0\u3570\0\u35c0\0\u3610\0\u3660"+
161: "\0\u36b0\0\u3700\0\u3750\0\u37a0\0\u37f0\0\360\0\u3840\0\u3890"+
162: "\0\u38e0\0\360\0\u3930\0\u3980\0\u39d0\0\360\0\u3a20\0\u3a70"+
163: "\0\u3ac0\0\u3b10\0\u3b60\0\u3bb0\0\u3c00\0\u3c50\0\u3ca0\0\u3cf0"+
164: "\0\u3d40\0\u3d90\0\u3de0\0\360\0\u3e30\0\u3e80\0\u3ed0\0\u3f20"+
165: "\0\u3f70\0\u3fc0\0\u4010\0\u4060\0\u40b0\0\u4100\0\u4150\0\u41a0"+
166: "\0\u41f0\0\u4240\0\360\0\u4290\0\u42e0\0\u4330\0\u4380\0\u43d0"+
167: "\0\u4420\0\u4470\0\u44c0\0\u4510\0\u4560\0\u45b0\0\u4600\0\u4650"+
168: "\0\360\0\u46a0\0\u46f0\0\u4740\0\u4790\0\360\0\u47e0\0\360"+
169: "\0\360\0\360\0\360\0\360\0\u4830\0\u4880\0\u48d0\0\u4920"+
170: "\0\u4970\0\u49c0\0\360\0\u4a10\0\u4a60\0\u4ab0\0\u4b00\0\u4b50"+
171: "\0\360\0\u4ba0\0\u4bf0\0\u4c40\0\u4c90\0\u4ce0\0\u4d30\0\u4d80"+
172: "\0\u4dd0\0\u4e20\0\u4e70\0\u4ec0\0\u4f10\0\360\0\u4f60\0\u4fb0"+
173: "\0\u5000\0\360\0\u5050\0\u50a0\0\120\0\360";
174:
175: private static int [] zzUnpackRowMap() {
176: int [] result = new int[310];
177: int offset = 0;
178: offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
179: return result;
180: }
181:
182: private static int zzUnpackRowMap(String packed, int offset, int [] result) {
183: int i = 0; /* index in packed string */
184: int j = offset; /* index in unpacked array */
185: int l = packed.length();
186:• while (i < l) {
187: int high = packed.charAt(i++) << 16;
188: result[j++] = high | packed.charAt(i++);
189: }
190: return j;
191: }
192:
193: /**
194: * The transition table of the DFA
195: */
196: private static final int [] ZZ_TRANS = zzUnpackTrans();
197:
198: private static final String ZZ_TRANS_PACKED_0 =
199: "\1\2\1\3\1\4\1\5\1\6\1\5\1\7\1\10"+
200: "\1\11\1\12\1\13\1\14\1\15\1\5\1\16\1\17"+
201: "\1\20\1\5\1\21\1\22\1\5\1\23\1\5\1\24"+
202: "\1\25\1\26\1\27\1\30\2\5\1\31\1\32\2\5"+
203: "\1\33\1\34\1\35\1\36\1\37\1\5\1\40\1\5"+
204: "\1\41\1\5\1\42\3\5\1\43\1\44\2\5\1\2"+
205: "\1\45\1\6\1\2\1\46\1\47\1\50\1\51\1\0"+
206: "\1\52\1\53\1\2\1\54\1\55\1\56\1\57\1\60"+
207: "\1\61\1\62\1\63\1\64\1\65\1\66\1\67\1\70"+
208: "\1\71\1\72\1\51\122\0\1\73\1\74\1\73\57\0"+
209: "\1\75\1\0\1\73\33\0\4\5\1\76\1\0\54\5"+
210: "\2\0\1\5\33\0\1\73\1\0\1\73\57\0\1\75"+
211: "\1\0\1\73\37\0\1\77\113\0\4\5\1\76\1\0"+
212: "\1\5\1\100\5\5\1\101\44\5\2\0\1\5\33\0"+
213: "\4\5\1\76\1\0\1\102\22\5\1\103\1\5\1\104"+
214: "\4\5\1\105\21\5\2\0\1\5\33\0\4\5\1\76"+
215: "\1\0\3\5\1\100\7\5\1\101\40\5\2\0\1\5"+
216: "\33\0\4\5\1\76\1\0\2\5\1\102\24\5\1\106"+
217: "\1\5\1\107\1\5\1\110\20\5\2\0\1\5\33\0"+
218: "\4\5\1\76\1\0\5\5\1\111\46\5\2\0\1\5"+
219: "\33\0\4\5\1\76\1\0\14\5\1\112\7\5\1\113"+
220: "\27\5\2\0\1\5\33\0\4\5\1\76\1\0\42\5"+
221: "\1\114\11\5\2\0\1\5\33\0\4\5\1\76\1\0"+
222: "\11\5\1\115\42\5\2\0\1\5\33\0\4\5\1\76"+
223: "\1\0\16\5\1\116\11\5\1\117\23\5\2\0\1\5"+
224: "\33\0\4\5\1\76\1\0\44\5\1\120\7\5\2\0"+
225: "\1\5\33\0\4\5\1\76\1\0\4\5\1\121\1\5"+
226: "\1\122\14\5\1\123\10\5\1\124\5\5\1\125\11\5"+
227: "\2\0\1\5\33\0\4\5\1\76\1\0\10\5\1\126"+
228: "\1\5\1\127\14\5\1\130\5\5\1\131\6\5\1\132"+
229: "\7\5\2\0\1\5\33\0\4\5\1\76\1\0\6\5"+
230: "\1\133\23\5\1\134\21\5\2\0\1\5\33\0\4\5"+
231: "\1\76\1\0\12\5\1\135\20\5\1\136\20\5\2\0"+
232: "\1\5\33\0\4\5\1\76\1\0\23\5\1\137\30\5"+
233: "\2\0\1\5\33\0\4\5\1\76\1\0\20\5\1\140"+
234: "\33\5\2\0\1\5\33\0\4\5\1\76\1\0\27\5"+
235: "\1\141\24\5\2\0\1\5\33\0\4\5\1\76\1\0"+
236: "\21\5\1\142\32\5\2\0\1\5\33\0\4\5\1\76"+
237: "\1\0\7\5\1\143\44\5\2\0\1\5\33\0\4\5"+
238: "\1\76\1\0\13\5\1\143\40\5\2\0\1\5\33\0"+
239: "\4\5\1\76\1\0\24\5\1\144\27\5\2\0\1\5"+
240: "\33\0\4\5\1\76\1\0\30\5\1\145\23\5\2\0"+
241: "\1\5\33\0\4\5\1\76\1\0\24\5\1\146\5\5"+
242: "\1\147\21\5\2\0\1\5\33\0\4\5\1\76\1\0"+
243: "\30\5\1\150\2\5\1\151\20\5\2\0\1\5\33\0"+
244: "\4\5\1\76\1\0\7\5\1\152\44\5\2\0\1\5"+
245: "\33\0\4\5\1\76\1\0\13\5\1\153\40\5\2\0"+
246: "\1\5\33\0\4\5\1\76\1\0\6\5\1\154\45\5"+
247: "\2\0\1\5\33\0\4\5\1\76\1\0\12\5\1\155"+
248: "\41\5\2\0\1\5\31\0\70\156\1\157\27\156\72\160"+
249: "\3\0\23\160\72\0\1\50\120\0\1\51\23\0\1\51"+
250: "\75\0\1\161\1\0\1\162\115\0\1\163\117\0\1\164"+
251: "\117\0\1\165\131\0\1\166\120\0\1\167\74\0\1\170"+
252: "\32\0\72\72\3\0\23\72\2\0\1\73\1\0\1\73"+
253: "\61\0\1\73\33\0\1\171\1\0\1\171\61\0\1\171"+
254: "\33\0\4\5\1\76\1\172\54\5\2\0\1\5\44\0"+
255: "\1\173\106\0\4\5\1\76\1\0\4\5\1\174\47\5"+
256: "\2\0\1\5\33\0\4\5\1\76\1\0\24\5\1\175"+
257: "\27\5\2\0\1\5\33\0\4\5\1\76\1\0\24\5"+
258: "\1\176\27\5\2\0\1\5\33\0\4\5\1\76\1\0"+
259: "\10\5\1\177\43\5\2\0\1\5\33\0\4\5\1\76"+
260: "\1\0\30\5\1\200\23\5\2\0\1\5\33\0\4\5"+
261: "\1\76\1\0\30\5\1\201\23\5\2\0\1\5\33\0"+
262: "\4\5\1\76\1\0\6\5\1\202\45\5\2\0\1\5"+
263: "\33\0\4\5\1\76\1\0\15\5\1\203\36\5\2\0"+
264: "\1\5\33\0\4\5\1\76\1\0\24\5\1\204\27\5"+
265: "\2\0\1\5\33\0\4\5\1\76\1\0\43\5\1\205"+
266: "\10\5\2\0\1\5\33\0\4\5\1\76\1\0\12\5"+
267: "\1\206\41\5\2\0\1\5\33\0\4\5\1\76\1\0"+
268: "\17\5\1\207\34\5\2\0\1\5\33\0\4\5\1\76"+
269: "\1\0\30\5\1\210\23\5\2\0\1\5\33\0\4\5"+
270: "\1\76\1\0\45\5\1\211\6\5\2\0\1\5\33\0"+
271: "\4\5\1\76\1\0\23\5\1\212\30\5\2\0\1\5"+
272: "\33\0\4\5\1\76\1\0\4\5\1\213\47\5\2\0"+
273: "\1\5\33\0\4\5\1\76\1\0\43\5\1\214\10\5"+
274: "\2\0\1\5\33\0\4\5\1\76\1\0\14\5\1\215"+
275: "\37\5\2\0\1\5\33\0\4\5\1\76\1\0\52\5"+
276: "\1\216\1\5\2\0\1\5\33\0\4\5\1\76\1\0"+
277: "\27\5\1\217\24\5\2\0\1\5\33\0\4\5\1\76"+
278: "\1\0\10\5\1\213\43\5\2\0\1\5\33\0\4\5"+
279: "\1\76\1\0\45\5\1\220\6\5\2\0\1\5\33\0"+
280: "\4\5\1\76\1\0\16\5\1\221\35\5\2\0\1\5"+
281: "\33\0\4\5\1\76\1\0\53\5\1\222\2\0\1\5"+
282: "\33\0\4\5\1\76\1\0\1\5\1\223\32\5\1\224"+
283: "\17\5\2\0\1\5\33\0\4\5\1\76\1\0\7\5"+
284: "\1\225\44\5\2\0\1\5\33\0\4\5\1\76\1\0"+
285: "\3\5\1\226\31\5\1\227\16\5\2\0\1\5\33\0"+
286: "\4\5\1\76\1\0\13\5\1\230\40\5\2\0\1\5"+
287: "\33\0\4\5\1\76\1\0\24\5\1\231\27\5\2\0"+
288: "\1\5\33\0\4\5\1\76\1\0\20\5\1\232\33\5"+
289: "\2\0\1\5\33\0\4\5\1\76\1\0\30\5\1\233"+
290: "\23\5\2\0\1\5\33\0\4\5\1\76\1\0\21\5"+
291: "\1\234\32\5\2\0\1\5\33\0\4\5\1\76\1\0"+
292: "\32\5\1\235\21\5\2\0\1\5\33\0\4\5\1\76"+
293: "\1\0\33\5\1\236\20\5\2\0\1\5\33\0\4\5"+
294: "\1\76\1\0\37\5\1\237\14\5\2\0\1\5\33\0"+
295: "\4\5\1\76\1\0\34\5\1\240\17\5\2\0\1\5"+
296: "\33\0\4\5\1\76\1\0\41\5\1\241\12\5\2\0"+
297: "\1\5\33\0\4\5\1\76\1\0\35\5\1\242\16\5"+
298: "\2\0\1\5\33\0\4\5\1\76\1\0\1\243\53\5"+
299: "\2\0\1\5\33\0\4\5\1\76\1\0\2\5\1\244"+
300: "\51\5\2\0\1\5\33\0\4\5\1\76\1\0\24\5"+
301: "\1\245\27\5\2\0\1\5\33\0\4\5\1\76\1\0"+
302: "\30\5\1\246\23\5\2\0\1\5\122\0\1\247\112\0"+
303: "\1\250\41\0\1\251\137\0\1\252\73\0\4\5\1\76"+
304: "\1\0\23\5\1\253\30\5\2\0\1\5\33\0\4\5"+
305: "\1\76\1\0\6\5\1\254\45\5\2\0\1\5\33\0"+
306: "\4\5\1\76\1\0\6\5\1\255\45\5\2\0\1\5"+
307: "\33\0\4\5\1\76\1\0\27\5\1\256\24\5\2\0"+
308: "\1\5\33\0\4\5\1\76\1\0\12\5\1\257\41\5"+
309: "\2\0\1\5\33\0\4\5\1\76\1\0\12\5\1\260"+
310: "\41\5\2\0\1\5\33\0\4\5\1\76\1\0\7\5"+
311: "\1\261\44\5\2\0\1\5\33\0\4\5\1\76\1\0"+
312: "\6\5\1\262\45\5\2\0\1\5\33\0\4\5\1\76"+
313: "\1\0\32\5\1\263\21\5\2\0\1\5\33\0\4\5"+
314: "\1\76\1\0\6\5\1\264\45\5\2\0\1\5\33\0"+
315: "\4\5\1\76\1\0\13\5\1\261\40\5\2\0\1\5"+
316: "\33\0\4\5\1\76\1\0\12\5\1\262\41\5\2\0"+
317: "\1\5\33\0\4\5\1\76\1\0\33\5\1\265\20\5"+
318: "\2\0\1\5\33\0\4\5\1\76\1\0\12\5\1\266"+
319: "\41\5\2\0\1\5\33\0\4\5\1\76\1\0\4\5"+
320: "\1\267\47\5\2\0\1\5\33\0\4\5\1\76\1\0"+
321: "\6\5\1\270\45\5\2\0\1\5\33\0\4\5\1\76"+
322: "\1\0\1\271\53\5\2\0\1\5\33\0\4\5\1\76"+
323: "\1\0\7\5\1\272\44\5\2\0\1\5\33\0\4\5"+
324: "\1\76\1\0\10\5\1\267\43\5\2\0\1\5\33\0"+
325: "\4\5\1\76\1\0\12\5\1\273\41\5\2\0\1\5"+
326: "\33\0\4\5\1\76\1\0\2\5\1\274\51\5\2\0"+
327: "\1\5\33\0\4\5\1\76\1\0\13\5\1\275\40\5"+
328: "\2\0\1\5\33\0\4\5\1\76\1\0\1\276\53\5"+
329: "\2\0\1\5\33\0\4\5\1\76\1\0\6\5\1\277"+
330: "\45\5\2\0\1\5\33\0\4\5\1\76\1\0\6\5"+
331: "\1\300\45\5\2\0\1\5\33\0\4\5\1\76\1\0"+
332: "\2\5\1\301\51\5\2\0\1\5\33\0\4\5\1\76"+
333: "\1\0\12\5\1\302\41\5\2\0\1\5\33\0\4\5"+
334: "\1\76\1\0\12\5\1\300\41\5\2\0\1\5\33\0"+
335: "\4\5\1\76\1\0\7\5\1\303\44\5\2\0\1\5"+
336: "\33\0\4\5\1\304\1\0\54\5\2\0\1\5\33\0"+
337: "\4\5\1\76\1\0\13\5\1\305\40\5\2\0\1\5"+
338: "\33\0\4\5\1\306\1\0\54\5\2\0\1\5\33\0"+
339: "\4\5\1\76\1\0\50\5\1\307\3\5\2\0\1\5"+
340: "\33\0\4\5\1\76\1\0\51\5\1\310\2\5\2\0"+
341: "\1\5\33\0\4\5\1\76\1\0\34\5\1\311\17\5"+
342: "\2\0\1\5\33\0\4\5\1\76\1\0\37\5\1\312"+
343: "\14\5\2\0\1\5\33\0\4\5\1\76\1\0\35\5"+
344: "\1\313\16\5\2\0\1\5\33\0\4\5\1\76\1\0"+
345: "\41\5\1\314\12\5\2\0\1\5\33\0\4\5\1\76"+
346: "\1\0\46\5\1\315\5\5\2\0\1\5\33\0\4\5"+
347: "\1\76\1\0\47\5\1\316\4\5\2\0\1\5\33\0"+
348: "\4\5\1\76\1\0\15\5\1\317\36\5\2\0\1\5"+
349: "\33\0\4\5\1\76\1\0\17\5\1\320\34\5\2\0"+
350: "\1\5\33\0\1\321\1\0\1\321\57\0\1\322\1\0"+
351: "\1\321\1\322\12\0\2\322\5\0\3\322\1\0\1\322"+
352: "\4\0\4\251\1\323\1\0\54\251\2\0\1\251\43\0"+
353: "\1\324\107\0\4\5\1\76\1\0\14\5\1\325\37\5"+
354: "\2\0\1\5\33\0\4\5\1\76\1\0\34\5\1\326"+
355: "\17\5\2\0\1\5\33\0\4\5\1\76\1\0\23\5"+
356: "\1\327\30\5\2\0\1\5\33\0\4\5\1\76\1\0"+
357: "\16\5\1\330\35\5\2\0\1\5\33\0\4\5\1\76"+
358: "\1\0\35\5\1\326\16\5\2\0\1\5\33\0\4\5"+
359: "\1\76\1\0\27\5\1\331\24\5\2\0\1\5\33\0"+
360: "\4\5\1\76\1\0\24\5\1\332\27\5\2\0\1\5"+
361: "\33\0\4\5\1\76\1\0\24\5\1\333\27\5\2\0"+
362: "\1\5\33\0\4\5\1\76\1\0\30\5\1\332\23\5"+
363: "\2\0\1\5\33\0\4\5\1\76\1\0\30\5\1\334"+
364: "\23\5\2\0\1\5\33\0\4\5\1\76\1\0\7\5"+
365: "\1\335\44\5\2\0\1\5\33\0\4\5\1\76\1\0"+
366: "\4\5\1\336\47\5\2\0\1\5\33\0\4\5\1\76"+
367: "\1\0\6\5\1\337\45\5\2\0\1\5\33\0\4\5"+
368: "\1\76\1\0\13\5\1\340\40\5\2\0\1\5\33\0"+
369: "\4\5\1\76\1\0\10\5\1\336\43\5\2\0\1\5"+
370: "\33\0\4\5\1\76\1\0\12\5\1\341\41\5\2\0"+
371: "\1\5\33\0\4\5\1\76\1\0\7\5\1\342\44\5"+
372: "\2\0\1\5\33\0\4\5\1\76\1\0\7\5\1\343"+
373: "\44\5\2\0\1\5\33\0\4\5\1\76\1\0\13\5"+
374: "\1\344\40\5\2\0\1\5\33\0\4\5\1\76\1\0"+
375: "\13\5\1\345\40\5\2\0\1\5\33\0\4\5\1\76"+
376: "\1\0\1\346\53\5\2\0\1\5\33\0\4\5\1\76"+
377: "\1\172\4\5\1\347\47\5\2\0\1\5\33\0\4\5"+
378: "\1\76\1\0\2\5\1\350\51\5\2\0\1\5\33\0"+
379: "\4\5\1\76\1\172\10\5\1\351\43\5\2\0\1\5"+
380: "\33\0\4\5\1\76\1\0\1\352\53\5\2\0\1\5"+
381: "\33\0\4\5\1\76\1\0\2\5\1\353\51\5\2\0"+
382: "\1\5\33\0\4\5\1\76\1\0\4\5\1\354\47\5"+
383: "\2\0\1\5\33\0\4\5\1\355\1\0\54\5\2\0"+
384: "\1\5\33\0\4\5\1\76\1\0\10\5\1\354\43\5"+
385: "\2\0\1\5\33\0\4\5\1\356\1\0\54\5\2\0"+
386: "\1\5\33\0\4\5\1\76\1\0\42\5\1\357\11\5"+
387: "\2\0\1\5\33\0\4\5\1\76\1\0\44\5\1\360"+
388: "\7\5\2\0\1\5\33\0\4\5\1\76\1\0\1\361"+
389: "\53\5\2\0\1\5\33\0\4\5\1\76\1\0\2\5"+
390: "\1\362\51\5\2\0\1\5\31\0\16\321\1\0\6\321"+
391: "\1\0\5\321\1\0\10\321\1\0\1\321\1\0\16\321"+
392: "\1\0\32\321\2\0\1\322\1\0\1\322\57\0\1\322"+
393: "\1\0\2\322\12\0\2\322\5\0\3\322\1\0\1\322"+
394: "\4\0\4\251\1\323\1\172\54\251\2\0\1\251\117\0"+
395: "\1\363\33\0\4\5\1\364\1\0\54\5\2\0\1\5"+
396: "\33\0\4\5\1\76\1\0\36\5\1\365\15\5\2\0"+
397: "\1\5\33\0\4\5\1\366\1\0\54\5\2\0\1\5"+
398: "\33\0\4\5\1\76\1\0\40\5\1\367\13\5\2\0"+
399: "\1\5\33\0\4\5\1\76\1\0\1\370\53\5\2\0"+
400: "\1\5\33\0\4\5\1\76\1\0\2\5\1\371\51\5"+
401: "\2\0\1\5\33\0\4\5\1\76\1\0\6\5\1\372"+
402: "\45\5\2\0\1\5\33\0\4\5\1\76\1\0\4\5"+
403: "\1\373\47\5\2\0\1\5\33\0\4\5\1\76\1\0"+
404: "\12\5\1\374\41\5\2\0\1\5\33\0\4\5\1\76"+
405: "\1\0\10\5\1\373\43\5\2\0\1\5\33\0\4\5"+
406: "\1\76\1\0\6\5\1\375\45\5\2\0\1\5\33\0"+
407: "\4\5\1\76\1\0\20\5\1\376\33\5\2\0\1\5"+
408: "\33\0\4\5\1\76\1\0\12\5\1\377\41\5\2\0"+
409: "\1\5\33\0\4\5\1\76\1\0\21\5\1\u0100\32\5"+
410: "\2\0\1\5\33\0\4\5\1\76\1\0\7\5\1\u0101"+
411: "\44\5\2\0\1\5\33\0\4\5\1\76\1\0\32\5"+
412: "\1\u0102\21\5\2\0\1\5\33\0\4\5\1\76\1\0"+
413: "\13\5\1\u0103\40\5\2\0\1\5\33\0\4\5\1\76"+
414: "\1\0\33\5\1\u0104\20\5\2\0\1\5\33\0\4\5"+
415: "\1\76\1\0\20\5\1\u0105\33\5\2\0\1\5\33\0"+
416: "\4\5\1\76\1\0\21\5\1\u0106\32\5\2\0\1\5"+
417: "\33\0\4\5\1\76\1\172\34\5\1\u0107\17\5\2\0"+
418: "\1\5\33\0\4\5\1\76\1\172\35\5\1\u0108\16\5"+
419: "\2\0\1\5\33\0\4\5\1\76\1\0\6\5\1\u0109"+
420: "\45\5\2\0\1\5\33\0\4\5\1\76\1\0\12\5"+
421: "\1\u0109\41\5\2\0\1\5\33\0\4\5\1\76\1\0"+
422: "\32\5\1\u010a\21\5\2\0\1\5\33\0\4\5\1\76"+
423: "\1\0\33\5\1\u010b\20\5\2\0\1\5\57\0\1\u010c"+
424: "\73\0\4\5\1\76\1\172\6\5\1\u010d\45\5\2\0"+
425: "\1\5\33\0\4\5\1\76\1\0\5\5\1\u010e\46\5"+
426: "\2\0\1\5\33\0\4\5\1\76\1\172\12\5\1\u010f"+
427: "\41\5\2\0\1\5\33\0\4\5\1\76\1\0\11\5"+
428: "\1\u010e\42\5\2\0\1\5\33\0\4\5\1\76\1\0"+
429: "\36\5\1\u0110\15\5\2\0\1\5\33\0\4\5\1\76"+
430: "\1\0\40\5\1\u0110\13\5\2\0\1\5\33\0\4\5"+
431: "\1\76\1\0\4\5\1\u0111\47\5\2\0\1\5\33\0"+
432: "\4\5\1\76\1\0\10\5\1\u0111\43\5\2\0\1\5"+
433: "\33\0\4\5\1\76\1\0\20\5\1\u0112\33\5\2\0"+
434: "\1\5\33\0\4\5\1\76\1\0\15\5\1\u0113\36\5"+
435: "\2\0\1\5\33\0\4\5\1\76\1\0\21\5\1\u0112"+
436: "\32\5\2\0\1\5\33\0\4\5\1\76\1\0\17\5"+
437: "\1\u0113\34\5\2\0\1\5\33\0\4\5\1\76\1\0"+
438: "\25\5\1\u0114\26\5\2\0\1\5\33\0\4\5\1\u0115"+
439: "\1\0\54\5\2\0\1\5\33\0\4\5\1\76\1\0"+
440: "\31\5\1\u0114\22\5\2\0\1\5\33\0\4\5\1\u0116"+
441: "\1\0\54\5\2\0\1\5\33\0\4\5\1\76\1\0"+
442: "\6\5\1\u0117\45\5\2\0\1\5\33\0\4\5\1\76"+
443: "\1\0\12\5\1\u0118\41\5\2\0\1\5\33\0\4\5"+
444: "\1\76\1\0\6\5\1\u0119\45\5\2\0\1\5\33\0"+
445: "\4\5\1\76\1\0\12\5\1\u011a\41\5\2\0\1\5"+
446: "\33\0\4\5\1\76\1\0\7\5\1\u011b\44\5\2\0"+
447: "\1\5\33\0\4\5\1\76\1\0\13\5\1\u011b\40\5"+
448: "\2\0\1\5\112\0\1\u011c\40\0\4\5\1\76\1\0"+
449: "\24\5\1\u011d\27\5\2\0\1\5\33\0\4\5\1\76"+
450: "\1\0\30\5\1\u011e\23\5\2\0\1\5\33\0\4\5"+
451: "\1\76\1\172\32\5\1\u011f\21\5\2\0\1\5\33\0"+
452: "\4\5\1\76\1\172\33\5\1\u0120\20\5\2\0\1\5"+
453: "\33\0\4\5\1\76\1\0\15\5\1\u0121\36\5\2\0"+
454: "\1\5\33\0\4\5\1\76\1\0\17\5\1\u0121\34\5"+
455: "\2\0\1\5\33\0\4\5\1\76\1\0\7\5\1\u0122"+
456: "\44\5\2\0\1\5\33\0\4\5\1\76\1\0\13\5"+
457: "\1\u0123\40\5\2\0\1\5\53\0\1\u0124\77\0\4\5"+
458: "\1\76\1\0\24\5\1\u0125\27\5\2\0\1\5\33\0"+
459: "\4\5\1\76\1\0\30\5\1\u0126\23\5\2\0\1\5"+
460: "\33\0\4\5\1\76\1\0\34\5\1\u0127\17\5\2\0"+
461: "\1\5\33\0\4\5\1\76\1\0\35\5\1\u0128\16\5"+
462: "\2\0\1\5\33\0\4\5\1\76\1\0\20\5\1\u0129"+
463: "\33\5\2\0\1\5\33\0\4\5\1\76\1\0\21\5"+
464: "\1\u012a\32\5\2\0\1\5\71\0\1\u012b\61\0\4\5"+
465: "\1\76\1\0\32\5\1\u012c\21\5\2\0\1\5\33\0"+
466: "\4\5\1\76\1\0\33\5\1\u012d\20\5\2\0\1\5"+
467: "\33\0\4\5\1\76\1\0\4\5\1\u012e\47\5\2\0"+
468: "\1\5\33\0\4\5\1\76\1\0\10\5\1\u012e\43\5"+
469: "\2\0\1\5\33\0\4\5\1\76\1\0\1\u012f\53\5"+
470: "\2\0\1\5\33\0\4\5\1\76\1\0\2\5\1\u0130"+
471: "\51\5\2\0\1\5\37\0\1\u0131\113\0\4\5\1\76"+
472: "\1\0\24\5\1\u0132\27\5\2\0\1\5\33\0\4\5"+
473: "\1\76\1\0\30\5\1\u0132\23\5\2\0\1\5\33\0"+
474: "\4\5\1\76\1\0\7\5\1\u0133\44\5\2\0\1\5"+
475: "\33\0\4\5\1\76\1\0\13\5\1\u0134\40\5\2\0"+
476: "\1\5\37\0\1\u0135\113\0\4\5\1\76\1\0\25\5"+
477: "\1\u0136\26\5\2\0\1\5\33\0\4\5\1\76\1\0"+
478: "\31\5\1\u0136\22\5\2\0\1\5\31\0";
479:
480: private static int [] zzUnpackTrans() {
481: int [] result = new int[20720];
482: int offset = 0;
483: offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
484: return result;
485: }
486:
487: private static int zzUnpackTrans(String packed, int offset, int [] result) {
488: int i = 0; /* index in packed string */
489: int j = offset; /* index in unpacked array */
490: int l = packed.length();
491:• while (i < l) {
492: int count = packed.charAt(i++);
493: int value = packed.charAt(i++);
494: value--;
495:• do result[j++] = value; while (--count > 0);
496: }
497: return j;
498: }
499:
500:
501: /* error codes */
502: private static final int ZZ_UNKNOWN_ERROR = 0;
503: private static final int ZZ_NO_MATCH = 1;
504: private static final int ZZ_PUSHBACK_2BIG = 2;
505:
506: /* error messages for the codes above */
507: private static final String ZZ_ERROR_MSG[] = {
508: "Unknown internal scanner error",
509: "Error: could not match input",
510: "Error: pushback value was too large"
511: };
512:
513: /**
514: * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
515: */
516: private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
517:
518: private static final String ZZ_ATTRIBUTE_PACKED_0 =
519: "\1\0\2\11\4\1\1\11\34\1\1\11\6\1\5\11"+
520: "\4\1\4\11\3\1\2\0\1\1\1\0\56\1\1\0"+
521: "\1\11\1\0\10\11\2\1\1\0\53\1\1\11\2\1"+
522: "\1\0\51\1\1\0\36\1\1\0\30\1\1\0\17\1"+
523: "\1\0\7\1\1\0\6\1\1\0\5\1\1\0\3\1"+
524: "\1\11\1\1";
525:
526: private static int [] zzUnpackAttribute() {
527: int [] result = new int[310];
528: int offset = 0;
529: offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
530: return result;
531: }
532:
533: private static int zzUnpackAttribute(String packed, int offset, int [] result) {
534: int i = 0; /* index in packed string */
535: int j = offset; /* index in unpacked array */
536: int l = packed.length();
537:• while (i < l) {
538: int count = packed.charAt(i++);
539: int value = packed.charAt(i++);
540:• do result[j++] = value; while (--count > 0);
541: }
542: return j;
543: }
544:
545: /** the input device */
546: private java.io.Reader zzReader;
547:
548: /** the current state of the DFA */
549: private int zzState;
550:
551: /** the current lexical state */
552: private int zzLexicalState = YYINITIAL;
553:
554: /** this buffer contains the current text to be matched and is
555: the source of the yytext() string */
556: private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
557:
558: /** the textposition at the last accepting state */
559: private int zzMarkedPos;
560:
561: /** the current text position in the buffer */
562: private int zzCurrentPos;
563:
564: /** startRead marks the beginning of the yytext() string in the buffer */
565: private int zzStartRead;
566:
567: /** endRead marks the last character in the buffer, that has been read
568: from input */
569: private int zzEndRead;
570:
571: /** number of newlines encountered up to the start of the matched text */
572: private int yyline;
573:
574: /** the number of characters up to the start of the matched text */
575: private int yychar;
576:
577: /**
578: * the number of characters from the last newline up to the start of the
579: * matched text
580: */
581: private int yycolumn;
582:
583: /**
584: * zzAtBOL == true <=> the scanner is currently at the beginning of a line
585: */
586: private boolean zzAtBOL = true;
587:
588: /** zzAtEOF == true <=> the scanner is at the EOF */
589: private boolean zzAtEOF;
590:
591: /** denotes if the user-EOF-code has already been executed */
592: private boolean zzEOFDone;
593:
594: /**
595: * The number of occupied positions in zzBuffer beyond zzEndRead.
596: * When a lead/high surrogate has been read from the input stream
597: * into the final zzBuffer position, this will have a value of 1;
598: * otherwise, it will have a value of 0.
599: */
600: private int zzFinalHighSurrogate = 0;
601:
602: /* user code: */
603: /* store a reference to the parser object */
604: private ExtParser parser = new ExtParser();
605: /* constructor taking an additional parser object */
606: public ExtScanner(java.io.Reader reader, ExtParser parser) {
607: this.zzReader = reader;
608: this.parser = parser;
609: }
610:
611:
612: /**
613: * Creates a new scanner
614: *
615: * @param in the java.io.Reader to read input from.
616: */
617: public ExtScanner(java.io.Reader in) {
618: this.zzReader = in;
619: }
620:
621:
622: /**
623: * Unpacks the compressed character translation table.
624: *
625: * @param packed the packed character translation table
626: * @return the unpacked character translation table
627: */
628: private static char [] zzUnpackCMap(String packed) {
629: char [] map = new char[0x110000];
630: int i = 0; /* index in packed string */
631: int j = 0; /* index in unpacked array */
632:• while (i < 236) {
633: int count = packed.charAt(i++);
634: char value = packed.charAt(i++);
635:• do map[j++] = value; while (--count > 0);
636: }
637: return map;
638: }
639:
640:
641: /**
642: * Refills the input buffer.
643: *
644: * @return <code>false</code>, iff there was new input.
645: *
646: * @exception java.io.IOException if any I/O-Error occurs
647: */
648: private boolean zzRefill() throws java.io.IOException {
649:
650: /* first: make room (if you can) */
651:• if (zzStartRead > 0) {
652: zzEndRead += zzFinalHighSurrogate;
653: zzFinalHighSurrogate = 0;
654: System.arraycopy(zzBuffer, zzStartRead,
655: zzBuffer, 0,
656: zzEndRead-zzStartRead);
657:
658: /* translate stored positions */
659: zzEndRead-= zzStartRead;
660: zzCurrentPos-= zzStartRead;
661: zzMarkedPos-= zzStartRead;
662: zzStartRead = 0;
663: }
664:
665: /* is the buffer big enough? */
666:• if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) {
667: /* if not: blow it up */
668: char newBuffer[] = new char[zzBuffer.length*2];
669: System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
670: zzBuffer = newBuffer;
671: zzEndRead += zzFinalHighSurrogate;
672: zzFinalHighSurrogate = 0;
673: }
674:
675: /* fill the buffer with new input */
676: int requested = zzBuffer.length - zzEndRead;
677: int numRead = zzReader.read(zzBuffer, zzEndRead, requested);
678:
679: /* not supposed to occur according to specification of java.io.Reader */
680:• if (numRead == 0) {
681: throw new java.io.IOException("Reader returned 0 characters. See JFlex examples for workaround.");
682: }
683:• if (numRead > 0) {
684: zzEndRead += numRead;
685: /* If numRead == requested, we might have requested to few chars to
686: encode a full Unicode character. We assume that a Reader would
687: otherwise never return half characters. */
688:• if (numRead == requested) {
689:• if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) {
690: --zzEndRead;
691: zzFinalHighSurrogate = 1;
692: }
693: }
694: /* potentially more input available */
695: return false;
696: }
697:
698: /* numRead < 0 ==> end of stream */
699: return true;
700: }
701:
702:
703: /**
704: * Closes the input stream.
705: */
706: public final void yyclose() throws java.io.IOException {
707: zzAtEOF = true; /* indicate end of file */
708: zzEndRead = zzStartRead; /* invalidate buffer */
709:
710:• if (zzReader != null)
711: zzReader.close();
712: }
713:
714:
715: /**
716: * Resets the scanner to read from a new input stream.
717: * Does not close the old reader.
718: *
719: * All internal variables are reset, the old input stream
720: * <b>cannot</b> be reused (internal buffer is discarded and lost).
721: * Lexical state is set to <tt>ZZ_INITIAL</tt>.
722: *
723: * Internal scan buffer is resized down to its initial length, if it has grown.
724: *
725: * @param reader the new input stream
726: */
727: public final void yyreset(java.io.Reader reader) {
728: zzReader = reader;
729: zzAtBOL = true;
730: zzAtEOF = false;
731: zzEOFDone = false;
732: zzEndRead = zzStartRead = 0;
733: zzCurrentPos = zzMarkedPos = 0;
734: zzFinalHighSurrogate = 0;
735: yyline = yychar = yycolumn = 0;
736: zzLexicalState = YYINITIAL;
737:• if (zzBuffer.length > ZZ_BUFFERSIZE)
738: zzBuffer = new char[ZZ_BUFFERSIZE];
739: }
740:
741:
742: /**
743: * Returns the current lexical state.
744: */
745: public final int yystate() {
746: return zzLexicalState;
747: }
748:
749:
750: /**
751: * Enters a new lexical state
752: *
753: * @param newState the new lexical state
754: */
755: public final void yybegin(int newState) {
756: zzLexicalState = newState;
757: }
758:
759:
760: /**
761: * Returns the text matched by the current regular expression.
762: */
763: public final String yytext() {
764: return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
765: }
766:
767:
768: /**
769: * Returns the character at position <tt>pos</tt> from the
770: * matched text.
771: *
772: * It is equivalent to yytext().charAt(pos), but faster
773: *
774: * @param pos the position of the character to fetch.
775: * A value from 0 to yylength()-1.
776: *
777: * @return the character at position pos
778: */
779: public final char yycharat(int pos) {
780: return zzBuffer[zzStartRead+pos];
781: }
782:
783:
784: /**
785: * Returns the length of the matched text region.
786: */
787: public final int yylength() {
788: return zzMarkedPos-zzStartRead;
789: }
790:
791:
792: /**
793: * Reports an error that occured while scanning.
794: *
795: * In a wellformed scanner (no or only correct usage of
796: * yypushback(int) and a match-all fallback rule) this method
797: * will only be called with things that "Can't Possibly Happen".
798: * If this method is called, something is seriously wrong
799: * (e.g. a JFlex bug producing a faulty scanner etc.).
800: *
801: * Usual syntax/scanner level error handling should be done
802: * in error fallback rules.
803: *
804: * @param errorCode the code of the errormessage to display
805: */
806: private void zzScanError(int errorCode) {
807: String message;
808: try {
809: message = ZZ_ERROR_MSG[errorCode];
810: }
811: catch (ArrayIndexOutOfBoundsException e) {
812: message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
813: }
814:
815: throw new Error(message);
816: }
817:
818:
819: /**
820: * Pushes the specified amount of characters back into the input stream.
821: *
822: * They will be read again by then next call of the scanning method
823: *
824: * @param number the number of characters to be read again.
825: * This number must not be greater than yylength()!
826: */
827: public void yypushback(int number) {
828:• if ( number > yylength() )
829: zzScanError(ZZ_PUSHBACK_2BIG);
830:
831: zzMarkedPos -= number;
832: }
833:
834:
835: /**
836: * Resumes scanning until the next regular expression is matched,
837: * the end of input is encountered or an I/O-Error occurs.
838: *
839: * @return the next token
840: * @exception java.io.IOException if any I/O-Error occurs
841: */
842: public int next_token() throws java.io.IOException {
843: int zzInput;
844: int zzAction;
845:
846: // cached fields:
847: int zzCurrentPosL;
848: int zzMarkedPosL;
849: int zzEndReadL = zzEndRead;
850: char [] zzBufferL = zzBuffer;
851: char [] zzCMapL = ZZ_CMAP;
852:
853: int [] zzTransL = ZZ_TRANS;
854: int [] zzRowMapL = ZZ_ROWMAP;
855: int [] zzAttrL = ZZ_ATTRIBUTE;
856:
857: while (true) {
858: zzMarkedPosL = zzMarkedPos;
859:
860: zzAction = -1;
861:
862: zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
863:
864: zzState = ZZ_LEXSTATE[zzLexicalState];
865:
866: // set up zzAction for empty match case:
867: int zzAttributes = zzAttrL[zzState];
868:• if ( (zzAttributes & 1) == 1 ) {
869: zzAction = zzState;
870: }
871:
872:
873: zzForAction: {
874: while (true) {
875:
876:• if (zzCurrentPosL < zzEndReadL) {
877: zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);
878: zzCurrentPosL += Character.charCount(zzInput);
879: }
880:• else if (zzAtEOF) {
881: zzInput = YYEOF;
882: break zzForAction;
883: }
884: else {
885: // store back cached positions
886: zzCurrentPos = zzCurrentPosL;
887: zzMarkedPos = zzMarkedPosL;
888: boolean eof = zzRefill();
889: // get translated positions and possibly new buffer
890: zzCurrentPosL = zzCurrentPos;
891: zzMarkedPosL = zzMarkedPos;
892: zzBufferL = zzBuffer;
893: zzEndReadL = zzEndRead;
894:• if (eof) {
895: zzInput = YYEOF;
896: break zzForAction;
897: }
898: else {
899: zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);
900: zzCurrentPosL += Character.charCount(zzInput);
901: }
902: }
903: int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
904:• if (zzNext == -1) break zzForAction;
905: zzState = zzNext;
906:
907: zzAttributes = zzAttrL[zzState];
908:• if ( (zzAttributes & 1) == 1 ) {
909: zzAction = zzState;
910: zzMarkedPosL = zzCurrentPosL;
911:• if ( (zzAttributes & 8) == 8 ) break zzForAction;
912: }
913:
914: }
915: }
916:
917: // store back cached position
918: zzMarkedPos = zzMarkedPosL;
919:
920:• if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
921: zzAtEOF = true;
922: { return 0;
923: }
924: }
925: else {
926:• switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
927: case 1:
928: { return ExtParser.UNKNOWN;
929: }
930: case 62: break;
931: case 2:
932: { /* ignore */
933: }
934: case 63: break;
935: case 3:
936:• { Integer num = 1;if (!yytext().equals("0x1")) {num = Integer.parseInt(yytext());}parser.yylval = new ExtParserVal(new NumNode(num)); return ExtParser.NUM;
937: }
938: case 64: break;
939: case 4:
940: { parser.yylval = new ExtParserVal(new IDNode(yytext()));return ExtParser.ID;
941: }
942: case 65: break;
943: case 5:
944: { return ExtParser.MOD;
945: }
946: case 66: break;
947: case 6:
948: { return ExtParser.CAST;
949: }
950: case 67: break;
951: case 7:
952: { /* ignore*/
953: }
954: case 68: break;
955: case 8:
956: { return ExtParser.ASSIGN;
957: }
958: case 69: break;
959: case 9:
960: { return ExtParser.NOT;
961: }
962: case 70: break;
963: case 10:
964: { return "(".charAt(0);
965: }
966: case 71: break;
967: case 11:
968: { return ")".charAt(0);
969: }
970: case 72: break;
971: case 12:
972: { return "[".charAt(0);
973: }
974: case 73: break;
975: case 13:
976: { return "]".charAt(0);
977: }
978: case 74: break;
979: case 14:
980: { return ",".charAt(0);
981: }
982: case 75: break;
983: case 15:
984: { return ExtParser.LESS;
985: }
986: case 76: break;
987: case 16:
988: { return ExtParser.GREATER;
989: }
990: case 77: break;
991: case 17:
992: { return ExtParser.ADD;
993: }
994: case 78: break;
995: case 18:
996: { return ExtParser.SUB;
997: }
998: case 79: break;
999: case 19:
1000: { return ExtParser.MULT;
1001: }
1002: case 80: break;
1003: case 20:
1004: { return ExtParser.DIV;
1005: }
1006: case 81: break;
1007: case 21:
1008: { return ExtParser.IF;
1009: }
1010: case 82: break;
1011: case 22:
1012: { return ExtParser.IN;
1013: }
1014: case 83: break;
1015: case 23:
1016: { return ExtParser.FI;
1017: }
1018: case 84: break;
1019: case 24:
1020: { return ExtParser.DO;
1021: }
1022: case 85: break;
1023: case 25:
1024: { return ExtParser.ON;
1025: }
1026: case 86: break;
1027: case 26:
1028: { final String value = yytext(); parser.yylval = new ExtParserVal(new StringNode(value.substring(1, value.length() - 1))); return ExtParser.STRING;
1029: }
1030: case 87: break;
1031: case 27:
1032: { return ExtParser.EQUAL;
1033: }
1034: case 88: break;
1035: case 28:
1036: { return ExtParser.MATCH;
1037: }
1038: case 89: break;
1039: case 29:
1040: { return ExtParser.NOT_EQUAL;
1041: }
1042: case 90: break;
1043: case 30:
1044: { return ExtParser.LE;
1045: }
1046: case 91: break;
1047: case 31:
1048: { return ExtParser.GE;
1049: }
1050: case 92: break;
1051: case 32:
1052: { return ExtParser.AND;
1053: }
1054: case 93: break;
1055: case 33:
1056: { return ExtParser.OR;
1057: }
1058: case 94: break;
1059: case 34:
1060: { return ExtParser.ORELSE;
1061: }
1062: case 95: break;
1063: case 35:
1064: { parser.yylval = new ExtParserVal(new MajorVerNode(yytext()));return ExtParser.MAJOR_VER;
1065: }
1066: case 96: break;
1067: case 36:
1068: { parser.yylval = new ExtParserVal(new IdSetNode(yytext()));return ExtParser.IDSET;
1069: }
1070: case 97: break;
1071: case 37:
1072: { return ExtParser.SET;
1073: }
1074: case 98: break;
1075: case 38:
1076: { final String value = yytext(); parser.yylval = new ExtParserVal(new StringNode(value.substring(1, value.length() - 1))); return ExtParser.CHAR;
1077: }
1078: case 99: break;
1079: case 39:
1080: { parser.yylval = new ExtParserVal(new VerExprNode(yytext()));return ExtParser.VER_EXPR;
1081: }
1082: case 100: break;
1083: case 40:
1084: { return ExtParser.THEN;
1085: }
1086: case 101: break;
1087: case 41:
1088: { return ExtParser.ELSE;
1089: }
1090: case 102: break;
1091: case 42:
1092: { return ExtParser.STAT;
1093: }
1094: case 103: break;
1095: case 43:
1096: { return ExtParser.DONE;
1097: }
1098: case 104: break;
1099: case 44:
1100: { parser.yylval = new ExtParserVal(new VerNode(yytext())); return ExtParser.VER;
1101: }
1102: case 105: break;
1103: case 45:
1104: { return ExtParser.FGREP;
1105: }
1106: case 106: break;
1107: case 46:
1108: { return ExtParser.ERROR;
1109: }
1110: case 107: break;
1111: case 47:
1112: { return ExtParser.SPLIT;
1113: }
1114: case 108: break;
1115: case 48:
1116: { return ExtParser.CRYPT;
1117: }
1118: case 109: break;
1119: case 49:
1120: { return ExtParser.SUBNET;
1121: }
1122: case 110: break;
1123: case 50:
1124: { return ExtParser.UNIQUE;
1125: }
1126: case 111: break;
1127: case 51:
1128: { return ExtParser.FOREACH;
1129: }
1130: case 112: break;
1131: case 52:
1132: { return ExtParser.NUMERIC;
1133: }
1134: case 113: break;
1135: case 53:
1136: { return ExtParser.SAMENET;
1137: }
1138: case 114: break;
1139: case 54:
1140: { return ExtParser.DEFINED;
1141: }
1142: case 115: break;
1143: case 55:
1144: { return ExtParser.DEPENDS;
1145: }
1146: case 116: break;
1147: case 56:
1148: { return ExtParser.WARNING;
1149: }
1150: case 117: break;
1151: case 57:
1152: { return ExtParser.VERSION;
1153: }
1154: case 118: break;
1155: case 58:
1156: { return ExtParser.PROVIDES;
1157: }
1158: case 119: break;
1159: case 59:
1160: { return ExtParser.ADD_TO_OPT;
1161: }
1162: case 120: break;
1163: case 60:
1164: { return ExtParser.FATAL_ERROR;
1165: }
1166: case 121: break;
1167: case 61:
1168: { return ExtParser.COPY_PENDING;
1169: }
1170: case 122: break;
1171: default:
1172: zzScanError(ZZ_NO_MATCH);
1173: }
1174: }
1175: }
1176: }
1177:
1178:
1179: }