comparison tests/agcl/examples/good/jrc.cpp @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:13d2b8934445
1 /*
2
3 Copyright (C) 1989,1990 James A. Roskind, All rights reserved.
4
5 This grammar was developed and written by James A. Roskind.
6 Copying of this grammar description, as a whole, is permitted
7 providing this notice is intact and applicable in all complete
8 copies. Translations as a whole to other parser generator input
9 languages (or grammar description languages) is permitted
10 provided that this notice is intact and applicable in all such
11 copies, along with a disclaimer that the contents are a
12 translation. The reproduction of derived text, such as modified
13 versions of this grammar, or the output of parser generators, is
14 permitted, provided the resulting work includes the copyright
15 notice "Portions Copyright (c) 1989, 1990 James A. Roskind".
16 Derived products, such as compilers, translators, browsers, etc.,
17 that use this grammar, must also provide the notice "Portions
18 Copyright (c) 1989, 1990 James A. Roskind" in a manner
19 appropriate to the utility, and in keeping with copyright law
20 (e.g.: EITHER displayed when first invoked/executed; OR displayed
21 continuously on display terminal; OR via placement in the object
22 code in form readable in a printout, with or near the title of
23 the work, or at the end of the file). No royalties, licenses or
24 commissions of any kind are required to copy this grammar, its
25 translations, or derivative products, when the copies are made in
26 compliance with this notice. Persons or corporations that do make
27 copies in compliance with this notice may charge whatever price
28 is agreeable to a buyer, for such copies or derivative works.
29 THIS GRAMMAR IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
30 IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
31 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
32 PURPOSE.
33
34 James A. Roskind
35 Independent Consultant
36 516 Latania Palm Drive
37 Indialantic FL, 32903
38 (407)729-4348
39 jar@ileaf.com
40 or ...!uunet!leafusa!jar
41
42
43 ******************************************************************************
44
45 Translation to AnaGram and Interfacing
46 Copyright 1993 Parsifal Software. All rights reserved.
47
48 This software is provided 'as-is', without any express or implied
49 warranty. In no event will the authors be held liable for any damages
50 arising from the use of this software.
51
52 Permission is granted to anyone to use this software for any purpose,
53 including commercial applications, and to alter it and redistribute it
54 freely, subject to the following restrictions:
55
56 1. The origin of this software must not be misrepresented; you must not
57 claim that you wrote the original software. If you use this software
58 in a product, an acknowledgment in the product documentation would be
59 appreciated but is not required.
60 2. Altered source versions must be plainly marked as such, and must not be
61 misrepresented as being the original software.
62 3. This notice may not be removed or altered from any source distribution.
63
64 ******************************************************************************
65
66 */
67
68 #include "mpp.h"
69
70
71 /*
72 * AnaGram, A System for Syntax Directed Programming
73 * File generated by: ...
74 *
75 * AnaGram Parsing Engine
76 * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
77 *
78 * This software is provided 'as-is', without any express or implied
79 * warranty. In no event will the authors be held liable for any damages
80 * arising from the use of this software.
81 *
82 * Permission is granted to anyone to use this software for any purpose,
83 * including commercial applications, and to alter it and redistribute it
84 * freely, subject to the following restrictions:
85 *
86 * 1. The origin of this software must not be misrepresented; you must not
87 * claim that you wrote the original software. If you use this software
88 * in a product, an acknowledgment in the product documentation would be
89 * appreciated but is not required.
90 * 2. Altered source versions must be plainly marked as such, and must not be
91 * misrepresented as being the original software.
92 * 3. This notice may not be removed or altered from any source distribution.
93 */
94
95 #ifndef JRC_H
96 #include "jrc.h"
97 #endif
98
99 #ifndef JRC_H
100 #error Mismatched header file
101 #endif
102
103 #include <ctype.h>
104 #include <stdio.h>
105
106 #define RULE_CONTEXT (&((PCB).cs[(PCB).ssx]))
107 #define ERROR_CONTEXT ((PCB).cs[(PCB).error_frame_ssx])
108 #define CONTEXT ((PCB).cs[(PCB).ssx])
109
110
111
112 cc_pcb_type cc_pcb;
113 #define PCB cc_pcb
114 #define CHANGE_REDUCTION(x) cc_change_reduction(cc_##x##_token)
115 int cc_change_reduction(cc_token_type);
116
117 #define INPUT_VALUE(type) *(type *) &(PCB).input_value
118
119 #line - "jrc.syn"
120 // Embedded C
121
122 #define SYNTAX_ERROR syntax_error(PCB.error_message)
123 #define INPUT_CODE(T) (T).id
124
125 static int typedef_flag = 0;
126 static int use_count = 0;
127
128 symbol_type_enum symbol_table[N_SYMBOLS];
129
130
131 static void do_typedef(token t) {
132 if (typedef_flag == 0) return;
133 typedef_flag = 0;
134 symbol_table[t.handle] = typedef_name;
135 }
136
137 static token check_typedef(token t) {
138 if (symbol_table[t.handle] == typedef_name)
139 CHANGE_REDUCTION(TYPEDEFname);
140 return t;
141 }
142
143 // Member Functions for Class c_parser
144
145 // Constructor
146
147 /*
148 This parser has no provisions for multiple simultaneous parses or for
149 recursion. The purpose of use_count is to make sure that there is only one
150 copy of the parser active at any time.
151 */
152
153
154 c_parser::c_parser() {
155 assert(use_count == 0);
156 use_count++;
157 typedef_flag = 0;
158 memset(symbol_table, 0, sizeof(symbol_table));
159 init_cc(); // init parse
160 }
161
162
163 // Destructor
164
165 c_parser::~c_parser() {
166 use_count--; // Makes parser available
167 }
168
169
170 // Reset Parser
171
172 c_parser &reset(c_parser &c) {
173 typedef_flag = 0;
174 memset(symbol_table, 0, sizeof(symbol_table));
175 init_cc(); // init parse
176 return c;
177 }
178
179
180 // Transmit token to c_parser
181
182 /*
183 The overloaded operator "<<" is used to transmit data to a parser.
184 Newline tokens are filtered out, since they are passed along by the
185 token scanner only in case text output of the preprocessor is
186 required.
187
188 If the parser has encountered an error, there is no point in giving
189 it any further input.
190
191 Otherwise, the input_code and input_value fields of the pcb are set
192 up and cc() is called to deal with the token.
193 */
194
195 token_sink &c_parser::operator << (token c) {
196 if (PCB.exit_flag != AG_RUNNING_CODE || (int) c.id == '\n') return *this;
197 PCB.input_code = c.id;
198 PCB.input_value = c;
199 cc();
200 return *this;
201 }
202
203 token_sink &c_parser::operator << (token *s) {
204 while (s->id != END_OF_FILE && PCB.exit_flag == AG_RUNNING_CODE) {
205 if ((int) s->id == 10) continue;
206 PCB.input_code = s->id;
207 PCB.input_value = *s++;
208 cc();
209 }
210 return *this;
211 }
212
213 #line - "jrc.cpp"
214
215 #ifndef CONVERT_CASE
216 #define CONVERT_CASE(c) (c)
217 #endif
218 #ifndef TAB_SPACING
219 #define TAB_SPACING 8
220 #endif
221
222 static void ag_rp_1(void) {
223 #line - "jrc.syn"
224 typedef_flag = 1;
225 #line - "jrc.cpp"
226 }
227
228 static void ag_rp_2(int f) {
229 #line - "jrc.syn"
230 typedef_flag = f;
231 #line - "jrc.cpp"
232 }
233
234 static int ag_rp_3(void) {
235 #line - "jrc.syn"
236 int f = typedef_flag; typedef_flag = 0; return f;
237 #line - "jrc.cpp"
238 }
239
240 static void ag_rp_4(token s) {
241 #line - "jrc.syn"
242 do_typedef(s);
243 #line - "jrc.cpp"
244 }
245
246 static token ag_rp_5(token t) {
247 #line - "jrc.syn"
248 return check_typedef(t);
249 #line - "jrc.cpp"
250 }
251
252
253 #ifndef AG_TRACE_FILE_NAME
254 #define AG_TRACE_FILE_NAME "jrc.etr"
255 #endif
256
257 static void ag_trace_error(void) {
258 FILE *ag_file = fopen(AG_TRACE_FILE_NAME, "w");
259 int i;
260 if (ag_file == NULL) return;
261 fprintf(ag_file, "%d\n", (PCB).ssx);
262 for (i = 0; i < (PCB).ssx; i++) fprintf(ag_file, "%d\n", (PCB).ss[i]);
263 fprintf(ag_file, "%d\n", (PCB).sn);
264 fprintf(ag_file, "%d\n", (PCB).token_number);
265 fclose(ag_file);
266 }
267
268
269 #define READ_COUNTS
270 #define WRITE_COUNTS
271 #undef V
272 #define V(i,t) (*t (&(PCB).vs[(PCB).ssx + i]))
273 #undef VS
274 #define VS(i) (PCB).vs[(PCB).ssx + i]
275
276 #ifndef GET_CONTEXT
277 #define GET_CONTEXT CONTEXT = (PCB).input_context
278 #endif
279
280 typedef enum {
281 ag_action_1,
282 ag_action_2,
283 ag_action_3,
284 ag_action_4,
285 ag_action_5,
286 ag_action_6,
287 ag_action_7,
288 ag_action_8,
289 ag_action_9,
290 ag_action_10,
291 ag_action_11,
292 ag_action_12
293 } ag_parser_action;
294
295
296 #ifndef NULL_VALUE_INITIALIZER
297 #define NULL_VALUE_INITIALIZER = { 0 }
298 #endif
299
300 static cc_vs_type const ag_null_value NULL_VALUE_INITIALIZER;
301
302 static const unsigned char far ag_rpx[] = {
303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
304 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
306 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
307 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
308 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
310 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
311 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
312 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
313 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
314 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
316 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
317 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
318 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
320 0, 0, 0, 0, 0, 0, 5
321 };
322
323 #define AG_TCV(x) ag_tcv[(x)]
324
325 static const unsigned char far ag_tcv[] = {
326 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
327 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0,
328 0, 43, 35, 0, 16, 18, 36, 37, 29, 38, 23, 42, 0, 0, 0, 0, 0, 0,
329 0, 0, 0, 0, 67, 84, 49, 69, 50, 66, 0, 62, 77, 25, 0, 27, 71,142,
330 54, 78, 52, 26, 51, 46, 75, 72, 74, 70, 55, 79, 64, 73, 47, 76, 11, 13,
331 0, 20, 0, 21, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
332 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 60,127,
333 39, 0, 0, 10, 9, 8, 7,186,110,167,155,113,102,166,156,163,118,160,
334 137,108,117,164,165,159,115,116,111,168,114,119, 33,109,128,161,107,129,
335 120,112,103,162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
336 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
339 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
340 0, 0, 0, 0
341 };
342
343 #ifndef SYNTAX_ERROR
344 #define SYNTAX_ERROR fprintf(stderr,"%s, line %d, column %d\n", \
345 (PCB).error_message, (PCB).line, (PCB).column)
346 #endif
347
348 #ifndef FIRST_LINE
349 #define FIRST_LINE 1
350 #endif
351
352 #ifndef FIRST_COLUMN
353 #define FIRST_COLUMN 1
354 #endif
355
356 #ifndef PARSER_STACK_OVERFLOW
357 #define PARSER_STACK_OVERFLOW {fprintf(stderr, \
358 "\nParser stack overflow, line %d, column %d\n",\
359 (PCB).line, (PCB).column);}
360 #endif
361
362 #ifndef REDUCTION_TOKEN_ERROR
363 #define REDUCTION_TOKEN_ERROR {fprintf(stderr, \
364 "\nReduction token error, line %d, column %d\n", \
365 (PCB).line, (PCB).column);}
366 #endif
367
368
369 #ifndef AG_NEWLINE
370 #define AG_NEWLINE 10
371 #endif
372
373 #ifndef AG_RETURN
374 #define AG_RETURN 13
375 #endif
376
377 #ifndef AG_FORMFEED
378 #define AG_FORMFEED 12
379 #endif
380
381 #ifndef AG_TABCHAR
382 #define AG_TABCHAR 9
383 #endif
384
385 static void ag_track(void) {
386 switch ((PCB).input_code) {
387 case AG_NEWLINE:
388 (PCB).column = 1, (PCB).line++;
389 case AG_RETURN:
390 case AG_FORMFEED:
391 break;
392 case AG_TABCHAR:
393 (PCB).column += (TAB_SPACING) - ((PCB).column - 1) % (TAB_SPACING);
394 break;
395 default:
396 (PCB).column++;
397 }
398 (PCB).read_flag = 1;
399 }
400
401
402 static void ag_prot(void) {
403 int ag_k;
404 ag_k = 128 - ++(PCB).btsx;
405 if (ag_k <= (PCB).ssx) {
406 ag_trace_error();
407 (PCB).exit_flag = AG_STACK_ERROR_CODE;
408 PARSER_STACK_OVERFLOW;
409 return;
410 }
411 (PCB).bts[(PCB).btsx] = (PCB).sn;
412 (PCB).bts[ag_k] = (PCB).ssx;
413 (PCB).vs[ag_k] = (PCB).vs[(PCB).ssx];
414 (PCB).ss[ag_k] = (PCB).ss[(PCB).ssx];
415 }
416
417 static void ag_undo(void) {
418 if ((PCB).drt == -1) return;
419 while ((PCB).btsx) {
420 int ag_k = 128 - (PCB).btsx;
421 (PCB).sn = (PCB).bts[(PCB).btsx--];
422 (PCB).ssx = (PCB).bts[ag_k];
423 (PCB).vs[(PCB).ssx] = (PCB).vs[ag_k];
424 (PCB).ss[(PCB).ssx] = (PCB).ss[ag_k];
425 }
426 (PCB).token_number = (cc_token_type) (PCB).drt;
427 (PCB).ssx = (PCB).dssx;
428 (PCB).sn = (PCB).dsn;
429 (PCB).drt = -1;
430 }
431
432
433
434 static const int far ag_rtt[] = {
435 15,106, 0
436 };
437
438 static const unsigned char far ag_tstt[] = {
439 186,137,129,128,120,119,118,117,116,115,114,113,112,111,110,109,108,107,103,
440 102,36,16,5,0,1,3,4,15,82,83,85,86,87,88,89,91,92,94,95,96,97,98,99,101,
441 104,105,106,121,123,169,170,171,179,180,181,182,
442 186,125,0,15,24,106,
443 129,128,0,122,124,
444 186,36,16,0,15,171,179,180,181,182,
445 186,103,102,36,16,0,15,89,91,101,171,179,180,181,182,
446 111,110,109,108,107,103,102,0,99,101,
447 120,119,118,117,116,115,114,113,112,111,110,109,108,107,103,102,0,99,101,
448 104,
449 111,110,109,108,107,103,102,0,99,100,101,
450 120,119,118,117,116,115,114,113,112,111,110,109,108,107,103,102,0,99,100,
451 101,104,
452 20,16,0,174,185,
453 84,29,0,
454 84,29,0,
455 111,110,109,108,107,103,102,84,0,99,101,
456 111,110,109,108,107,103,102,84,0,99,100,101,
457 186,137,129,128,125,120,119,118,117,116,115,114,113,112,111,110,109,108,107,
458 103,102,0,82,83,85,86,87,88,91,92,94,95,96,97,98,99,101,104,105,106,121,
459 123,150,157,
460 186,137,129,128,120,119,118,117,116,115,114,113,112,111,110,109,108,107,103,
461 102,36,16,0,15,89,99,101,104,105,106,121,123,171,179,180,181,182,
462 186,137,129,128,120,119,118,117,116,115,114,113,112,111,110,109,108,107,103,
463 102,36,16,0,15,89,99,100,101,104,105,106,121,123,171,179,180,181,182,
464 186,36,16,0,15,89,93,106,145,171,172,173,175,176,177,179,180,181,182,
465 186,36,16,0,15,89,93,106,145,171,172,173,175,176,177,179,180,181,182,
466 125,84,0,150,
467 186,137,129,128,120,119,118,117,116,115,114,113,112,111,110,109,108,107,103,
468 102,36,16,5,0,15,82,83,85,86,87,88,89,91,92,94,95,96,97,98,99,101,104,
469 105,106,121,123,169,170,171,179,180,181,182,
470 5,0,
471 125,0,
472 186,0,15,24,106,138,
473 186,125,0,15,24,106,
474 18,0,
475 20,18,16,0,174,185,
476 18,0,
477 186,103,102,36,16,0,15,89,101,171,179,180,181,182,
478 186,40,39,38,37,36,35,33,27,26,21,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,
479 32,41,44,45,48,53,56,57,59,61,63,65,80,
480 186,137,129,128,120,119,118,117,116,115,114,113,112,111,110,109,108,107,103,
481 102,18,0,15,83,85,88,91,92,94,95,96,97,98,99,101,104,105,106,121,123,
482 140,141,143,146,
483 20,0,
484 186,36,16,0,15,89,179,180,181,
485 186,36,16,0,15,89,93,106,145,172,173,175,176,177,179,180,181,
486 186,36,16,0,15,89,93,106,145,172,173,175,176,177,179,180,181,
487 186,36,16,0,15,89,93,106,145,172,173,175,176,177,179,180,181,
488 186,137,129,128,120,119,118,117,116,115,114,113,112,111,110,109,108,107,103,
489 102,36,16,0,15,89,99,101,104,105,106,121,123,179,180,181,
490 186,137,129,128,120,119,118,117,116,115,114,113,112,111,110,109,108,107,103,
491 102,36,16,0,15,89,99,100,101,104,105,106,121,123,179,180,181,
492 186,137,129,128,125,120,119,118,117,116,115,114,113,112,111,110,109,108,107,
493 103,102,0,82,83,85,86,87,88,91,92,94,95,96,97,98,99,101,104,105,106,121,
494 123,150,
495 186,168,167,166,165,164,163,162,161,159,156,155,137,129,128,127,125,120,119,
496 118,117,116,115,114,113,112,111,110,109,108,107,103,102,84,40,39,38,37,
497 36,35,33,27,26,16,13,11,10,9,8,7,0,2,6,12,14,15,17,19,24,28,30,31,32,41,
498 44,45,48,53,56,57,59,61,63,65,81,82,83,85,86,87,88,91,92,94,95,96,97,98,
499 99,101,104,105,106,121,123,149,150,151,152,153,154,157,158,
500 186,137,129,128,125,120,119,118,117,116,115,114,113,112,111,110,109,108,107,
501 103,102,0,82,83,85,86,87,88,91,92,94,95,96,97,98,99,101,104,105,106,121,
502 123,150,157,
503 125,84,69,29,0,90,150,
504 186,137,129,128,125,120,119,118,117,116,115,114,113,112,111,110,109,108,107,
505 103,102,0,82,83,85,86,87,88,91,92,94,95,96,97,98,99,101,104,105,106,121,
506 123,150,157,
507 125,84,69,29,0,90,150,
508 186,137,129,128,125,120,119,118,117,116,115,114,113,112,111,110,109,108,107,
509 103,102,0,82,83,85,86,87,88,91,92,94,95,96,97,98,99,101,104,105,106,121,
510 123,150,157,
511 186,36,16,0,15,106,171,173,175,176,177,178,179,180,181,182,
512 20,16,0,174,185,
513 186,103,102,36,16,0,15,89,91,101,106,145,171,173,175,176,177,179,180,181,
514 182,
515 125,0,150,
516 84,69,29,0,90,
517 186,137,129,128,125,120,119,118,117,116,115,114,113,112,111,110,109,108,107,
518 103,102,0,82,83,85,86,87,88,91,92,94,95,96,97,98,99,101,104,105,106,121,
519 123,150,157,
520 125,0,150,
521 84,69,29,0,90,
522 186,0,15,24,106,138,
523 127,69,29,0,139,
524 127,29,0,
525 125,0,
526 186,137,129,128,120,119,118,117,116,115,114,113,112,103,102,0,85,91,94,97,
527 98,101,104,105,106,121,123,126,130,131,132,
528 20,16,0,174,185,
529 20,16,0,174,185,
530 13,0,
531 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,
532 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
533 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,
534 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,
535 27,26,25,23,20,16,0,
536 186,137,129,128,120,119,118,117,116,115,114,113,112,103,102,40,39,38,37,36,
537 35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,17,19,28,30,31,32,34,41,44,
538 45,48,53,56,57,59,61,63,65,85,91,94,97,98,101,104,105,106,121,123,
539 43,42,36,0,
540 38,37,0,
541 47,46,0,
542 52,51,50,49,0,
543 55,54,0,
544 35,0,
545 58,0,
546 60,0,
547 62,0,
548 66,64,0,
549 21,0,
550 111,110,109,108,107,103,102,0,99,101,
551 111,110,109,108,107,103,102,0,99,100,101,
552 186,137,129,128,120,119,118,117,116,115,114,113,112,111,110,109,108,107,103,
553 102,36,29,20,18,16,0,15,89,99,101,104,105,106,121,123,144,174,179,180,
554 181,183,184,185,
555 186,36,20,16,0,15,89,106,144,145,174,175,176,179,180,181,183,184,185,
556 186,137,129,128,120,119,118,117,116,115,114,113,112,111,110,109,108,107,103,
557 102,36,29,20,18,16,0,15,89,99,100,101,104,105,106,121,123,144,174,179,
558 180,181,183,184,185,
559 186,36,20,16,0,15,89,106,144,145,174,175,176,179,180,181,183,184,185,
560 29,0,
561 18,0,
562 29,18,0,
563 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
564 41,44,45,48,53,56,57,59,61,63,65,80,
565 186,36,16,0,15,179,180,181,
566 186,103,102,36,16,0,15,89,91,101,179,180,181,
567 20,16,0,174,185,
568 84,69,29,0,90,
569 186,36,16,0,15,106,173,175,176,177,178,179,180,181,
570 186,103,102,36,16,0,15,89,91,101,106,145,173,175,176,177,179,180,181,
571 84,69,29,0,90,
572 84,69,29,0,90,
573 84,69,29,0,90,
574 79,78,77,76,75,74,73,72,71,70,69,0,68,
575 29,0,
576 84,79,78,77,76,75,74,73,72,71,70,69,67,66,64,62,60,58,55,54,52,51,50,49,47,
577 46,43,42,38,37,36,35,29,27,26,25,23,20,16,0,
578 186,84,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,17,19,28,
579 30,31,32,41,44,45,48,53,56,57,59,61,63,65,81,
580 84,0,
581 84,0,
582 186,0,15,24,106,
583 16,0,
584 186,168,167,166,165,164,163,162,161,159,156,155,125,84,40,39,38,37,36,35,33,
585 27,26,16,13,11,10,9,8,7,0,2,6,12,14,15,17,19,24,28,30,31,32,41,44,45,48,
586 53,56,57,59,61,63,65,81,106,149,150,151,152,153,154,
587 16,0,
588 16,0,
589 16,0,
590 84,0,
591 67,0,
592 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
593 41,44,45,48,53,56,57,59,61,63,65,80,
594 67,0,
595 186,168,167,166,165,164,163,162,161,159,156,155,127,125,84,40,39,38,37,36,
596 35,33,27,26,16,13,11,10,9,8,7,0,2,6,12,14,15,17,19,24,28,30,31,32,41,44,
597 45,48,53,56,57,59,61,63,65,81,106,149,150,151,152,153,154,
598 186,111,110,109,108,107,103,102,67,36,16,0,
599 186,168,167,166,165,164,163,162,161,159,156,155,137,129,128,127,125,120,119,
600 118,117,116,115,114,113,112,111,110,109,108,107,103,102,84,40,39,38,37,
601 36,35,33,27,26,16,13,11,10,9,8,7,0,2,6,12,14,15,17,19,24,28,30,31,32,41,
602 44,45,48,53,56,57,59,61,63,65,81,82,83,85,86,87,88,91,92,94,95,96,97,98,
603 99,101,104,105,106,121,123,149,150,151,152,153,154,158,
604 186,137,129,128,125,120,119,118,117,116,115,114,113,112,111,110,109,108,107,
605 103,102,0,82,83,85,86,87,88,91,92,94,95,96,97,98,99,101,104,105,106,121,
606 123,150,
607 186,125,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,28,30,
608 31,32,41,44,45,48,53,56,57,59,61,63,65,147,
609 186,137,129,128,125,120,119,118,117,116,115,114,113,112,111,110,109,108,107,
610 103,102,0,82,83,85,86,87,88,91,92,94,95,96,97,98,99,101,104,105,106,121,
611 123,150,
612 186,137,129,128,125,120,119,118,117,116,115,114,113,112,111,110,109,108,107,
613 103,102,0,82,83,85,86,87,88,91,92,94,95,96,97,98,99,101,104,105,106,121,
614 123,150,
615 20,16,0,174,185,
616 18,0,
617 186,36,16,0,15,106,171,173,175,176,177,178,179,180,181,182,
618 18,0,
619 186,137,129,128,120,119,118,117,116,115,114,113,112,111,110,109,108,107,103,
620 102,18,0,83,85,88,91,92,94,95,96,97,98,99,101,104,105,106,121,123,140,
621 141,143,
622 186,103,102,36,16,0,15,89,101,106,145,171,173,175,176,177,179,180,181,182,
623 186,36,16,0,15,106,171,173,175,176,177,178,179,180,181,182,
624 186,137,129,128,125,120,119,118,117,116,115,114,113,112,111,110,109,108,107,
625 103,102,0,82,83,85,86,87,88,91,92,94,95,96,97,98,99,101,104,105,106,121,
626 123,150,
627 127,29,0,
628 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
629 41,44,45,48,53,56,57,59,61,63,65,80,
630 186,0,15,24,106,
631 186,137,129,128,120,119,118,117,116,115,114,113,112,103,102,0,85,91,94,97,
632 98,101,104,105,106,121,123,126,130,131,132,
633 103,102,0,101,
634 103,102,0,101,
635 120,119,118,117,116,115,114,113,112,103,102,0,101,104,
636 186,137,129,128,120,119,118,117,116,115,114,113,112,103,102,67,36,16,0,15,
637 89,101,104,105,106,121,123,133,136,179,180,181,
638 186,67,36,16,0,15,89,93,106,134,136,145,172,173,175,176,177,179,180,181,
639 84,29,0,
640 84,29,0,
641 186,137,129,128,127,120,119,118,117,116,115,114,113,112,103,102,0,85,91,94,
642 97,98,101,104,105,106,121,123,130,131,132,
643 186,137,129,128,120,119,118,117,116,115,114,113,112,103,102,40,39,38,37,36,
644 35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,17,19,28,30,31,32,34,41,44,
645 45,48,53,56,57,59,61,63,65,85,91,94,97,98,101,104,105,106,121,123,
646 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,17,19,28,30,
647 31,32,41,44,45,48,53,56,57,59,61,63,65,
648 186,0,15,24,106,
649 186,0,15,24,106,
650 186,40,39,38,37,36,35,33,27,26,18,16,13,11,10,9,8,7,0,6,12,14,15,19,22,28,
651 30,31,32,41,44,45,48,53,56,57,59,61,63,65,
652 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,17,19,28,30,
653 31,32,41,44,45,48,53,56,57,59,61,63,65,
654 186,137,129,128,120,119,118,117,116,115,114,113,112,103,102,36,20,18,16,0,
655 101,104,105,106,121,123,144,174,183,184,185,
656 36,20,16,0,144,174,183,184,185,
657 18,0,
658 29,18,0,
659 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
660 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
661 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
662 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
663 41,
664 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
665 41,
666 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
667 41,44,
668 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
669 41,44,
670 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
671 41,44,45,
672 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
673 41,44,45,
674 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
675 41,44,45,
676 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
677 41,44,45,
678 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
679 41,44,45,48,
680 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
681 41,44,45,48,
682 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
683 41,44,45,48,53,
684 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
685 41,44,45,48,53,56,
686 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
687 41,44,45,48,53,56,57,
688 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
689 41,44,45,48,53,56,57,59,
690 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,17,19,28,30,
691 31,32,41,44,45,48,53,56,57,59,61,63,65,
692 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
693 41,44,45,48,53,56,57,59,61,
694 186,137,129,128,120,119,118,117,116,115,114,113,112,111,110,109,108,107,103,
695 102,36,20,18,16,0,15,83,85,88,91,92,94,95,96,97,98,99,101,104,105,106,
696 121,123,140,141,143,174,179,180,181,183,184,185,
697 186,103,102,36,20,16,0,15,89,91,101,144,174,179,180,181,183,184,185,
698 186,137,129,128,120,119,118,117,116,115,114,113,112,111,110,109,108,107,103,
699 102,36,20,18,16,0,15,83,85,88,91,92,94,95,96,97,98,99,101,104,105,106,
700 121,123,140,141,143,174,175,176,179,180,181,183,184,185,
701 186,103,102,36,20,16,0,15,89,91,101,106,144,145,174,175,176,179,180,181,183,
702 184,185,
703 186,142,137,129,128,120,119,118,117,116,115,114,113,112,111,110,109,108,107,
704 103,102,0,83,85,88,91,92,94,95,96,97,98,99,101,104,105,106,121,123,143,
705 186,0,15,
706 21,0,
707 20,18,16,0,174,185,
708 186,103,102,36,16,0,15,89,101,179,180,181,
709 186,36,16,0,15,106,173,175,176,177,178,179,180,181,
710 186,103,102,36,16,0,15,89,101,106,145,173,175,176,177,179,180,181,
711 186,36,16,0,15,106,173,175,176,177,178,179,180,181,
712 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,28,30,31,
713 32,41,44,45,48,53,56,57,59,61,63,65,
714 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,28,30,31,
715 32,41,44,45,48,53,56,57,59,61,63,65,
716 84,0,
717 84,0,
718 186,84,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,17,19,28,
719 30,31,32,41,44,45,48,53,56,57,59,61,63,65,81,
720 162,0,
721 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,17,19,28,30,
722 31,32,41,44,45,48,53,56,57,59,61,63,65,
723 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,17,19,28,30,
724 31,32,41,44,45,48,53,56,57,59,61,63,65,
725 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,17,19,28,30,
726 31,32,41,44,45,48,53,56,57,59,61,63,65,
727 186,168,167,166,165,164,163,162,161,159,156,155,125,84,40,39,38,37,36,35,33,
728 27,26,16,13,11,10,9,8,7,0,2,6,12,14,15,17,19,24,28,30,31,32,41,44,45,48,
729 53,56,57,59,61,63,65,81,106,149,150,151,152,153,154,
730 67,0,
731 186,168,167,166,165,164,163,162,161,159,156,155,125,84,40,39,38,37,36,35,33,
732 27,26,16,13,11,10,9,8,7,0,2,6,12,14,15,17,19,24,28,30,31,32,41,44,45,48,
733 53,56,57,59,61,63,65,81,106,149,150,151,152,153,154,
734 186,168,167,166,165,164,163,162,161,159,156,155,127,125,84,40,39,38,37,36,
735 35,33,27,26,16,13,11,10,9,8,7,0,2,6,12,14,15,17,19,24,28,30,31,32,41,44,
736 45,48,53,56,57,59,61,63,65,81,106,149,150,151,152,153,154,
737 186,125,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,28,30,
738 31,32,41,44,45,48,53,56,57,59,61,63,65,147,148,
739 18,0,
740 20,16,0,174,185,
741 20,18,16,0,174,185,
742 20,16,0,174,185,
743 186,36,16,0,15,106,171,173,175,176,177,178,179,180,181,182,
744 20,18,16,0,174,185,
745 127,69,29,0,139,
746 186,137,129,128,127,120,119,118,117,116,115,114,113,112,103,102,0,85,91,94,
747 97,98,101,104,105,106,121,123,130,131,132,
748 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
749 41,44,45,48,53,56,57,59,61,63,65,80,
750 84,67,29,0,135,136,
751 84,67,29,0,135,136,
752 186,67,36,16,0,15,89,133,136,179,180,181,
753 186,67,36,16,0,15,89,93,106,134,136,145,172,173,175,176,177,179,180,181,
754 18,0,
755 29,18,0,
756 29,21,0,
757 186,137,129,128,120,119,118,117,116,115,114,113,112,111,110,109,108,107,103,
758 102,36,20,18,16,0,83,85,88,91,92,94,95,96,97,98,99,101,104,105,106,121,
759 123,140,141,143,174,183,184,185,
760 103,102,36,20,16,0,91,101,144,174,183,184,185,
761 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
762 43,42,36,0,
763 43,42,36,0,
764 38,37,0,
765 38,37,0,
766 47,46,0,
767 47,46,0,
768 47,46,0,
769 47,46,0,
770 52,51,50,49,0,
771 52,51,50,49,0,
772 55,54,0,
773 35,0,
774 58,0,
775 60,0,
776 67,29,0,
777 62,0,
778 18,0,
779 18,0,
780 18,0,
781 186,103,102,36,20,16,0,15,89,101,144,174,179,180,181,183,184,185,
782 186,103,102,36,20,16,0,15,89,101,106,144,145,174,175,176,179,180,181,183,
783 184,185,
784 186,36,16,0,15,106,173,175,176,177,178,179,180,181,
785 84,0,
786 16,0,
787 29,18,0,
788 29,18,0,
789 29,18,0,
790 186,168,167,166,165,164,163,162,161,159,156,155,125,84,40,39,38,37,36,35,33,
791 27,26,16,13,11,10,9,8,7,0,2,6,12,14,15,17,19,24,28,30,31,32,41,44,45,48,
792 53,56,57,59,61,63,65,81,106,149,150,151,152,153,154,
793 127,29,0,
794 20,18,16,0,174,185,
795 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,28,30,31,
796 32,41,44,45,48,53,56,57,59,61,63,65,
797 103,102,36,20,16,0,101,144,174,183,184,185,
798 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,30,31,32,
799 41,44,45,48,53,56,57,59,61,63,65,
800 20,16,0,174,185,
801 186,84,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,17,19,28,
802 30,31,32,41,44,45,48,53,56,57,59,61,63,65,81,
803 186,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,17,19,28,30,
804 31,32,41,44,45,48,53,56,57,59,61,63,65,
805 186,168,167,166,165,164,163,162,161,159,156,155,125,84,40,39,38,37,36,35,33,
806 27,26,16,13,11,10,9,8,7,0,2,6,12,14,15,17,19,24,28,30,31,32,41,44,45,48,
807 53,56,57,59,61,63,65,81,106,149,150,151,152,153,154,
808 186,168,167,166,165,164,163,162,161,159,156,155,125,84,40,39,38,37,36,35,33,
809 27,26,16,13,11,10,9,8,7,0,2,6,12,14,15,17,19,24,28,30,31,32,41,44,45,48,
810 53,56,57,59,61,63,65,81,106,149,150,151,152,153,154,
811 186,168,167,166,165,164,163,162,161,159,156,155,125,84,40,39,38,37,36,35,33,
812 27,26,16,13,11,10,9,8,7,0,2,6,12,14,15,17,19,24,28,30,31,32,41,44,45,48,
813 53,56,57,59,61,63,65,81,106,149,150,151,152,153,154,
814 186,127,125,40,39,38,37,36,35,33,27,26,16,13,11,10,9,8,7,0,6,12,14,15,19,28,
815 30,31,32,41,44,45,48,53,56,57,59,61,63,65,147,
816 84,0,
817 29,18,0,
818 160,0,
819 186,40,39,38,37,36,35,33,27,26,18,16,13,11,10,9,8,7,0,6,12,14,15,17,19,28,
820 30,31,32,41,44,45,48,53,56,57,59,61,63,65,81,
821 84,0,
822 186,168,167,166,165,164,163,162,161,159,156,155,125,84,40,39,38,37,36,35,33,
823 27,26,16,13,11,10,9,8,7,0,2,6,12,14,15,17,19,24,28,30,31,32,41,44,45,48,
824 53,56,57,59,61,63,65,81,106,149,150,151,152,153,154,
825 18,0,
826 186,168,167,166,165,164,163,162,161,159,156,155,125,84,40,39,38,37,36,35,33,
827 27,26,16,13,11,10,9,8,7,0,2,6,12,14,15,17,19,24,28,30,31,32,41,44,45,48,
828 53,56,57,59,61,63,65,81,106,149,150,151,152,153,154,
829 0
830 };
831
832
833 static unsigned const char far ag_astt[5043] = {
834 2,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,8,7,0,1,1,2,1,1,1,1,1,1,1,1,1,
835 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,7,1,1,1,1,1,7,2,1,2,1,1,7,2,1,1,
836 1,1,1,2,1,1,1,1,7,2,3,1,1,3,3,1,3,3,3,3,3,3,2,9,9,5,3,3,9,9,9,9,9,9,9,9,9,
837 3,3,3,3,2,9,9,5,3,3,3,9,9,9,9,2,9,9,5,3,3,3,9,9,9,9,9,9,9,9,9,9,9,9,9,2,9,
838 9,5,3,3,3,3,1,1,5,3,1,3,1,7,3,1,7,3,3,3,3,2,9,9,3,5,3,3,9,9,9,9,2,9,9,3,5,
839 3,3,3,2,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,
840 1,1,1,1,1,1,1,1,3,1,2,1,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,2,9,9,1,1,7,2,1,3,3,
841 3,3,3,1,3,1,1,1,1,1,2,1,4,4,3,3,3,3,3,3,3,3,3,9,9,9,9,2,9,9,1,1,7,2,1,3,3,
842 3,3,3,3,1,3,1,1,1,1,1,2,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,7,2,1,1,
843 1,1,1,1,1,1,1,1,1,1,1,1,1,3,7,3,2,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,
844 1,5,7,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,3,7,1,5,2,
845 7,1,1,1,1,2,1,7,1,1,1,1,7,1,3,1,7,3,1,1,7,2,9,9,1,1,7,2,3,3,3,3,1,3,3,2,1,
846 1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
847 2,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,3,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
848 1,1,1,1,1,1,1,1,5,2,1,1,7,2,1,1,1,1,2,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,
849 1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,4,4,3,
850 3,3,3,3,3,3,3,3,3,3,3,3,2,9,9,1,1,7,2,1,3,3,3,3,3,1,3,1,1,1,2,1,4,4,3,3,3,
851 3,3,3,3,3,3,9,9,9,9,2,9,9,1,1,7,2,1,3,3,3,3,3,3,1,3,1,1,1,2,1,4,4,1,1,1,1,
852 1,1,1,1,1,1,1,1,1,1,2,1,1,7,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,2,1,
853 1,1,1,1,1,1,1,1,1,1,1,4,4,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,8,1,1,1,1,1,
854 1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
855 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,4,4,1,1,1,1,1,1,
856 1,1,1,1,1,1,1,1,2,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,5,1,
857 5,7,3,3,2,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,7,1,1,1,1,1,1,1,1,1,1,1,
858 1,1,1,1,1,1,1,1,1,3,1,1,5,1,5,7,3,3,2,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
859 1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,2,1,1,7,2,1,1,1,1,1,1,1,
860 1,1,1,1,1,1,5,3,1,2,1,1,1,1,7,2,3,1,1,1,3,3,3,3,3,3,3,1,3,3,1,5,3,5,1,5,7,
861 3,2,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
862 1,1,1,1,1,1,3,1,1,5,3,5,1,5,7,3,2,7,1,1,1,1,5,1,5,7,3,3,1,7,1,5,2,1,4,4,1,
863 1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,3,1,1,1,5,3,1,9,
864 5,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,3,1,2,1,1,1,1,1,1,1,1,1,1,
865 1,1,1,1,1,1,7,1,1,1,1,1,3,1,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,
866 1,3,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,3,1,9,9,1,1,1,1,5,2,1,
867 4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,
868 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,5,1,1,5,1,
869 1,1,1,5,1,1,5,1,5,1,5,1,5,1,5,1,1,5,3,7,3,3,3,3,2,9,9,5,3,3,9,9,9,9,2,9,9,
870 5,3,3,3,2,1,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,2,9,9,1,5,1,5,1,7,2,3,3,3,3,3,3,
871 1,3,3,3,3,1,3,3,3,1,2,1,1,1,5,2,3,1,3,3,3,3,3,3,1,3,3,3,1,2,1,4,4,3,3,3,3,
872 3,3,3,3,3,9,9,9,9,2,9,9,1,5,1,5,1,7,2,3,3,3,3,3,3,3,1,3,3,3,3,1,3,3,3,1,2,
873 1,1,1,5,2,3,1,3,3,3,3,3,3,1,3,3,3,1,1,5,3,7,1,3,7,2,1,1,1,1,1,1,1,1,1,1,1,
874 1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,7,2,1,1,1,2,1,1,
875 1,1,7,2,3,1,1,3,1,3,1,1,5,3,1,5,1,5,7,3,2,1,1,7,2,1,1,1,1,1,1,1,1,1,2,1,1,
876 1,1,7,2,3,1,1,1,3,3,3,3,3,3,1,3,5,1,5,7,3,5,1,5,7,3,5,1,5,7,3,1,1,1,1,1,1,
877 1,1,1,1,1,5,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
878 5,5,5,5,5,5,5,5,5,5,5,7,2,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,
879 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,7,3,7,2,7,1,1,1,1,7,2,1,1,1,1,1,1,1,1,1,
880 1,1,1,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
881 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,7,1,7,3,7,1,7,2,1,1,1,1,1,1,1,1,1,1,1,
882 1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,1,1,1,1,1,1,
883 1,1,1,3,1,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,3,1,1,1,1,1,1,1,1,1,1,1,1,1,
884 1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,5,7,2,1,1,1,1,1,1,1,
885 1,1,1,1,1,4,4,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,8,1,1,1,1,1,1,1,1,1,1,1,
886 1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,
887 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,
888 1,2,1,1,7,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,2,1,1,1,1,1,1,1,1,1,1,
889 1,1,1,1,1,1,1,7,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,2,1,4,4,1,1,1,1,
890 1,1,1,1,1,1,1,1,1,1,2,1,1,7,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,2,1,
891 4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,7,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
892 1,1,1,3,1,1,7,1,1,1,7,2,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,4,4,1,1,1,1,
893 1,1,1,1,1,1,1,1,1,2,1,1,3,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,9,9,
894 1,1,7,2,3,3,1,3,3,3,3,3,3,3,1,3,3,2,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,2,1,4,4,
895 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,7,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
896 1,3,3,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
897 1,1,1,1,3,3,2,7,1,1,1,2,1,4,4,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,
898 1,1,1,1,1,9,9,5,3,9,9,5,3,9,9,9,9,9,9,9,9,9,9,9,5,3,3,2,1,4,4,3,3,3,3,3,3,
899 3,3,3,9,9,1,1,1,7,2,1,3,3,3,3,1,3,3,3,1,1,1,2,1,1,1,7,2,1,1,1,3,3,1,1,1,1,
900 1,1,1,1,1,3,1,7,3,1,7,2,1,4,4,3,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,
901 1,1,3,1,1,2,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,
902 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,
903 1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,
904 3,3,3,2,7,3,3,3,2,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,
905 1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,
906 1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,4,4,3,3,3,3,3,3,3,3,3,9,9,1,1,5,1,7,3,3,3,3,
907 1,3,3,3,3,3,1,1,1,1,5,3,3,3,3,1,1,7,1,3,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
908 1,7,1,1,1,1,1,3,1,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,3,1,3,2,
909 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,3,1,3,2,1,1,1,1,1,1,1,1,1,1,1,
910 1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,
911 1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,2,1,1,1,
912 1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,
913 1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,
914 1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,
915 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,
916 1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
917 1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,
918 1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,
919 1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
920 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,
921 1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
922 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,4,
923 4,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,3,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
924 1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,5,2,3,1,1,3,3,3,1,3,3,3,1,2,1,4,4,1,
925 1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,3,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
926 1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,5,2,3,1,1,1,3,3,3,3,3,3,1,3,3,3,1,2,
927 3,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
928 1,3,2,7,3,3,7,1,3,1,7,3,1,2,9,9,1,1,7,2,3,3,3,1,3,2,1,1,7,2,1,1,1,1,1,1,1,
929 1,1,2,9,9,1,1,7,2,3,3,1,3,3,3,3,3,3,1,3,2,1,1,7,2,1,1,1,1,1,1,1,1,1,2,1,1,
930 1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,3,2,1,
931 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,
932 7,3,7,2,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
933 1,1,1,1,1,1,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,
934 1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,
935 1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,
936 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,8,1,1,1,1,1,1,1,1,
937 1,1,1,1,1,1,1,1,7,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,
938 3,3,3,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,3,
939 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,2,1,1,1,1,1,1,
940 1,1,1,1,1,3,1,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,3,1,1,1,1,1,1,1,1,1,1,1,
941 1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
942 7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,7,1,1,5,3,1,1,3,1,7,1,1,1,
943 1,5,3,1,2,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,3,1,7,1,1,5,1,5,7,3,2,1,4,4,3,1,
944 1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,3,1,1,2,1,1,1,1,1,1,1,1,1,1,1,
945 1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,5,1,5,7,3,3,5,1,5,7,3,
946 3,2,1,1,1,7,2,1,3,3,1,1,1,2,1,1,1,7,2,1,1,1,3,3,1,1,1,1,1,1,1,1,1,3,7,1,3,
947 7,1,3,7,2,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,3,1,7,1,1,1,1,1,1,1,1,
948 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,3,3,3,3,1,2,1,1,1,1,1,1,1,
949 1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,3,1,3,1,1,1,5,1,1,1,5,1,1,5,1,1,5,1,1,5,1,1,
950 5,1,1,5,1,1,5,1,1,1,1,5,1,1,1,1,5,1,1,5,1,5,1,5,1,5,1,1,7,1,5,3,7,3,7,1,7,
951 2,9,9,1,1,1,5,2,3,3,3,3,3,1,3,3,3,1,2,9,9,1,1,1,5,2,3,3,1,3,3,3,3,3,3,1,3,
952 3,3,1,2,1,1,7,2,1,1,1,1,1,1,1,1,1,1,7,1,7,1,1,7,1,1,7,1,1,7,2,1,1,1,1,1,1,
953 1,1,1,1,1,1,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,3,1,1,1,1,1,1,1,1,1,1,1,1,
954 1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,1,7,1,3,1,7,1,1,2,1,1,1,1,1,1,1,1,1,
955 1,1,1,1,1,1,1,7,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,3,9,9,1,1,1,5,3,3,3,
956 3,3,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
957 1,1,3,1,1,5,3,1,2,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,
958 1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,
959 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,8,1,1,1,1,1,1,1,1,1,
960 1,1,1,1,1,1,1,7,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,
961 3,3,2,1,1,1,1,1,1,1,1,1,1,1,1,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,3,1,1,1,
962 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,2,1,1,1,1,1,1,1,1,1,
963 1,1,1,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
964 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,
965 1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,7,1,1,7,1,5,2,1,1,1,1,1,1,1,1,1,8,
966 1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,7,2,1,1,1,1,
967 1,1,1,1,1,1,1,1,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,3,1,1,1,1,1,1,1,1,1,1,
968 1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,8,1,
969 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
970 1,1,1,1,3,3,3,3,3,3,11
971 };
972
973
974 static const unsigned short far ag_pstt[] = {
975 312,1,148,148,6,6,6,6,6,6,6,6,6,16,16,16,16,132,15,15,4,3,21,0,0,20,21,287,
976 20,13,12,11,10,16,19,15,18,17,8,7,6,5,16,15,6,12,5,2,12,20,20,14,19,9,
977 19,14,
978 312,23,1,22,22,22,
979 24,24,2,146,24,
980 312,4,3,3,287,25,27,26,27,25,
981 312,28,28,4,3,4,287,282,28,28,290,282,9,282,290,
982 126,126,126,126,132,131,131,102,126,131,
983 119,119,119,119,119,119,119,119,119,112,112,112,112,132,118,118,100,112,118,
984 119,
985 128,128,128,128,132,128,128,99,128,128,128,
986 115,115,115,115,115,115,115,115,115,114,114,114,114,132,114,114,97,114,114,
987 114,115,
988 29,30,280,284,31,
989 90,32,10,
990 89,33,11,
991 120,120,120,120,132,125,125,88,101,120,125,
992 122,122,122,122,132,122,122,87,98,122,122,122,
993 312,1,148,148,39,6,6,6,6,6,6,6,6,6,37,37,37,37,132,36,36,14,38,13,12,11,10,
994 37,36,35,34,8,7,6,5,37,36,6,12,5,2,12,247,38,
995 312,1,148,148,117,117,117,117,117,117,117,117,117,104,104,104,104,132,107,
996 107,4,3,15,287,41,104,107,117,124,130,2,124,40,41,9,41,40,
997 312,1,148,148,113,113,113,113,113,113,113,113,113,105,105,105,105,132,105,
998 105,4,3,16,287,43,105,105,105,113,121,127,2,121,42,43,9,43,42,
999 312,47,45,17,287,48,49,46,49,44,49,49,49,49,49,48,9,48,44,
1000 312,47,45,18,287,51,52,46,52,50,52,52,52,52,52,51,9,51,50,
1001 39,241,19,242,
1002 312,1,148,148,6,6,6,6,6,6,6,6,6,16,16,16,16,132,15,15,4,3,2,20,287,238,13,
1003 12,11,10,16,19,15,18,17,8,7,6,5,16,15,6,12,5,2,12,238,238,14,19,9,19,14,
1004 3,21,
1005 53,171,
1006 312,23,54,54,54,55,
1007 312,57,24,56,56,56,
1008 58,25,
1009 29,288,30,26,284,31,
1010 59,27,
1011 312,107,107,4,3,28,287,283,107,291,283,9,283,291,
1012 312,62,62,62,62,62,62,61,63,64,301,66,60,65,65,65,65,65,29,65,60,65,65,65,
1013 67,62,67,67,68,69,70,71,72,73,74,75,76,77,77,
1014 312,1,148,148,6,6,6,6,6,6,6,6,6,82,82,82,82,132,80,80,299,30,86,79,78,82,80,
1015 83,81,8,7,6,5,82,80,6,78,5,2,78,85,84,84,86,
1016 87,298,
1017 312,89,88,32,287,91,91,90,91,
1018 312,93,92,33,287,94,94,46,94,94,94,94,94,94,94,90,94,
1019 312,93,92,34,287,49,49,46,49,49,49,49,49,49,49,90,49,
1020 312,93,92,35,287,52,52,46,52,52,52,52,52,52,52,90,52,
1021 312,1,148,148,117,117,117,117,117,117,117,117,117,104,104,104,104,132,107,
1022 107,89,88,36,287,95,104,107,117,124,130,2,124,95,90,95,
1023 312,1,148,148,113,113,113,113,113,113,113,113,113,105,105,105,105,132,105,
1024 105,89,88,37,287,96,105,105,105,113,121,127,2,121,96,90,96,
1025 312,1,148,148,39,6,6,6,6,6,6,6,6,6,37,37,37,37,132,36,36,38,223,13,12,11,10,
1026 37,36,35,34,8,7,6,5,37,36,6,12,5,2,12,252,
1027 312,100,101,102,103,104,105,106,107,108,110,111,1,148,148,218,39,6,6,6,6,6,
1028 6,6,6,6,37,37,37,37,132,36,36,109,62,62,62,62,62,62,61,63,64,66,60,65,
1029 65,65,65,65,39,113,65,60,65,99,98,65,112,98,97,62,67,67,68,69,70,71,72,
1030 73,74,75,76,98,109,115,13,12,11,10,37,36,35,34,8,7,6,5,37,36,6,12,114,2,
1031 12,113,113,113,113,113,113,115,113,
1032 312,1,148,148,39,6,6,6,6,6,6,6,6,6,37,37,37,37,132,36,36,40,116,13,12,11,10,
1033 37,36,35,34,8,7,6,5,37,36,6,12,5,2,12,251,116,
1034 39,202,117,202,41,92,246,
1035 312,1,148,148,39,6,6,6,6,6,6,6,6,6,37,37,37,37,132,36,36,42,118,13,12,11,10,
1036 37,36,35,34,8,7,6,5,37,36,6,12,5,2,12,250,118,
1037 39,202,117,202,43,91,245,
1038 312,1,148,148,39,6,6,6,6,6,6,6,6,6,37,37,37,37,132,36,36,44,119,13,12,11,10,
1039 37,36,35,34,8,7,6,5,37,36,6,12,5,2,12,249,119,
1040 312,47,122,45,287,120,25,121,123,123,121,120,27,26,27,25,
1041 29,124,261,262,31,
1042 312,125,125,47,126,47,287,282,125,125,46,265,290,272,265,265,272,282,9,282,
1043 290,
1044 39,258,244,
1045 202,117,202,49,95,
1046 312,1,148,148,39,6,6,6,6,6,6,6,6,6,37,37,37,37,132,36,36,50,127,13,12,11,10,
1047 37,36,35,34,8,7,6,5,37,36,6,12,5,2,12,248,127,
1048 39,258,243,
1049 202,117,202,52,94,
1050 312,53,54,54,54,128,
1051 174,129,174,54,172,
1052 169,130,55,
1053 131,151,
1054 312,1,148,148,134,134,134,134,134,134,134,134,134,135,135,57,133,135,136,
1055 134,132,135,134,133,132,2,133,139,139,138,137,
1056 29,124,293,294,31,
1057 29,124,285,286,31,
1058 10,13,
1059 312,62,62,62,62,62,62,61,63,64,140,60,65,65,65,65,65,61,65,60,65,65,65,29,
1060 62,
1061 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,62,65,60,65,65,65,28,62,
1062 28,
1063 312,62,62,62,62,62,62,61,63,64,141,60,65,65,65,65,65,63,65,60,65,65,65,27,
1064 62,
1065 312,62,62,62,62,62,62,61,63,64,141,60,65,65,65,65,65,64,65,60,65,65,65,26,
1066 62,
1067 22,21,142,143,145,144,25,
1068 312,1,148,148,134,134,134,134,134,134,134,134,134,146,146,62,62,62,62,62,62,
1069 61,63,64,66,60,65,65,65,65,65,66,65,60,65,65,149,65,149,97,62,67,148,67,
1070 68,69,70,71,72,73,74,75,76,149,133,146,147,134,132,146,134,133,132,2,
1071 133,
1072 150,151,152,43,
1073 153,154,46,
1074 155,156,49,
1075 157,158,159,160,54,
1076 161,162,57,
1077 163,59,
1078 164,61,
1079 165,63,
1080 166,65,
1081 167,168,67,
1082 302,77,
1083 120,120,120,120,132,125,125,101,120,125,
1084 122,122,122,122,132,122,122,98,122,122,122,
1085 312,1,148,148,117,117,117,117,117,117,117,117,117,104,104,104,104,132,107,
1086 107,170,191,29,191,169,80,287,193,104,107,117,124,130,2,124,192,192,193,
1087 90,193,192,192,31,
1088 312,172,29,171,187,287,189,46,188,190,188,190,190,189,90,189,188,188,31,
1089 312,1,148,148,113,113,113,113,113,113,113,113,113,105,105,105,105,132,105,
1090 105,170,184,29,184,169,82,287,186,105,105,105,113,121,127,2,121,185,185,
1091 186,90,186,185,185,31,
1092 312,172,29,171,180,287,182,46,181,183,181,183,183,182,90,182,181,181,31,
1093 173,176,
1094 300,85,
1095 174,292,86,
1096 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,87,65,60,65,65,65,67,62,
1097 67,67,68,69,70,71,72,73,74,75,76,175,175,
1098 312,89,88,88,287,27,176,27,
1099 312,177,177,89,88,89,287,282,177,177,282,90,282,
1100 29,124,280,284,31,
1101 202,117,202,91,93,
1102 312,93,178,92,287,120,121,123,123,121,120,27,176,27,
1103 312,179,179,93,180,93,287,282,179,179,46,265,272,265,265,272,282,90,282,
1104 202,117,202,94,96,
1105 202,117,202,95,92,
1106 202,117,202,96,91,
1107 181,181,181,181,181,181,181,181,181,181,181,37,181,
1108 182,86,
1109 11,11,11,11,11,11,11,11,11,11,11,11,196,11,11,11,11,11,11,11,11,11,11,11,11,
1110 11,11,11,11,11,11,11,11,11,11,11,11,11,11,99,
1111 312,183,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,100,65,60,65,65,98,
1112 65,98,97,62,67,67,68,69,70,71,72,73,74,75,76,98,183,
1113 235,101,
1114 234,102,
1115 312,103,184,184,184,
1116 185,104,
1117 312,100,101,102,103,104,105,106,107,108,110,111,39,109,62,62,62,62,62,62,61,
1118 63,64,66,60,65,65,65,65,65,105,186,65,60,65,99,98,65,112,98,97,62,67,67,
1119 68,69,70,71,72,73,74,75,76,98,109,112,186,186,186,186,186,186,
1120 187,106,
1121 188,107,
1122 189,108,
1123 226,109,
1124 190,110,
1125 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,111,65,60,65,65,65,67,
1126 62,67,67,68,69,70,71,72,73,74,75,76,191,191,
1127 192,112,
1128 312,100,101,102,103,104,105,106,107,108,110,111,220,39,109,62,62,62,62,62,
1129 62,61,63,64,66,60,65,65,65,65,65,113,225,65,60,65,99,98,65,112,98,97,62,
1130 67,67,68,69,70,71,72,73,74,75,76,98,109,112,225,225,225,225,225,225,
1131 129,129,129,129,129,129,129,129,197,129,129,114,
1132 312,100,101,102,103,104,105,106,107,108,110,111,1,148,148,219,39,6,6,6,6,6,
1133 6,6,6,6,37,37,37,37,132,36,36,109,62,62,62,62,62,62,61,63,64,66,60,65,
1134 65,65,65,65,115,193,65,60,65,99,98,65,112,98,97,62,67,67,68,69,70,71,72,
1135 73,74,75,76,98,109,223,13,12,11,10,37,36,35,34,8,7,6,5,37,36,6,12,114,2,
1136 12,193,193,193,193,193,193,193,
1137 312,1,148,148,39,6,6,6,6,6,6,6,6,6,37,37,37,37,132,36,36,116,223,13,12,11,
1138 10,37,36,35,34,8,7,6,5,37,36,6,12,5,2,12,256,
1139 312,194,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,117,65,60,65,65,65,
1140 203,97,62,67,67,68,69,70,71,72,73,74,75,76,203,203,
1141 312,1,148,148,39,6,6,6,6,6,6,6,6,6,37,37,37,37,132,36,36,118,223,13,12,11,
1142 10,37,36,35,34,8,7,6,5,37,36,6,12,5,2,12,255,
1143 312,1,148,148,39,6,6,6,6,6,6,6,6,6,37,37,37,37,132,36,36,119,223,13,12,11,
1144 10,37,36,35,34,8,7,6,5,37,36,6,12,5,2,12,254,
1145 29,124,120,195,31,
1146 196,121,
1147 312,47,122,122,287,197,25,121,123,123,121,197,27,26,27,25,
1148 198,123,
1149 312,1,148,148,6,6,6,6,6,6,6,6,6,82,82,82,82,132,80,80,299,124,79,78,82,80,
1150 83,81,8,7,6,5,82,80,6,78,5,2,78,85,84,84,
1151 312,107,107,47,199,125,287,283,107,46,266,291,273,266,266,273,283,9,283,291,
1152 312,47,122,126,287,200,25,121,123,123,121,200,27,26,27,25,
1153 312,1,148,148,39,6,6,6,6,6,6,6,6,6,37,37,37,37,132,36,36,127,223,13,12,11,
1154 10,37,36,35,34,8,7,6,5,37,36,6,12,5,2,12,253,
1155 170,130,128,
1156 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,129,65,60,65,65,65,67,
1157 62,67,67,68,69,70,71,72,73,74,75,76,175,175,
1158 312,130,201,201,201,
1159 312,1,148,148,134,134,134,134,134,134,134,134,134,135,135,131,133,135,136,
1160 134,132,135,134,133,132,2,133,202,202,138,137,
1161 131,131,102,131,
1162 125,125,101,125,
1163 119,119,119,119,119,119,119,119,119,118,118,100,118,119,
1164 312,1,148,148,117,117,117,117,117,117,117,117,117,107,107,203,89,88,135,287,
1165 204,107,117,124,130,2,124,158,158,204,90,204,
1166 312,203,93,92,136,287,205,205,46,160,160,205,205,205,205,205,205,205,90,205,
1167 157,206,137,
1168 156,207,138,
1169 312,1,148,148,149,134,134,134,134,134,134,134,134,134,135,135,139,133,135,
1170 136,134,132,135,134,133,132,2,133,155,138,137,
1171 312,1,148,148,134,134,134,134,134,134,134,134,134,146,146,62,62,62,62,62,62,
1172 61,63,64,66,60,65,65,65,65,65,140,65,60,65,65,149,65,149,97,62,67,208,
1173 67,68,69,70,71,72,73,74,75,76,149,133,146,147,134,132,146,134,133,132,2,
1174 133,
1175 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,141,65,60,65,65,149,65,
1176 149,97,62,67,67,68,69,70,71,72,73,74,75,76,149,
1177 312,142,20,20,20,
1178 312,143,19,19,19,
1179 312,62,62,62,62,62,62,61,63,64,17,66,60,65,65,65,65,65,144,65,60,65,65,65,
1180 209,209,97,62,67,67,68,69,70,71,72,73,74,75,76,209,
1181 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,145,65,60,65,65,210,65,
1182 210,97,62,67,67,68,69,70,71,72,73,74,75,76,210,
1183 312,1,148,148,117,117,117,117,117,117,117,117,117,107,107,212,29,200,211,
1184 146,107,117,124,130,2,124,201,201,201,201,31,
1185 212,29,211,198,199,199,199,199,31,
1186 213,148,
1187 182,14,149,
1188 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,150,65,60,65,65,65,42,
1189 62,42,
1190 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,151,65,60,65,65,65,41,
1191 62,41,
1192 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,152,65,60,65,65,65,40,
1193 62,40,
1194 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,153,65,60,65,65,65,214,
1195 62,214,214,
1196 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,154,65,60,65,65,65,215,
1197 62,215,215,
1198 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,155,65,60,65,65,65,67,
1199 62,67,67,216,
1200 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,156,65,60,65,65,65,67,
1201 62,67,67,217,
1202 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,157,65,60,65,65,65,67,
1203 62,67,67,68,218,
1204 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,158,65,60,65,65,65,67,
1205 62,67,67,68,219,
1206 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,159,65,60,65,65,65,67,
1207 62,67,67,68,220,
1208 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,160,65,60,65,65,65,67,
1209 62,67,67,68,221,
1210 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,161,65,60,65,65,65,67,
1211 62,67,67,68,69,222,
1212 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,162,65,60,65,65,65,67,
1213 62,67,67,68,69,223,
1214 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,163,65,60,65,65,65,67,
1215 62,67,67,68,69,70,224,
1216 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,164,65,60,65,65,65,67,
1217 62,67,67,68,69,70,71,225,
1218 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,165,65,60,65,65,65,67,
1219 62,67,67,68,69,70,71,72,226,
1220 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,166,65,60,65,65,65,67,
1221 62,67,67,68,69,70,71,72,73,227,
1222 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,167,65,60,65,65,228,65,
1223 228,97,62,67,67,68,69,70,71,72,73,74,75,76,228,
1224 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,168,65,60,65,65,65,67,
1225 62,67,67,68,69,70,71,72,73,74,229,
1226 312,1,148,148,6,6,6,6,6,6,6,6,6,82,82,82,82,132,80,80,170,29,299,169,169,
1227 287,79,78,82,80,83,81,8,7,6,5,82,80,6,78,5,2,78,85,84,84,230,27,176,27,
1228 232,231,31,
1229 312,233,233,170,29,169,304,287,282,233,233,306,306,282,90,282,306,306,31,
1230 312,1,148,148,6,6,6,6,6,6,6,6,6,82,82,82,82,132,80,80,172,29,299,171,171,
1231 287,79,78,82,80,83,81,8,7,6,5,82,80,6,78,5,2,78,85,84,84,230,123,123,27,
1232 176,27,232,231,31,
1233 312,234,234,172,29,171,304,287,282,234,234,46,306,265,306,265,265,282,90,
1234 282,306,306,31,
1235 312,177,1,148,148,6,6,6,6,6,6,6,6,6,82,82,82,82,132,80,80,173,79,78,82,80,
1236 83,81,8,7,6,5,82,80,6,78,5,2,78,179,
1237 312,174,195,
1238 303,175,
1239 29,288,124,176,284,31,
1240 312,107,107,89,88,177,287,283,107,283,90,283,
1241 312,93,178,178,287,197,121,123,123,121,197,27,176,27,
1242 312,107,107,93,235,179,287,283,107,46,266,273,266,266,273,283,90,283,
1243 312,93,178,180,287,200,121,123,123,121,200,27,176,27,
1244 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,181,65,60,65,65,65,70,
1245 97,62,67,67,68,69,70,71,72,73,74,75,76,70,
1246 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,182,65,60,65,65,65,83,
1247 97,62,67,67,68,69,70,71,72,73,74,75,76,83,
1248 236,183,
1249 233,184,
1250 312,236,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,185,65,60,65,65,98,
1251 65,98,97,62,67,67,68,69,70,71,72,73,74,75,76,98,236,
1252 237,186,
1253 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,187,65,60,65,65,238,65,
1254 238,97,62,67,67,68,69,70,71,72,73,74,75,76,238,
1255 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,188,65,60,65,65,239,65,
1256 239,97,62,67,67,68,69,70,71,72,73,74,75,76,239,
1257 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,189,65,60,65,65,240,65,
1258 240,97,62,67,67,68,69,70,71,72,73,74,75,76,240,
1259 312,100,101,102,103,104,105,106,107,108,110,111,39,109,62,62,62,62,62,62,61,
1260 63,64,66,60,65,65,65,65,65,190,217,65,60,65,99,98,65,112,98,97,62,67,67,
1261 68,69,70,71,72,73,74,75,76,98,109,112,217,217,217,217,217,217,
1262 241,191,
1263 312,100,101,102,103,104,105,106,107,108,110,111,39,109,62,62,62,62,62,62,61,
1264 63,64,66,60,65,65,65,65,65,192,215,65,60,65,99,98,65,112,98,97,62,67,67,
1265 68,69,70,71,72,73,74,75,76,98,109,112,215,215,215,215,215,215,
1266 312,100,101,102,103,104,105,106,107,108,110,111,221,39,109,62,62,62,62,62,
1267 62,61,63,64,66,60,65,65,65,65,65,193,225,65,60,65,99,98,65,112,98,97,62,
1268 67,67,68,69,70,71,72,73,74,75,76,98,109,112,225,225,225,225,225,225,
1269 312,194,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,194,65,60,65,65,65,
1270 242,97,62,67,67,68,69,70,71,72,73,74,75,76,242,242,242,
1271 275,195,
1272 29,124,274,276,31,
1273 29,278,124,197,195,31,
1274 29,124,267,268,31,
1275 312,47,122,199,287,243,25,121,123,123,121,243,27,26,27,25,
1276 29,270,124,200,195,31,
1277 174,129,174,201,173,
1278 312,1,148,148,150,134,134,134,134,134,134,134,134,134,135,135,202,133,135,
1279 136,134,132,135,134,133,132,2,133,155,138,137,
1280 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,203,65,60,65,65,65,67,
1281 62,67,67,68,69,70,71,72,73,74,75,76,168,168,
1282 166,203,166,204,164,164,
1283 166,203,166,205,162,162,
1284 312,203,89,88,206,287,204,159,159,204,90,204,
1285 312,203,93,92,207,287,205,205,46,161,161,205,205,205,205,205,205,205,90,205,
1286 30,208,
1287 244,18,209,
1288 182,16,210,
1289 312,1,148,148,6,6,6,6,6,6,6,6,6,82,82,82,82,132,80,80,212,29,299,211,211,79,
1290 78,82,80,83,81,8,7,6,5,82,80,6,78,5,2,78,85,84,84,230,232,231,31,
1291 245,245,212,29,211,304,245,245,306,306,306,306,31,
1292 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,213,65,60,65,65,65,38,
1293 62,38,
1294 150,151,152,45,
1295 150,151,152,44,
1296 153,154,48,
1297 153,154,47,
1298 155,156,53,
1299 155,156,52,
1300 155,156,51,
1301 155,156,50,
1302 157,158,159,160,56,
1303 157,158,159,160,55,
1304 161,162,58,
1305 163,60,
1306 164,62,
1307 165,64,
1308 246,182,228,
1309 166,66,
1310 310,230,
1311 309,231,
1312 247,232,
1313 312,107,107,170,29,169,305,287,283,107,307,307,283,90,283,307,307,31,
1314 312,107,107,172,29,171,305,287,283,107,46,307,266,307,266,266,283,90,283,
1315 307,307,31,
1316 312,93,178,235,287,243,121,123,123,121,243,27,176,27,
1317 248,236,
1318 249,237,
1319 182,250,238,
1320 182,251,239,
1321 182,252,240,
1322 312,100,101,102,103,104,105,106,107,108,110,111,39,109,62,62,62,62,62,62,61,
1323 63,64,66,60,65,65,65,65,65,241,216,65,60,65,99,98,65,112,98,97,62,67,67,
1324 68,69,70,71,72,73,74,75,76,98,109,112,216,216,216,216,216,216,
1325 204,253,242,
1326 29,271,124,243,195,31,
1327 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,244,65,60,65,65,65,24,
1328 97,62,67,67,68,69,70,71,72,73,74,75,76,24,
1329 107,107,212,29,211,305,107,307,307,307,307,31,
1330 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,246,65,60,65,65,65,67,
1331 62,67,67,68,69,70,71,72,73,74,75,76,68,
1332 29,124,308,311,31,
1333 312,254,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,248,65,60,65,65,98,
1334 65,98,97,62,67,67,68,69,70,71,72,73,74,75,76,98,254,
1335 312,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,249,65,60,65,65,255,65,
1336 255,97,62,67,67,68,69,70,71,72,73,74,75,76,255,
1337 312,100,101,102,103,104,105,106,107,108,110,111,39,109,62,62,62,62,62,62,61,
1338 63,64,66,60,65,65,65,65,65,250,230,65,60,65,99,98,65,112,98,97,62,67,67,
1339 68,69,70,71,72,73,74,75,76,98,109,112,230,230,230,230,230,230,
1340 312,100,101,102,103,104,105,106,107,108,110,111,39,109,62,62,62,62,62,62,61,
1341 63,64,66,60,65,65,65,65,65,251,229,65,60,65,99,98,65,112,98,97,62,67,67,
1342 68,69,70,71,72,73,74,75,76,98,109,112,229,229,229,229,229,229,
1343 312,100,101,102,103,104,105,106,107,108,110,111,39,109,62,62,62,62,62,62,61,
1344 63,64,66,60,65,65,65,65,65,252,256,65,60,65,99,98,65,112,98,97,62,67,67,
1345 68,69,70,71,72,73,74,75,76,98,109,112,256,256,256,256,256,256,
1346 312,205,194,62,62,62,62,62,62,61,63,64,66,60,65,65,65,65,65,253,65,60,65,65,
1347 65,208,97,62,67,67,68,69,70,71,72,73,74,75,76,208,208,
1348 257,254,
1349 182,258,255,
1350 259,227,
1351 312,62,62,62,62,62,62,61,63,64,260,66,60,65,65,65,65,65,257,65,60,65,65,98,
1352 65,98,97,62,67,67,68,69,70,71,72,73,74,75,76,98,260,
1353 231,258,
1354 312,100,101,102,103,104,105,106,107,108,110,111,39,109,62,62,62,62,62,62,61,
1355 63,64,66,60,65,65,65,65,65,259,228,65,60,65,99,98,65,112,98,97,62,67,67,
1356 68,69,70,71,72,73,74,75,76,98,109,112,228,228,228,228,228,228,
1357 261,260,
1358 312,100,101,102,103,104,105,106,107,108,110,111,39,109,62,62,62,62,62,62,61,
1359 63,64,66,60,65,65,65,65,65,261,232,65,60,65,99,98,65,112,98,97,62,67,67,
1360 68,69,70,71,72,73,74,75,76,98,109,112,232,232,232,232,232,232,
1361 0
1362 };
1363
1364
1365 static const unsigned short far ag_sbt[] = {
1366 0, 56, 62, 67, 77, 92, 102, 122, 133, 154, 159, 162, 165, 176,
1367 188, 232, 269, 307, 326, 345, 349, 402, 404, 406, 412, 418, 420, 426,
1368 428, 442, 481, 525, 527, 536, 553, 570, 587, 622, 658, 701, 804, 848,
1369 855, 899, 906, 950, 966, 971, 992, 995,1000,1044,1047,1052,1058,1063,
1370 1066,1068,1099,1104,1109,1111,1136,1162,1187,1212,1219,1284,1288,1291,
1371 1294,1299,1302,1304,1306,1308,1310,1313,1315,1325,1336,1379,1398,1442,
1372 1461,1463,1465,1468,1506,1514,1527,1532,1537,1551,1570,1575,1580,1585,
1373 1598,1600,1640,1681,1683,1685,1690,1692,1754,1756,1758,1760,1762,1764,
1374 1802,1804,1867,1879,1981,2024,2064,2107,2150,2155,2157,2173,2175,2217,
1375 2237,2253,2296,2299,2337,2342,2373,2377,2381,2395,2427,2447,2450,2453,
1376 2484,2549,2588,2593,2598,2638,2677,2708,2717,2719,2722,2748,2774,2800,
1377 2827,2854,2882,2910,2939,2968,2997,3026,3056,3086,3117,3149,3182,3216,
1378 3255,3290,3343,3362,3417,3440,3480,3483,3485,3491,3503,3517,3535,3549,
1379 3587,3625,3627,3629,3670,3672,3711,3750,3789,3851,3853,3915,3978,4019,
1380 4021,4026,4032,4037,4053,4059,4064,4095,4133,4139,4145,4157,4177,4179,
1381 4182,4185,4234,4247,4273,4277,4281,4284,4287,4290,4293,4296,4299,4304,
1382 4309,4312,4314,4316,4318,4321,4323,4325,4327,4329,4347,4369,4383,4385,
1383 4387,4390,4393,4396,4458,4461,4467,4505,4517,4554,4559,4600,4639,4701,
1384 4763,4825,4866,4868,4871,4873,4914,4916,4978,4980,5042
1385 };
1386
1387
1388 static const unsigned short far ag_sbe[] = {
1389 23, 58, 64, 70, 82, 99, 118, 129, 149, 156, 161, 164, 173, 184,
1390 209, 254, 291, 310, 329, 347, 372, 403, 405, 407, 414, 419, 423, 427,
1391 433, 460, 502, 526, 530, 539, 556, 573, 609, 644, 679, 751, 825, 852,
1392 876, 903, 927, 953, 968, 976, 993, 998,1021,1045,1050,1053,1061,1065,
1393 1067,1083,1101,1106,1110,1128,1153,1179,1204,1218,1250,1287,1290,1293,
1394 1298,1301,1303,1305,1307,1309,1312,1314,1322,1332,1361,1383,1423,1446,
1395 1462,1464,1467,1485,1509,1519,1529,1535,1540,1556,1573,1578,1583,1596,
1396 1599,1639,1658,1682,1684,1686,1691,1722,1755,1757,1759,1761,1763,1781,
1397 1803,1835,1878,1929,2002,2042,2085,2128,2152,2156,2160,2174,2196,2222,
1398 2240,2274,2298,2316,2338,2357,2375,2379,2392,2413,2431,2449,2452,2469,
1399 2515,2566,2589,2594,2616,2655,2696,2711,2718,2721,2739,2765,2791,2817,
1400 2844,2871,2899,2927,2956,2985,3014,3043,3073,3103,3134,3166,3199,3233,
1401 3272,3314,3349,3386,3423,3461,3481,3484,3488,3496,3506,3522,3538,3566,
1402 3604,3626,3628,3647,3671,3689,3728,3767,3819,3852,3883,3946,3996,4020,
1403 4023,4029,4034,4040,4056,4062,4080,4112,4136,4142,4149,4161,4178,4181,
1404 4184,4209,4239,4264,4276,4280,4283,4286,4289,4292,4295,4298,4303,4308,
1405 4311,4313,4315,4317,4320,4322,4324,4326,4328,4335,4353,4372,4384,4386,
1406 4389,4392,4395,4426,4460,4464,4484,4510,4534,4556,4577,4617,4669,4731,
1407 4793,4844,4867,4870,4872,4891,4915,4946,4979,5010,5042
1408 };
1409
1410
1411 static const unsigned char far ag_fl[] = {
1412 1,0,1,2,1,1,1,1,1,1,2,1,1,1,3,1,4,3,4,3,3,2,2,1,3,1,2,2,2,2,4,1,1,1,1,
1413 1,1,1,4,1,3,3,3,1,3,3,1,3,3,1,3,3,3,3,1,3,3,1,3,1,3,1,3,1,3,1,3,1,5,1,
1414 3,1,1,1,1,1,1,1,1,1,1,1,1,3,1,0,1,2,2,2,2,3,3,4,3,3,4,1,1,1,1,1,1,1,2,
1415 2,1,2,1,1,1,1,2,2,2,2,1,2,2,2,2,2,2,1,2,2,2,2,2,1,2,2,1,1,1,1,1,1,1,1,
1416 1,1,1,1,1,1,2,1,0,4,5,2,1,1,1,2,2,2,2,3,2,3,2,1,2,1,0,1,2,4,5,2,2,4,0,
1417 2,1,3,1,3,1,2,2,2,1,2,2,1,2,2,2,1,2,2,1,3,1,1,1,2,1,2,0,2,3,4,1,1,3,1,
1418 1,1,1,1,1,3,4,3,2,3,3,4,1,2,1,2,2,5,7,5,5,7,9,3,2,2,3,1,2,1,1,2,2,3,3,
1419 3,3,2,3,3,3,3,3,4,4,4,4,1,1,1,1,1,2,1,1,2,3,3,4,1,4,5,2,3,3,4,4,1,3,1,
1420 1,1,2,3,2,3,4,1,3,1,2,3,4,3,4,1,1,1,1,2,3,2,3,4,1,2,2,3,3,3,3,4,1
1421 };
1422
1423 static const unsigned char far ag_ptt[] = {
1424 0, 4, 4, 1, 6, 6, 6, 6, 6, 12, 12, 14, 14, 14, 14, 19, 19, 19,
1425 19, 19, 19, 19, 19, 22, 22, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31,
1426 31, 32, 32, 41, 41, 41, 41, 44, 44, 44, 45, 45, 45, 48, 48, 48, 48, 48,
1427 53, 53, 53, 56, 56, 57, 57, 59, 59, 61, 61, 63, 63, 65, 65, 28, 28, 68,
1428 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 17, 17, 80, 81, 81, 82, 82, 82,
1429 82, 87, 87, 87, 86, 86, 86, 92, 92, 92, 94, 94, 94, 88, 88, 88, 91, 91,
1430 100,100,101,101, 95, 95, 95, 95, 97, 97, 97, 97, 83, 83, 83, 85, 85, 85,
1431 96, 96, 96, 98, 98, 98, 99, 99, 99, 99, 99,104,104,104,104,104,104,104,
1432 104,104,105,105,121,122,122,122,124,124,126,126,130,130,132,132,131,131,
1433 134,134,133,133,135,135,136,123,123,123,138,138,139,139,140,140,141,141,
1434 143,143,143,143,143,143,143,143,143,143,143,143,143,143,146,146, 24, 24,
1435 34, 34, 34, 34, 90, 90,147,147,147,148,148, 2, 2, 2, 2, 2, 2,149,
1436 149,149,150,150,150,150,157,157,158,158,151,152,152,152,153,153,153,154,
1437 154,154,154, 3, 3,169,169,169,170,170,170,170,170,170,170,170,170,170,
1438 170,170,170,170,170, 93, 93,172,172,145,145,145,175,175,175,176,176,173,
1439 173,173,173,173,177,177,177,178,178, 89, 89,179,179,179,181,181,181,180,
1440 180,171,171,171,182,182,182,144,144,144,174,174,174,185,185,185,183,183,
1441 183,183,184,184,184,184, 15
1442 };
1443
1444 static const unsigned char far *ag_valid(int ag_k) {
1445 const unsigned char far *ag_tp = &ag_tstt[ag_sbt[(PCB).sn+1]];
1446 while (*--ag_tp != (unsigned char) ag_k) if (*ag_tp == 0) return NULL;
1447 return ag_tp;
1448 }
1449
1450 int cc_change_reduction(cc_token_type ag_k) {
1451 if (!ag_valid(ag_k)) return 0;
1452 (PCB).reduction_token = ag_k;
1453 return 1;
1454 }
1455
1456 static void ag_default(const int *ag_tp) {
1457 (PCB).ag_dsn = (PCB).sn;
1458 (PCB).ag_dtl = ag_tp;
1459 while (!ag_valid((cc_token_type) *ag_tp)) ag_tp++;
1460 (PCB).reduction_token = (cc_token_type) *ag_tp;
1461 }
1462
1463
1464
1465 static void ag_ra(void)
1466 {
1467 switch(ag_rpx[(PCB).ag_ap]) {
1468 case 1: ag_rp_1(); break;
1469 case 2: ag_rp_2(V(0,(int *))); break;
1470 case 3: V(0,(int *)) = ag_rp_3(); break;
1471 case 4: ag_rp_4(V(0,(token *))); break;
1472 case 5: ag_default(&ag_rtt[0]); V(0,(token *)) = ag_rp_5(V(0,(token *))); break;
1473 }
1474 }
1475
1476 #define TOKEN_NAMES cc_token_names
1477 const char *const cc_token_names[187] = {
1478 "prog start",
1479 "prog start",
1480 "statement",
1481 "translation unit",
1482 "",
1483 "eof",
1484 "constant",
1485 "FLOATINGconstant",
1486 "INTEGERconstant",
1487 "OCTALconstant",
1488 "HEXconstant",
1489 "CHARACTERconstant",
1490 "string literal list",
1491 "STRINGliteral",
1492 "primary expression",
1493 "IDENTIFIER",
1494 "'('",
1495 "expression",
1496 "')'",
1497 "postfix expression",
1498 "'['",
1499 "']'",
1500 "argument expression list",
1501 "'.'",
1502 "identifier or typedef name",
1503 "ARROW",
1504 "ICR",
1505 "DECR",
1506 "assignment expression",
1507 "','",
1508 "unary expression",
1509 "unary operator",
1510 "cast expression",
1511 "SIZEOF",
1512 "type name",
1513 "'&'",
1514 "'*'",
1515 "'+'",
1516 "'-'",
1517 "'~'",
1518 "'!'",
1519 "multiplicative expression",
1520 "'/'",
1521 "'%'",
1522 "additive expression",
1523 "shift expression",
1524 "LS",
1525 "RS",
1526 "relational expression",
1527 "'<'",
1528 "'>'",
1529 "LE",
1530 "GE",
1531 "equality expression",
1532 "EQ",
1533 "NE",
1534 "AND expression",
1535 "exclusive OR expression",
1536 "'^'",
1537 "inclusive OR expression",
1538 "'|'",
1539 "logical AND expression",
1540 "ANDAND",
1541 "logical OR expression",
1542 "OROR",
1543 "conditional expression",
1544 "'\\?'",
1545 "':'",
1546 "assignment operator",
1547 "'='",
1548 "MULTassign",
1549 "DIVassign",
1550 "MODassign",
1551 "PLUSassign",
1552 "MINUSassign",
1553 "LSassign",
1554 "RSassign",
1555 "ANDassign",
1556 "ERassign",
1557 "ORassign",
1558 "constant expression",
1559 "expression opt",
1560 "declaration",
1561 "sue declaration specifier",
1562 "';'",
1563 "sue type specifier",
1564 "declaring list",
1565 "default declaring list",
1566 "declaration qualifier list",
1567 "identifier declarator",
1568 "initializer opt",
1569 "type qualifier list",
1570 "declaration specifier",
1571 "declarator",
1572 "type specifier",
1573 "basic declaration specifier",
1574 "typedef declaration specifier",
1575 "basic type specifier",
1576 "typedef type specifier",
1577 "storage class",
1578 "declaration qualifier",
1579 "type qualifier",
1580 "CONST",
1581 "VOLATILE",
1582 "basic type name",
1583 "elaborated type name",
1584 "TYPEDEFname",
1585 "TYPEDEF",
1586 "EXTERN",
1587 "STATIC",
1588 "AUTO",
1589 "REGISTER",
1590 "VOID",
1591 "CHAR",
1592 "SHORT",
1593 "INT",
1594 "LONG",
1595 "FLOAT",
1596 "DOUBLE",
1597 "SIGNED",
1598 "UNSIGNED",
1599 "save flag",
1600 "struct or union specifier",
1601 "enum specifier",
1602 "struct or union",
1603 "'{'",
1604 "struct declaration list",
1605 "'}'",
1606 "STRUCT",
1607 "UNION",
1608 "struct declaration",
1609 "struct declaring list",
1610 "struct default declaring list",
1611 "struct identifier declarator",
1612 "struct declarator",
1613 "bit field size opt",
1614 "bit field size",
1615 "ENUM",
1616 "enumerator list",
1617 "enumerator value opt",
1618 "parameter type list",
1619 "parameter list",
1620 "ELLIPSIS",
1621 "parameter declaration",
1622 "abstract declarator",
1623 "parameter typedef declarator",
1624 "identifier list",
1625 "initializer",
1626 "initializer list",
1627 "labeled statement",
1628 "compound statement",
1629 "expression statement",
1630 "selection statement",
1631 "iteration statement",
1632 "jump statement",
1633 "CASE",
1634 "DEFAULT",
1635 "declaration list",
1636 "statement list",
1637 "IF",
1638 "ELSE",
1639 "SWITCH",
1640 "WHILE",
1641 "DO",
1642 "FOR",
1643 "GOTO",
1644 "CONTINUE",
1645 "BREAK",
1646 "RETURN",
1647 "external definition",
1648 "function definition",
1649 "old function declarator",
1650 "typedef declarator",
1651 "paren typedef declarator",
1652 "postfixing abstract declarator",
1653 "clean typedef declarator",
1654 "clean postfix typedef declarator",
1655 "paren postfix typedef declarator",
1656 "simple paren typedef declarator",
1657 "unary identifier declarator",
1658 "paren identifier declarator",
1659 "postfix identifier declarator",
1660 "postfix old function declarator",
1661 "unary abstract declarator",
1662 "postfix abstract declarator",
1663 "array abstract declarator",
1664 "NAME",
1665
1666 };
1667
1668 #ifndef MISSING_FORMAT
1669 #define MISSING_FORMAT "Missing %s"
1670 #endif
1671 #ifndef UNEXPECTED_FORMAT
1672 #define UNEXPECTED_FORMAT "Unexpected %s"
1673 #endif
1674 #ifndef UNNAMED_TOKEN
1675 #define UNNAMED_TOKEN "input"
1676 #endif
1677
1678
1679 static void ag_diagnose(void) {
1680 int ag_snd = (PCB).sn;
1681 int ag_k = ag_sbt[ag_snd];
1682
1683 if (*TOKEN_NAMES[ag_tstt[ag_k]] && ag_astt[ag_k + 1] == ag_action_8) {
1684 sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
1685 }
1686 else if (ag_astt[ag_sbe[(PCB).sn]] == ag_action_8
1687 && (ag_k = (int) ag_sbe[(PCB).sn] + 1) == (int) ag_sbt[(PCB).sn+1] - 1
1688 && *TOKEN_NAMES[ag_tstt[ag_k]]) {
1689 sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
1690 }
1691 else if ((PCB).token_number && *TOKEN_NAMES[(PCB).token_number]) {
1692 sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, TOKEN_NAMES[(PCB).token_number]);
1693 }
1694 else if (isprint(((PCB).input_code)) && ((PCB).input_code) != '\\') {
1695 char buf[20];
1696 sprintf(buf, "\'%c\'", (char) ((PCB).input_code));
1697 sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, buf);
1698 }
1699 else sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, UNNAMED_TOKEN);
1700 (PCB).error_message = (PCB).ag_msg;
1701
1702
1703 }
1704 static int ag_action_1_r_proc(void);
1705 static int ag_action_2_r_proc(void);
1706 static int ag_action_3_r_proc(void);
1707 static int ag_action_4_r_proc(void);
1708 static int ag_action_1_s_proc(void);
1709 static int ag_action_3_s_proc(void);
1710 static int ag_action_1_proc(void);
1711 static int ag_action_2_proc(void);
1712 static int ag_action_3_proc(void);
1713 static int ag_action_4_proc(void);
1714 static int ag_action_5_proc(void);
1715 static int ag_action_6_proc(void);
1716 static int ag_action_7_proc(void);
1717 static int ag_action_8_proc(void);
1718 static int ag_action_9_proc(void);
1719 static int ag_action_10_proc(void);
1720 static int ag_action_11_proc(void);
1721 static int ag_action_8_proc(void);
1722
1723
1724 static int (*const ag_r_procs_scan[])(void) = {
1725 ag_action_1_r_proc,
1726 ag_action_2_r_proc,
1727 ag_action_3_r_proc,
1728 ag_action_4_r_proc
1729 };
1730
1731 static int (*const ag_s_procs_scan[])(void) = {
1732 ag_action_1_s_proc,
1733 ag_action_2_r_proc,
1734 ag_action_3_s_proc,
1735 ag_action_4_r_proc
1736 };
1737
1738 static int (*const ag_gt_procs_scan[])(void) = {
1739 ag_action_1_proc,
1740 ag_action_2_proc,
1741 ag_action_3_proc,
1742 ag_action_4_proc,
1743 ag_action_5_proc,
1744 ag_action_6_proc,
1745 ag_action_7_proc,
1746 ag_action_8_proc,
1747 ag_action_9_proc,
1748 ag_action_10_proc,
1749 ag_action_11_proc,
1750 ag_action_8_proc
1751 };
1752
1753
1754 static int ag_action_10_proc(void) {
1755 (PCB).btsx = 0, (PCB).drt = -1;
1756 ag_track();
1757 return 0;
1758 }
1759
1760 static int ag_action_11_proc(void) {
1761 (PCB).btsx = 0, (PCB).drt = -1;
1762 (*(token *) &(PCB).vs[(PCB).ssx]) = (PCB).input_value;
1763 (PCB).ssx--;
1764 ag_ra();
1765 (PCB).ssx++;
1766 ag_track();
1767 return 0;
1768 }
1769
1770 static int ag_action_3_r_proc(void) {
1771 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
1772 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
1773 (PCB).btsx = 0, (PCB).drt = -1;
1774 (PCB).reduction_token = (cc_token_type) ag_ptt[(PCB).ag_ap];
1775 ag_ra();
1776 return (PCB).exit_flag == AG_RUNNING_CODE;
1777 }
1778
1779 static int ag_action_3_s_proc(void) {
1780 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
1781 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
1782 (PCB).btsx = 0, (PCB).drt = -1;
1783 (PCB).reduction_token = (cc_token_type) ag_ptt[(PCB).ag_ap];
1784 ag_ra();
1785 return (PCB).exit_flag == AG_RUNNING_CODE;
1786 }
1787
1788 static int ag_action_4_r_proc(void) {
1789 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
1790 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
1791 (PCB).reduction_token = (cc_token_type) ag_ptt[(PCB).ag_ap];
1792 return 1;
1793 }
1794
1795 static int ag_action_2_proc(void) {
1796 (PCB).btsx = 0, (PCB).drt = -1;
1797 if ((PCB).ssx >= 128) {
1798 ag_trace_error();
1799 (PCB).exit_flag = AG_STACK_ERROR_CODE;
1800 PARSER_STACK_OVERFLOW;
1801 }
1802 (*(token *) &(PCB).vs[(PCB).ssx]) = (PCB).input_value;
1803 (PCB).ss[(PCB).ssx] = (PCB).sn;
1804 (PCB).ssx++;
1805 (PCB).sn = (PCB).ag_ap;
1806 ag_track();
1807 return 0;
1808 }
1809
1810 static int ag_action_9_proc(void) {
1811 if ((PCB).drt == -1) {
1812 (PCB).drt=(PCB).token_number;
1813 (PCB).dssx=(PCB).ssx;
1814 (PCB).dsn=(PCB).sn;
1815 }
1816 ag_prot();
1817 (PCB).ss[(PCB).ssx] = (PCB).sn;
1818 (PCB).ssx++;
1819 (PCB).sn = (PCB).ag_ap;
1820 return (PCB).exit_flag == AG_RUNNING_CODE;
1821 }
1822
1823 static int ag_action_2_r_proc(void) {
1824 (PCB).ssx++;
1825 (PCB).sn = (PCB).ag_ap;
1826 return 0;
1827 }
1828
1829 static int ag_action_7_proc(void) {
1830 --(PCB).ssx;
1831 (PCB).exit_flag = AG_SUCCESS_CODE;
1832 return 0;
1833 }
1834
1835 static int ag_action_1_proc(void) {
1836 (PCB).exit_flag = AG_SUCCESS_CODE;
1837 ag_track();
1838 return 0;
1839 }
1840
1841 static int ag_action_1_r_proc(void) {
1842 (PCB).exit_flag = AG_SUCCESS_CODE;
1843 return 0;
1844 }
1845
1846 static int ag_action_1_s_proc(void) {
1847 (PCB).exit_flag = AG_SUCCESS_CODE;
1848 return 0;
1849 }
1850
1851 static int ag_action_4_proc(void) {
1852 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
1853 (PCB).reduction_token = (cc_token_type) ag_ptt[(PCB).ag_ap];
1854 (PCB).btsx = 0, (PCB).drt = -1;
1855 (*(token *) &(PCB).vs[(PCB).ssx]) = (PCB).input_value;
1856 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
1857 else (PCB).ss[(PCB).ssx] = (PCB).sn;
1858 ag_track();
1859 while ((PCB).exit_flag == AG_RUNNING_CODE) {
1860 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
1861 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
1862 do {
1863 unsigned ag_tx = (ag_t1 + ag_t2)/2;
1864 if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
1865 else ag_t2 = ag_tx;
1866 } while (ag_t1 < ag_t2);
1867 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
1868 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; ag_trace_error();
1869 REDUCTION_TOKEN_ERROR; break;}
1870 (PCB).ag_ap = ag_pstt[ag_t1];
1871 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
1872 }
1873 return 0;
1874 }
1875
1876 static int ag_action_3_proc(void) {
1877 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
1878 (PCB).btsx = 0, (PCB).drt = -1;
1879 (*(token *) &(PCB).vs[(PCB).ssx]) = (PCB).input_value;
1880 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
1881 else (PCB).ss[(PCB).ssx] = (PCB).sn;
1882 ag_track();
1883 (PCB).reduction_token = (cc_token_type) ag_ptt[(PCB).ag_ap];
1884 ag_ra();
1885 while ((PCB).exit_flag == AG_RUNNING_CODE) {
1886 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
1887 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
1888 do {
1889 unsigned ag_tx = (ag_t1 + ag_t2)/2;
1890 if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
1891 else ag_t2 = ag_tx;
1892 } while (ag_t1 < ag_t2);
1893 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
1894 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; ag_trace_error();
1895 REDUCTION_TOKEN_ERROR; break;}
1896 (PCB).ag_ap = ag_pstt[ag_t1];
1897 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
1898 }
1899 return 0;
1900 }
1901
1902 static int ag_action_8_proc(void) {
1903 ag_undo();
1904 ag_trace_error();
1905 (PCB).exit_flag = AG_SYNTAX_ERROR_CODE;
1906 ag_diagnose();
1907 SYNTAX_ERROR;
1908 ag_track();
1909 return (PCB).exit_flag == AG_RUNNING_CODE;
1910 }
1911
1912 static int ag_action_5_proc(void) {
1913 int ag_sd = ag_fl[(PCB).ag_ap];
1914 (PCB).btsx = 0, (PCB).drt = -1;
1915 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
1916 else {
1917 (PCB).ss[(PCB).ssx] = (PCB).sn;
1918 }
1919 (PCB).reduction_token = (cc_token_type) ag_ptt[(PCB).ag_ap];
1920 ag_ra();
1921 while ((PCB).exit_flag == AG_RUNNING_CODE) {
1922 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
1923 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
1924 do {
1925 unsigned ag_tx = (ag_t1 + ag_t2)/2;
1926 if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
1927 else ag_t2 = ag_tx;
1928 } while (ag_t1 < ag_t2);
1929 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
1930 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; ag_trace_error();
1931 REDUCTION_TOKEN_ERROR; break;}
1932 (PCB).ag_ap = ag_pstt[ag_t1];
1933 if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
1934 }
1935 return (PCB).exit_flag == AG_RUNNING_CODE;
1936 }
1937
1938 static int ag_action_6_proc(void) {
1939 int ag_sd = ag_fl[(PCB).ag_ap];
1940 (PCB).reduction_token = (cc_token_type) ag_ptt[(PCB).ag_ap];
1941 if ((PCB).drt == -1) {
1942 (PCB).drt=(PCB).token_number;
1943 (PCB).dssx=(PCB).ssx;
1944 (PCB).dsn=(PCB).sn;
1945 }
1946 if (ag_sd) {
1947 (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
1948 }
1949 else {
1950 ag_prot();
1951 (PCB).vs[(PCB).ssx] = ag_null_value;
1952 (PCB).ss[(PCB).ssx] = (PCB).sn;
1953 }
1954 while ((PCB).exit_flag == AG_RUNNING_CODE) {
1955 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
1956 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
1957 do {
1958 unsigned ag_tx = (ag_t1 + ag_t2)/2;
1959 if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
1960 else ag_t2 = ag_tx;
1961 } while (ag_t1 < ag_t2);
1962 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
1963 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; ag_trace_error();
1964 REDUCTION_TOKEN_ERROR; break;}
1965 (PCB).ag_ap = ag_pstt[ag_t1];
1966 if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
1967 }
1968 return (PCB).exit_flag == AG_RUNNING_CODE;
1969 }
1970
1971
1972 void init_cc(void) {
1973 unsigned ag_t1;
1974 ag_t1 = 0;
1975 (PCB).ss[0] = (PCB).sn = (PCB).ssx = 0;
1976 (PCB).exit_flag = AG_RUNNING_CODE;
1977 (PCB).line = FIRST_LINE;
1978 (PCB).column = FIRST_COLUMN;
1979 (PCB).btsx = 0, (PCB).drt = -1;
1980 while (ag_tstt[ag_t1] == 0) {
1981 (PCB).ag_ap = ag_pstt[ag_t1];
1982 (ag_gt_procs_scan[ag_astt[ag_t1]])();
1983 ag_t1 = ag_sbt[(PCB).sn];
1984 }
1985 }
1986
1987 void cc(void) {
1988 (PCB).token_number = (cc_token_type) AG_TCV((PCB).input_code);
1989 while (1) {
1990 unsigned ag_t1 = ag_sbt[(PCB).sn];
1991 unsigned ag_t2 = ag_sbe[(PCB).sn] - 1;
1992 do {
1993 unsigned ag_tx = (ag_t1 + ag_t2)/2;
1994 if (ag_tstt[ag_tx] > (unsigned char)(PCB).token_number)
1995 ag_t1 = ag_tx + 1;
1996 else ag_t2 = ag_tx;
1997 } while (ag_t1 < ag_t2);
1998 if (ag_tstt[ag_t1] != (unsigned char)(PCB).token_number)
1999 ag_t1 = ag_sbe[(PCB).sn];
2000 (PCB).ag_ap = ag_pstt[ag_t1];
2001 if ((ag_gt_procs_scan[ag_astt[ag_t1]])() == 0) break;
2002 }
2003 }
2004
2005