Mercurial > ~dholland > hg > ag > index.cgi
comparison tests/agcl/oldagsrc/good/dsl-2.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 // C Prologue | |
2 /* | |
3 AnaGram, a System for Syntax Directed Programming | |
4 | |
5 A Dos Script Language | |
6 | |
7 Copyright (c) 1993, 1996 Parsifal Software. | |
8 All Rights Reserved. | |
9 | |
10 */ | |
11 | |
12 | |
13 #include "stack.h" | |
14 #include "charsink.h" | |
15 #include "strdict.h" | |
16 #include "array.h" | |
17 #include "symbol.h" | |
18 #include "query.h" | |
19 #include <conio.h> | |
20 | |
21 #ifdef __BCPLUSPLUS__ | |
22 #define ARGS ((char **) args) | |
23 | |
24 extern unsigned _stklen = 0x4000; // set stack size | |
25 | |
26 #else | |
27 #define ARGS ((char const * const *) (char **) args) | |
28 #endif | |
29 | |
30 | |
31 // Define stacks for temporary storage | |
32 | |
33 stack <action_pointer> as(25); // Stack actions | |
34 stack <int> is(100); // Stack string indices | |
35 stack <char *> ps(1000,20); // Stack parameter strings | |
36 stack <query_item> qs(23); // Stack query items | |
37 | |
38 | |
39 // Define data structures for symbol table | |
40 | |
41 #define N_STRINGS 2000 | |
42 | |
43 string_accumulator sa(64000U,500); | |
44 string_dictionary sd(N_STRINGS); | |
45 array <symbol_table_entry> st(N_STRINGS); | |
46 | |
47 | |
48 /* | |
49 * AnaGram, A System for Syntax Directed Programming | |
50 * File generated by: ... | |
51 * | |
52 * AnaGram Parsing Engine | |
53 * Copyright 1993-2002 Parsifal Software. All Rights Reserved. | |
54 * | |
55 * This software is provided 'as-is', without any express or implied | |
56 * warranty. In no event will the authors be held liable for any damages | |
57 * arising from the use of this software. | |
58 * | |
59 * Permission is granted to anyone to use this software for any purpose, | |
60 * including commercial applications, and to alter it and redistribute it | |
61 * freely, subject to the following restrictions: | |
62 * | |
63 * 1. The origin of this software must not be misrepresented; you must not | |
64 * claim that you wrote the original software. If you use this software | |
65 * in a product, an acknowledgment in the product documentation would be | |
66 * appreciated but is not required. | |
67 * 2. Altered source versions must be plainly marked as such, and must not be | |
68 * misrepresented as being the original software. | |
69 * 3. This notice may not be removed or altered from any source distribution. | |
70 */ | |
71 | |
72 #ifndef DSL-2_H | |
73 #include "dsl-2.h" | |
74 #endif | |
75 | |
76 #ifndef DSL-2_H | |
77 #error Mismatched header file | |
78 #endif | |
79 | |
80 #include <ctype.h> | |
81 #include <stdio.h> | |
82 | |
83 #define RULE_CONTEXT (&((PCB).cs[(PCB).ssx])) | |
84 #define ERROR_CONTEXT ((PCB).cs[(PCB).error_frame_ssx]) | |
85 #define CONTEXT ((PCB).cs[(PCB).ssx]) | |
86 | |
87 | |
88 | |
89 dsl-2_pcb_type dsl-2_pcb; | |
90 #define PCB dsl-2_pcb | |
91 #define CHANGE_REDUCTION(x) dsl-2_change_reduction(dsl-2_##x##_token) | |
92 int dsl-2_change_reduction(dsl-2_token_type); | |
93 | |
94 | |
95 #line - "dsl-2.syn" | |
96 #include <process.h> | |
97 #include <stdlib.h> | |
98 #include <ctype.h> | |
99 #include <sys/stat.h> | |
100 #include <fcntl.h> | |
101 #include <io.h> | |
102 #include <conio.h> | |
103 #include <dos.h> | |
104 #include <time.h> | |
105 #include <assert.h> | |
106 #include <errno.h> | |
107 | |
108 #include "edit.h" | |
109 | |
110 | |
111 #include "screen.h" | |
112 #include "util.h" | |
113 #include "redirect.h" | |
114 | |
115 #define GET_CONTEXT CONTEXT.pointer = PCB.pointer;\ | |
116 CONTEXT.line=PCB.line;\ | |
117 CONTEXT.column = PCB.column; | |
118 | |
119 | |
120 int debug_switch = 0; | |
121 char *error_msg = NULL; | |
122 unsigned errorlevel_index; | |
123 int errorlevel; | |
124 int exitcode = 0; | |
125 int exitflag = 0; | |
126 int first_line = 1; | |
127 int first_column = 1; | |
128 unsigned stderr_index; | |
129 | |
130 void display_queries(screen_descriptor *); | |
131 | |
132 #define FIRST_LINE first_line | |
133 #define FIRST_COLUMN first_column | |
134 | |
135 | |
136 /***** | |
137 | |
138 Internal Functions | |
139 | |
140 *****/ | |
141 | |
142 long file_exists(void) { | |
143 FILE *f = fopen(sa--,"r"); | |
144 if (f != NULL) fclose(f); | |
145 return f != NULL; | |
146 } | |
147 | |
148 long directory_exists(void) { | |
149 struct find_t ff; | |
150 int result; | |
151 | |
152 sa << "\\*.*"; | |
153 result = _dos_findfirst(sa--,_A_SUBDIR,&ff); | |
154 return result == 0; | |
155 } | |
156 | |
157 long string_length(void) { | |
158 return size(sa--); | |
159 } | |
160 | |
161 long get_file_length(void) { | |
162 int handle = open(sa--, O_RDONLY); | |
163 long length; | |
164 if (handle < 0) return 0; | |
165 length = filelength(handle); | |
166 close(handle); | |
167 return length; | |
168 } | |
169 | |
170 long disk_space(void) { | |
171 struct diskfree_t free; | |
172 int drive = toupper(*(char *)sa--) - 64; | |
173 long avail; | |
174 | |
175 _dos_getdiskfree(drive, &free); | |
176 avail = (long) free.avail_clusters | |
177 * (long) free.bytes_per_sector | |
178 * (long) free.sectors_per_cluster; | |
179 return avail; | |
180 } | |
181 | |
182 long file_time(void) { | |
183 int handle = open(sa--, O_RDONLY); | |
184 #ifdef __BCPLUSPLUS__ | |
185 unsigned date, time; | |
186 #else | |
187 unsigned short date, time; | |
188 #endif | |
189 struct tm t; | |
190 | |
191 if (handle < 0) return 0; | |
192 _dos_getftime(handle, &date, &time); | |
193 close(handle); | |
194 t.tm_year = ((date & 0xfe00) >> 9) + 80; | |
195 t.tm_mon = ((date & 0x1e00) >> 5) - 1; | |
196 t.tm_mday = date & 0x001f; | |
197 ; | |
198 t.tm_hour = (time & 0xf800) >> 11; | |
199 t.tm_min = (time & 0x07e0) >> 5; | |
200 t.tm_sec = (time & 0x001f) << 1; | |
201 return mktime(&t); | |
202 } | |
203 | |
204 | |
205 // Support for reduction procecures | |
206 | |
207 // Compare top strings on string accumulator | |
208 | |
209 /* | |
210 pops top two strings from string accumulator using strcmp | |
211 and returns | |
212 -1 if first string is less than top string | |
213 0 if strings match | |
214 +1 if top string is greater than first string | |
215 */ | |
216 | |
217 int string_comp(void) { | |
218 int n = size(sa); | |
219 array<char> right_string(sa--, n+1); | |
220 return strcmp(sa--,right_string); | |
221 } | |
222 | |
223 /* | |
224 replace the top string on the stack, with a substring where the index | |
225 of the first character in the substring is given by "first" and the index | |
226 of the last character is given by "last" | |
227 */ | |
228 | |
229 void extract(unsigned first, unsigned last) { | |
230 int n = last - first + 1; | |
231 assert (last >= first); | |
232 array <char> x((char *) sa-- + first, n+1); | |
233 x[n] = 0; | |
234 ++sa << x; | |
235 } | |
236 | |
237 /* | |
238 Look up the top string on the accumulator stack in the string dictionary. | |
239 If it has a value in the symbol table, replace it with the symbol table | |
240 value. If the value is numeric, convert it to integer. Otherwise, leave the | |
241 string untouched on the stack. | |
242 */ | |
243 | |
244 void lookup(void) { | |
245 unsigned index = sd[sa]; | |
246 if (index == 0) return; | |
247 switch (st[index].type) { | |
248 case string_type: | |
249 case value_type: { | |
250 --sa; // discard name | |
251 ++sa << st[index].data.text; // stack value | |
252 break; | |
253 } | |
254 case integer_type: { | |
255 --sa; // discard name | |
256 (++sa).printf("%ld", st[index].data.integer); // convert to ascii | |
257 break; | |
258 } | |
259 } | |
260 } | |
261 | |
262 /* | |
263 Find the data type of a symbol and change the reduction accordingly. | |
264 Return the dictionary index for strings, and the value itself for integers. | |
265 */ | |
266 | |
267 long name_type(void) { | |
268 unsigned index = sd << sa--; | |
269 switch (st[index].type) { | |
270 case value_type: | |
271 case string_type: { | |
272 CHANGE_REDUCTION(string_name); | |
273 return index; | |
274 } | |
275 case built_in_function_type: { | |
276 CHANGE_REDUCTION(built_in_name); | |
277 return index; | |
278 } | |
279 case undefined_type: { | |
280 CHANGE_REDUCTION(undefined_name); | |
281 return index; | |
282 } | |
283 case integer_type: return st[index].data.integer; | |
284 } | |
285 return 0; | |
286 } | |
287 | |
288 /* | |
289 Store a string formula. A string formula is a sequence of string identifiers | |
290 the values of which are to be concatenated. The parser has accumulated the | |
291 identifiers on the integer_stack, is. The formula is terminated by a zero | |
292 entry. | |
293 */ | |
294 | |
295 int *formula(void) { | |
296 int n = size(is << 0); | |
297 int *f = new int[n]; | |
298 while (n--) is >> f[n]; | |
299 return f; | |
300 } | |
301 | |
302 /* | |
303 Make a copy of an action that has been identified in the text stream. | |
304 An action pointer was stacked at the beginning of the action text on the | |
305 action stack, as. | |
306 */ | |
307 | |
308 action_pointer copy_action(void) { | |
309 action_pointer ap; | |
310 as >> ap; // pop action descriptor | |
311 unsigned length = (unsigned) (PCB.pointer - ap.pointer); | |
312 unsigned char *action = memdup(ap.pointer,length + 1); | |
313 action[length] = 0; | |
314 ap.pointer = action; | |
315 return ap; | |
316 } | |
317 | |
318 | |
319 // Internal Commands | |
320 | |
321 int echo(int, char *args[]) { | |
322 int i; | |
323 char *cs = ""; | |
324 for (i = 1; args[i]; i++) printf("%s%s", cs, args[i]), cs = " "; | |
325 printf("\n"); | |
326 fflush(stdout); | |
327 return 0; | |
328 } | |
329 | |
330 int pause(int, char *[]) { | |
331 int c; | |
332 while (kbhit()) getch(); // Empty buffer | |
333 printf("Press any key to continue . . .\n"); | |
334 c = getch(); | |
335 if (c == 3) exit(1); | |
336 return c; | |
337 } | |
338 | |
339 int exit_script(int n_args, char *args[]) { | |
340 if (n_args > 1) sscanf(args[1], "%ld", &exitcode); | |
341 exit(exitcode); | |
342 return exitcode; | |
343 } | |
344 | |
345 /* | |
346 int return_script(int n_args, char *args[]) { | |
347 if (n_args > 1) sscanf(args[1], "%ld", &exitcode); | |
348 PCB.exit_flag = AG_SUCCESS_CODE; | |
349 return exitcode; | |
350 } | |
351 */ | |
352 | |
353 int subdirs(int, char *args[]) { | |
354 struct find_t file_block; | |
355 int flag; | |
356 int length = strlen(args[1]); | |
357 array <char> name(args[1],length + 5); | |
358 | |
359 strcat(name, "\\*.*"); | |
360 for(flag = _dos_findfirst(name, _A_SUBDIR, &file_block); | |
361 flag == 0; flag = _dos_findnext(&file_block)) { | |
362 if ((file_block.attrib & _A_SUBDIR) == 0) continue; | |
363 if (strcmp(file_block.name, ".") == 0) continue; | |
364 if (strcmp(file_block.name, "..") == 0) continue; | |
365 puts(file_block.name); | |
366 } | |
367 return 0; | |
368 } | |
369 | |
370 int files(int, char *args[]) { | |
371 struct find_t file_block; | |
372 int flag; | |
373 int length = strlen(args[1]); | |
374 array<char> name(args[1],length + 5); | |
375 | |
376 strcat(name, "\\*.*"); | |
377 for(flag = _dos_findfirst(name, 0, &file_block); | |
378 flag == 0; flag = _dos_findnext(&file_block)) { | |
379 puts(file_block.name); | |
380 } | |
381 return 0; | |
382 } | |
383 | |
384 | |
385 /***** | |
386 | |
387 Execute Command Line | |
388 | |
389 *****/ | |
390 | |
391 | |
392 void perform_action(action_pointer ap) { | |
393 dsl_pcb_type save_pcb = PCB; | |
394 | |
395 PCB.pointer = ap.pointer; | |
396 first_line = ap.line; | |
397 first_column = ap.column; | |
398 dsl(); | |
399 exitflag = PCB.exit_flag != AG_SUCCESS_CODE; | |
400 PCB = save_pcb; | |
401 if (exitflag) PCB.exit_flag = AG_SEMANTIC_ERROR_CODE; | |
402 } | |
403 | |
404 void exec(void) { | |
405 int n = size(ps << (char *) NULL); | |
406 int n_args = n - 1; | |
407 unsigned index; | |
408 unsigned uc_index; | |
409 int i; | |
410 | |
411 array <char *> args(n); | |
412 while (n--) ps >> args[n]; | |
413 | |
414 index = sd[args[0]]; | |
415 while (index && st[index].type == string_type) { | |
416 args[0] = st[index].data.text; // stack value | |
417 index = sd[args[0]]; | |
418 } | |
419 if (debug_switch) { | |
420 for (i = 0; args[i]; i++) fprintf(stderr, "%s ", args[i]); | |
421 fprintf(stderr,"\nPress any key to continue\n"); | |
422 while (!kbhit()); | |
423 getch(); | |
424 } | |
425 strupr(args[0]); | |
426 uc_index = sd[args[0]]; | |
427 if (n_args == 1 && strlen(args[0]) == 2 && args[0][1] == ':') { | |
428 errorlevel = system(args[0]); | |
429 } | |
430 else if ( *args[0] && uc_index) switch (st[uc_index].type) { | |
431 case internal_type: { | |
432 errorlevel = (*st[uc_index].data.proc)(n_args, args); | |
433 break; | |
434 } | |
435 case dos_type: { | |
436 int i; | |
437 for (i = 1; args[i]; i++) args[i][-1] = ' '; | |
438 errorlevel = system(args[0]); | |
439 if (errorlevel == -1) { | |
440 fprintf(stderr,"Error invoking %s: %s\n", args[0], sys_errlist[errno]); | |
441 exit(1); | |
442 } | |
443 break; | |
444 } | |
445 } | |
446 else if ( *args[0] && index) switch (st[index].type) { | |
447 case action_type: { | |
448 action_descriptor d = *st[index].data.action; | |
449 stack <symbol_table_entry> old_entries(d.n_args); | |
450 for (i = 0; i < d.n_args && args[i+1]; i++) { | |
451 old_entries << st[d.args[i]]; | |
452 st[d.args[i]].type = value_type; | |
453 st[d.args[i]].data.text = memdup(args[i+1], 1 + strlen(args[i+1])); | |
454 } | |
455 perform_action(d.ap); | |
456 for (i = d.n_args; i--;) { | |
457 release(st[d.args[i]]); | |
458 old_entries >> st[d.args[i]]; | |
459 } | |
460 break; | |
461 } | |
462 default: { | |
463 errorlevel = spawnvp(P_WAIT,args[0],ARGS); | |
464 if (errorlevel == -1) { | |
465 fprintf(stderr,"Error invoking %s: %s\n", args[0], sys_errlist[errno]); | |
466 exit(1); | |
467 } | |
468 } | |
469 } | |
470 else { | |
471 } | |
472 st[errorlevel_index].data.integer = errorlevel; | |
473 while (n_args--) --sa; | |
474 --ps; | |
475 if (kbhit()) { | |
476 int c = getch(); | |
477 if (c == 3) exit(1); | |
478 ungetch(c); | |
479 } | |
480 } | |
481 | |
482 void discard_temp_file(char *file_name) { | |
483 unlink(file_name); // Delete file | |
484 delete [] file_name; // Free storage for name | |
485 } | |
486 | |
487 | |
488 /***** | |
489 | |
490 Execute Command with piped input | |
491 | |
492 *****/ | |
493 | |
494 | |
495 void exec_pipe_in(char *file_name) { | |
496 { | |
497 redirect sin(STDIN, file_name); | |
498 exec(); | |
499 } | |
500 discard_temp_file(file_name); | |
501 } | |
502 | |
503 | |
504 /***** | |
505 | |
506 Execute Command with redirected I/O | |
507 | |
508 *****/ | |
509 | |
510 void exec_redirect_in(void) { | |
511 redirect sin(STDIN, sa--); | |
512 exec(); | |
513 } | |
514 | |
515 char *exec_pipe_out(void) { | |
516 fflush(stdout); | |
517 redirect sout(STDOUT); | |
518 exec(); | |
519 fflush(stdout); | |
520 return save_file(sout); | |
521 } | |
522 | |
523 char *exec_pipe_in_pipe_out(char *file_name) { | |
524 char *result; | |
525 { | |
526 redirect sin(STDIN, file_name); | |
527 fflush(stdout); | |
528 redirect sout(STDOUT); | |
529 exec(); | |
530 fflush(stdout); | |
531 result = save_file(sout); | |
532 } | |
533 discard_temp_file(file_name); | |
534 return result; | |
535 } | |
536 | |
537 char *exec_redirect_in_pipe_out(void) { | |
538 fflush(stdout); | |
539 redirect sout(STDOUT); | |
540 exec_redirect_in(); | |
541 fflush(stdout); | |
542 return save_file(sout); | |
543 } | |
544 | |
545 unsigned check_integer(void) { | |
546 unsigned index = sd << sa--; | |
547 if (st[index].type == integer_type) return index; | |
548 CHANGE_REDUCTION(undeclared_variable); | |
549 if (st[index].type == string_type) CHANGE_REDUCTION(string_variable); | |
550 return index; | |
551 } | |
552 | |
553 void assign_value(unsigned index) { | |
554 char *text = copy(sa--); | |
555 release(st[index]); | |
556 st[index].type = value_type; | |
557 st[index].data.text = text; | |
558 } | |
559 | |
560 void grab_output(char *temp_name) { | |
561 unlink(sa); // delete old file | |
562 rename(temp_name, sa--); // rename temp file | |
563 delete [] temp_name; // discard name string | |
564 } | |
565 | |
566 void append_output(char *temp_name) { | |
567 fflush(stdout); | |
568 redirect sout(STDOUT, sa--, 1); // append to file named on sa | |
569 redirect sin(STDIN, temp_name); | |
570 char buf[2000]; | |
571 int n; | |
572 while (1) { | |
573 n = read(STDIN, buf, 2000); | |
574 if (n == 0) break; | |
575 write(STDOUT, buf, n); | |
576 } | |
577 fflush(stdout); | |
578 unlink(temp_name); | |
579 delete [] temp_name; | |
580 } | |
581 | |
582 void action_string(void) { | |
583 action_pointer ap; | |
584 as >> ap; | |
585 unsigned length = (unsigned)(PCB.pointer - ap.pointer); | |
586 array <unsigned char> action(ap.pointer,length + 1); | |
587 action[length] = 0; | |
588 fflush(stdout); | |
589 redirect sout(STDOUT); | |
590 char *result; | |
591 | |
592 ap.pointer = action; | |
593 perform_action(ap); | |
594 fflush(stdout); | |
595 result = content(sout); | |
596 ++sa << result; | |
597 delete [] result; | |
598 } | |
599 | |
600 | |
601 // Program Control functions | |
602 | |
603 // If/else statement | |
604 | |
605 int do_if(int pc, int cc) { | |
606 action_pointer ap; | |
607 as >> ap; | |
608 if (!pc && cc && exitflag == 0) { | |
609 unsigned length = (unsigned) (PCB.pointer - ap.pointer); | |
610 array<unsigned char> q(ap.pointer, length+1); | |
611 q[length] = 0; | |
612 ap.pointer = q; | |
613 perform_action(ap); | |
614 } | |
615 return pc || cc; | |
616 } | |
617 | |
618 // While statement | |
619 | |
620 void do_while(int cc) { | |
621 unsigned length; | |
622 action_pointer ap; | |
623 as >> ap; | |
624 if (cc == 0) return; | |
625 length = (unsigned) (PCB.pointer - ap.pointer); | |
626 array<unsigned char> q(ap.pointer, length+1); | |
627 q[length] = 0; | |
628 ap.pointer = q; | |
629 perform_action(ap); | |
630 if (exitflag) return; | |
631 PCB.pointer = CONTEXT.pointer; | |
632 PCB.line = CONTEXT.line; | |
633 PCB.column = CONTEXT.column; | |
634 } | |
635 | |
636 | |
637 // For Statement | |
638 // Note that this is the for statement in the DOS batch languange for, not C | |
639 | |
640 void do_for_loop(void) { | |
641 int n,k; | |
642 char *q; | |
643 char *seps = " \t\v\f\r\n"; | |
644 action_pointer ap; | |
645 as >> ap; | |
646 unsigned length = (unsigned)(PCB.pointer - ap.pointer); | |
647 array <unsigned char> action(ap.pointer, length + 1); | |
648 action[length] = 0; | |
649 | |
650 ap.pointer = action; | |
651 n = size(sa); | |
652 array<char> text(sa--, n + 1); | |
653 | |
654 | |
655 unsigned index = sd << sa--; | |
656 | |
657 ++ps; | |
658 for (q = strtok(text, seps); q != NULL; q = strtok(NULL,seps)) { | |
659 if (*q == '(') { | |
660 int k = strlen(q) - 1; | |
661 assert(q[k] == ')'); | |
662 q[k] = 0; | |
663 q++; | |
664 } | |
665 else if (*q == '"') { | |
666 int k = strlen(q) - 1; | |
667 assert(q[k] == '"'); | |
668 q[k] = 0; | |
669 q++; | |
670 } | |
671 ps << q; | |
672 } | |
673 k = n = size(ps); | |
674 array<char *> args(n); | |
675 while (k--) ps >> args[k]; | |
676 --ps; | |
677 symbol_table_entry save_table_entry = st[index]; | |
678 st[index].type = value_type; | |
679 | |
680 for (k = 0; k < n && exitflag == 0; k++) { | |
681 st[index].data.text = args[k]; | |
682 perform_action(ap); | |
683 } | |
684 st[index] = save_table_entry; | |
685 } | |
686 | |
687 void invoke_script(void) { | |
688 int handle = open(sa, O_TEXT | O_RDONLY); | |
689 long size; | |
690 unsigned n; | |
691 action_pointer ap; | |
692 | |
693 if (handle < 0) { | |
694 fprintf(stderr,"Cannot open %s\n", (char *) sa--); | |
695 exit(1); | |
696 } | |
697 --sa; | |
698 size = filelength(handle); | |
699 assert(size < 65536L); | |
700 array <unsigned char> data((unsigned) size+1); | |
701 n = (unsigned) read(handle,data,(unsigned) size); | |
702 data[n] = 0; | |
703 close(handle); | |
704 exitflag = 0; | |
705 ap.pointer = data; | |
706 ap.line = ap.column = 1; | |
707 perform_action(ap); | |
708 st[errorlevel_index].data.integer = exitcode; | |
709 exitflag = exitcode = 0; | |
710 return; | |
711 } | |
712 | |
713 internal_commands_descriptor internal_commands[] = { | |
714 {"ECHO", echo}, | |
715 {"EXIT", exit_script}, | |
716 {"FILES", files}, | |
717 {"PAUSE", pause}, | |
718 // {"RETURN", return_script}, | |
719 {"SUBDIRS", subdirs}, | |
720 {NULL, NULL} | |
721 }; | |
722 | |
723 struct built_ins_descriptor built_ins[] = { | |
724 {"file_exists", file_exists}, | |
725 {"directory_exists", directory_exists}, | |
726 {"string_length", string_length}, | |
727 {"file_length", get_file_length}, | |
728 {"disk_space", disk_space}, | |
729 {"file_time", file_time}, | |
730 {NULL, NULL} | |
731 }; | |
732 | |
733 void set_extension(char *path, char *e) { | |
734 char s[_MAX_PATH]; | |
735 char drive[_MAX_DRIVE]; | |
736 char dir[_MAX_DIR]; | |
737 char file[_MAX_FNAME]; | |
738 char ext[_MAX_EXT]; | |
739 | |
740 _splitpath(path,drive,dir,file,ext); | |
741 _makepath(s, drive, dir, file, e); | |
742 ++sa << s; | |
743 } | |
744 | |
745 /* | |
746 Note that if this program is called without any arguments, it looks for a | |
747 script with the same name as the executable. Thus, to make an install | |
748 program that picks up the install script without any arguments, you simply | |
749 rename DSL.EXE to INSTALL.EXE. Then when you run it without any arguments | |
750 it will run the INSTALL.DSL script. | |
751 */ | |
752 | |
753 void main(int argc, char *argv[]) { | |
754 int arg_number = 0; | |
755 int i = 1; | |
756 int j = 0; | |
757 | |
758 init_dos_internals(); | |
759 set_arg(j++, argv[0]); | |
760 if (argc > i && (argv[i][0] == '/' || argv[i][0] == '-')) { | |
761 if (toupper(argv[i][1]) != 'D') { | |
762 printf("Unrecognized switch -- /%s\n",argv[i][1]); | |
763 return; | |
764 } | |
765 debug_switch = 1; | |
766 i++; | |
767 } | |
768 if (argc > i) arg_number = i++; | |
769 set_extension(argv[arg_number], "DSL"); | |
770 set_arg(j++,copy(sa)); | |
771 while (i < argc) set_arg(j++, argv[i++]); | |
772 define_integer("argc", j); | |
773 invoke_script(); // Takes file name from sa | |
774 exit(exitcode); | |
775 } | |
776 #line - "dsl-2.cpp" | |
777 | |
778 #ifndef CONVERT_CASE | |
779 #define CONVERT_CASE(c) (c) | |
780 #endif | |
781 #ifndef TAB_SPACING | |
782 #define TAB_SPACING 8 | |
783 #endif | |
784 | |
785 #define ag_rp_1(v) (++sa << sd[v], lookup()) | |
786 | |
787 #define ag_rp_2(v) (++sa << sd[v], lookup()) | |
788 | |
789 #define ag_rp_3(v) (++sa << sd[v], lookup()) | |
790 | |
791 #define ag_rp_4() (sa << '[') | |
792 | |
793 #define ag_rp_5() (concat(sa) << ']', lookup()) | |
794 | |
795 #define ag_rp_6() (concat(sa)) | |
796 | |
797 #define ag_rp_7() (concat(sa)) | |
798 | |
799 #define ag_rp_8(c) (++sa << c) | |
800 | |
801 #define ag_rp_9(c) (sa << c) | |
802 | |
803 #define ag_rp_10() (action_string()) | |
804 | |
805 #define ag_rp_11() (as << CONTEXT) | |
806 | |
807 static void ag_rp_12(void) { | |
808 #line - "dsl-2.syn" | |
809 action_pointer a; as >> a; | |
810 #line - "dsl-2.cpp" | |
811 } | |
812 | |
813 #define ag_rp_13() (--sa) | |
814 | |
815 #define ag_rp_14() (--sa) | |
816 | |
817 #define ag_rp_15() (--sa) | |
818 | |
819 #define ag_rp_16() (++sa) | |
820 | |
821 #define ag_rp_17(c) (sa << c) | |
822 | |
823 #define ag_rp_18() (sa << '(') | |
824 | |
825 #define ag_rp_19() (concat(sa) << ')') | |
826 | |
827 #define ag_rp_20() (++sa) | |
828 | |
829 #define ag_rp_21(c) (sa << c) | |
830 | |
831 #define ag_rp_22(c) (sa << c) | |
832 | |
833 #define ag_rp_23() ('\a') | |
834 | |
835 #define ag_rp_24() ('\b') | |
836 | |
837 #define ag_rp_25() ('\f') | |
838 | |
839 #define ag_rp_26() ('\n') | |
840 | |
841 #define ag_rp_27() ('\r') | |
842 | |
843 #define ag_rp_28() ('\t') | |
844 | |
845 #define ag_rp_29() ('\v') | |
846 | |
847 #define ag_rp_30() ('\\') | |
848 | |
849 #define ag_rp_31() ('\?') | |
850 | |
851 #define ag_rp_32() ('\'') | |
852 | |
853 #define ag_rp_33() ('"') | |
854 | |
855 #define ag_rp_34(d) (d-'0') | |
856 | |
857 #define ag_rp_35(n, d) (8*n + d-'0') | |
858 | |
859 #define ag_rp_36(n, d) (8*n + d-'0') | |
860 | |
861 #define ag_rp_37(n) ((int) n) | |
862 | |
863 #define ag_rp_38(n, d) (16*n + d) | |
864 | |
865 #define ag_rp_39() (exec()) | |
866 | |
867 #define ag_rp_40() (exec_redirect_in()) | |
868 | |
869 #define ag_rp_41(file) (exec_pipe_in(file)) | |
870 | |
871 #define ag_rp_42(file) (grab_output(file)) | |
872 | |
873 #define ag_rp_43(file) (append_output(file)) | |
874 | |
875 #define ag_rp_44() (exec_pipe_out()) | |
876 | |
877 #define ag_rp_45() (exec_redirect_in_pipe_out()) | |
878 | |
879 #define ag_rp_46(file) (exec_pipe_in_pipe_out(file)) | |
880 | |
881 #define ag_rp_47() (sa << 0, ++ps << sa) | |
882 | |
883 #define ag_rp_48() (ps << sa, sa << 0) | |
884 | |
885 #define ag_rp_49() (ps << sa, sa << 0) | |
886 | |
887 #define ag_rp_50(pc) (do_if(pc,1)) | |
888 | |
889 #define ag_rp_51(cc) (cc) | |
890 | |
891 #define ag_rp_52(cc) (cc) | |
892 | |
893 #define ag_rp_53(pc, cc) (do_if(pc,cc!=0)) | |
894 | |
895 #define ag_rp_54(cc) ((int) cc) | |
896 | |
897 #define ag_rp_55(cc) (do_if(0,cc != 0)) | |
898 | |
899 #define ag_rp_56(v) (assign_value(v)) | |
900 | |
901 #define ag_rp_57(v, x) (st[v].data.integer = (int) x) | |
902 | |
903 #define ag_rp_58(v) (st[v].data.text = copy(sa--)) | |
904 | |
905 #define ag_rp_59(v, n, x) (st[v].data.text[(unsigned)n] = (char) x) | |
906 | |
907 #define ag_rp_60() (check_integer()) | |
908 | |
909 #define ag_rp_61(cc) (do_while(cc != 0)) | |
910 | |
911 #define ag_rp_62() (do_for_loop()) | |
912 | |
913 #define ag_rp_63(n) (define_action(n)) | |
914 | |
915 #define ag_rp_64(x) (define_integer(sa--, x)) | |
916 | |
917 #define ag_rp_65() (define_string()) | |
918 | |
919 #define ag_rp_66() (0) | |
920 | |
921 #define ag_rp_67(n) (n+1) | |
922 | |
923 #define ag_rp_68(c) (++sa << c) | |
924 | |
925 #define ag_rp_69(c) (sa << c) | |
926 | |
927 #define ag_rp_70(c) (sa << c) | |
928 | |
929 #define ag_rp_71(c, x, y) (c != 0 ? x : y) | |
930 | |
931 #define ag_rp_72(x, y) (x != 0 || y!=0) | |
932 | |
933 #define ag_rp_73(x, y) (x != 0 && y !=0) | |
934 | |
935 #define ag_rp_74(x, y) (x | y) | |
936 | |
937 #define ag_rp_75(x, y) (x ^ y) | |
938 | |
939 #define ag_rp_76(x, y) (x & y) | |
940 | |
941 #define ag_rp_77(x, y) (x == y) | |
942 | |
943 #define ag_rp_78(x, y) (x != y) | |
944 | |
945 #define ag_rp_79() (string_comp() == 0) | |
946 | |
947 #define ag_rp_80() (string_comp() != 0) | |
948 | |
949 #define ag_rp_81(x, y) (x < y) | |
950 | |
951 #define ag_rp_82(x, y) (x > y) | |
952 | |
953 #define ag_rp_83(x, y) (x <= y) | |
954 | |
955 #define ag_rp_84(x, y) (x >= y) | |
956 | |
957 #define ag_rp_85() (string_comp() < 0) | |
958 | |
959 #define ag_rp_86() (string_comp() > 0) | |
960 | |
961 #define ag_rp_87() (string_comp() <= 0) | |
962 | |
963 #define ag_rp_88() (string_comp() >= 0) | |
964 | |
965 #define ag_rp_89(x, y) (x << (int) y) | |
966 | |
967 #define ag_rp_90(x, y) (x >> (int) y) | |
968 | |
969 #define ag_rp_91(x, y) (x + y) | |
970 | |
971 #define ag_rp_92(x, y) (x - y) | |
972 | |
973 #define ag_rp_93(x, y) (x * y) | |
974 | |
975 #define ag_rp_94(x, y) (x / y) | |
976 | |
977 #define ag_rp_95(x, y) (x % y) | |
978 | |
979 static long ag_rp_96(long x) { | |
980 #line - "dsl-2.syn" | |
981 assert(x); | |
982 return x; | |
983 | |
984 #line - "dsl-2.cpp" | |
985 } | |
986 | |
987 #define ag_rp_97(x) (x) | |
988 | |
989 #define ag_rp_98(x) (-x) | |
990 | |
991 #define ag_rp_99(x) (~x) | |
992 | |
993 #define ag_rp_100(x) (!x) | |
994 | |
995 #define ag_rp_101(n) (((unsigned char *) sa--)[(unsigned) n]) | |
996 | |
997 static long ag_rp_102(void) { | |
998 #line - "dsl-2.syn" | |
999 long temp; | |
1000 sscanf(sa--, "%ld", &temp); | |
1001 return temp; | |
1002 | |
1003 #line - "dsl-2.cpp" | |
1004 } | |
1005 | |
1006 #define ag_rp_103(x) (x) | |
1007 | |
1008 #define ag_rp_104(x) ((*st[(unsigned)x].data.func)()) | |
1009 | |
1010 #define ag_rp_105() (name_type()) | |
1011 | |
1012 #define ag_rp_106() (concat(sa)) | |
1013 | |
1014 #define ag_rp_107(first, last) (extract((unsigned)first, (unsigned) last)) | |
1015 | |
1016 #define ag_rp_108() (sa << '[') | |
1017 | |
1018 #define ag_rp_109() (concat(sa) << ']', lookup()) | |
1019 | |
1020 #define ag_rp_110(x) (++sa << st[(unsigned)x].data.text) | |
1021 | |
1022 #define ag_rp_111(x) (++sa << sd[(unsigned)x]) | |
1023 | |
1024 #define ag_rp_112() (action_string()) | |
1025 | |
1026 #define ag_rp_113(x) (++sa,sa.printf("%ld",x)) | |
1027 | |
1028 #define ag_rp_114() (0) | |
1029 | |
1030 #define ag_rp_115(x, d) (16*x + d-'0') | |
1031 | |
1032 #define ag_rp_116(d) ((d&7) + 9) | |
1033 | |
1034 #define ag_rp_117() (0) | |
1035 | |
1036 #define ag_rp_118(n, d) (8*n + d-'0') | |
1037 | |
1038 #define ag_rp_119(d) (d-'0') | |
1039 | |
1040 #define ag_rp_120(n, d) (10*n + d-'0') | |
1041 | |
1042 #define ag_rp_121(c) (c) | |
1043 | |
1044 #define ag_rp_122(scd) (display_queries(scd)) | |
1045 | |
1046 #define ag_rp_123() (reset(qs), new screen_descriptor) | |
1047 | |
1048 #define ag_rp_124(scd) (scd->title = formula(), scd) | |
1049 | |
1050 #define ag_rp_125(scd, c) (scd->color = (char) c, scd) | |
1051 | |
1052 #define ag_rp_126(scd, c) (scd->entry_color = (char) c, scd) | |
1053 | |
1054 #define ag_rp_127(scd, c) (scd->highlight_color = (char) c, scd) | |
1055 | |
1056 #define ag_rp_128(scd, w, h) (scd->width = (unsigned)w, scd->height = (unsigned) h, scd) | |
1057 | |
1058 #define ag_rp_129(scd, px, py) (scd->pos.x = (unsigned) px,scd->pos.y = (unsigned) py, scd) | |
1059 | |
1060 #define ag_rp_130(scd, q) (qs << *q, delete q, scd) | |
1061 | |
1062 #define ag_rp_131(scd, q) (qs << *q, delete q, scd) | |
1063 | |
1064 #define ag_rp_132(fg, bg) (COLOR((unsigned)fg,(unsigned)bg)) | |
1065 | |
1066 #define ag_rp_133() (clear(new query_item)) | |
1067 | |
1068 #define ag_rp_134(q) (q->id = sd << sa--, q) | |
1069 | |
1070 #define ag_rp_135(q) (q->value = formula(), q) | |
1071 | |
1072 #define ag_rp_136(q) (q->prompt = formula(), q) | |
1073 | |
1074 #define ag_rp_137(q) (q->explanation = formula(),q) | |
1075 | |
1076 #define ag_rp_138() (clear(new query_item)) | |
1077 | |
1078 #define ag_rp_139(q) (q->prompt = formula(), q) | |
1079 | |
1080 #define ag_rp_140(q) (q->explanation = formula(),q) | |
1081 | |
1082 #define ag_rp_141(q) (q->action = copy_action(), q) | |
1083 | |
1084 #define ag_rp_142() (reset(is) << (sd << sa--)) | |
1085 | |
1086 #define ag_rp_143() (is << (sd << sa--)) | |
1087 | |
1088 #define ag_rp_144() (sa << '[') | |
1089 | |
1090 #define ag_rp_145() (concat(sa) << ']') | |
1091 | |
1092 | |
1093 #define READ_COUNTS | |
1094 #define WRITE_COUNTS | |
1095 #undef V | |
1096 #define V(i,t) (*t (&(PCB).vs[(PCB).ssx + i])) | |
1097 #undef VS | |
1098 #define VS(i) (PCB).vs[(PCB).ssx + i] | |
1099 | |
1100 #ifndef GET_CONTEXT | |
1101 #define GET_CONTEXT CONTEXT = (PCB).input_context | |
1102 #endif | |
1103 | |
1104 typedef enum { | |
1105 ag_action_1, | |
1106 ag_action_2, | |
1107 ag_action_3, | |
1108 ag_action_4, | |
1109 ag_action_5, | |
1110 ag_action_6, | |
1111 ag_action_7, | |
1112 ag_action_8, | |
1113 ag_action_9, | |
1114 ag_action_10, | |
1115 ag_action_11, | |
1116 ag_action_12 | |
1117 } ag_parser_action; | |
1118 | |
1119 | |
1120 #ifndef NULL_VALUE_INITIALIZER | |
1121 #define NULL_VALUE_INITIALIZER = { 0 } | |
1122 #endif | |
1123 | |
1124 static dsl-2_vs_type const ag_null_value NULL_VALUE_INITIALIZER; | |
1125 | |
1126 static const unsigned char ag_rpx[] = { | |
1127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
1128 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 0, 6, 0, 7, 8, 9, 0, 10, | |
1129 0, 11, 0, 0, 12, 0, 13, 14, 15, 0, 0, 0, 0, 0, 0, 16, 0, 17, | |
1130 18, 19, 0, 20, 0, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, | |
1131 0, 0, 0, 0, 0, 34, 35, 36, 37, 0, 38, 0, 0, 39, 40, 41, 42, 43, | |
1132 44, 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, | |
1133 0, 51, 52, 53, 54, 55, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 57, | |
1134 58, 59, 60, 61, 0, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 71, 0, | |
1135 72, 0, 73, 0, 74, 0, 75, 0, 76, 0, 77, 78, 79, 80, 0, 81, 82, 83, | |
1136 84, 85, 86, 87, 88, 0, 89, 90, 0, 91, 92, 0, 93, 94, 95, 96, 0, 97, | |
1137 98, 99,100, 0, 0,101,102, 0,103,104, 0,105, 0,106, 0,107,108,109, | |
1138 0,110,111,112,113, 0, 0, 0, 0, 0, 0,114,115, 0,116,117,118,119, | |
1139 120,121, 0, 0,122,123, 0,124,125,126,127,128,129,130,131,132,133, 0, | |
1140 134,135,136,137,138, 0,139,140,141,142,143, 0, 0, 0,144,145 | |
1141 }; | |
1142 | |
1143 static const unsigned char ag_key_itt[] = { | |
1144 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
1145 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
1146 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, | |
1147 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, | |
1148 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | |
1149 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
1150 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
1151 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
1152 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
1153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
1154 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
1155 0 | |
1156 }; | |
1157 | |
1158 static const unsigned short ag_key_pt[] = { | |
1159 0,213, 0,216, 0,220, 0,224, 0,222, 0,221, 0,225, 0,226, | |
1160 0,227, 0,163, 0,164, 0,249, 0,250, 0,251, 0,252, 0,254, | |
1161 0,255, 0,256, 0,257, 0,258, 0,259, 0,260, 0,261, 0,262, | |
1162 0 | |
1163 }; | |
1164 | |
1165 static const unsigned char ag_key_ch[] = { | |
1166 0, 42, 47,255, 47, 97,105,115,255, 42, 47,255, 42, 47,255, 88,120,255, | |
1167 60, 61,255, 61, 62,255,101,111,255,108,110,120,255,105,111,255,116,255, | |
1168 102,110,255, 99,105,116,255, 33, 38, 46, 47, 48, 60, 61, 62, 97, 98, 99, | |
1169 100,101,102,104,105,108,112,115,116,118,119,124,255, 47, 97,105,115,255, | |
1170 47,255, 42, 47,255,110,120,255,105,111,255,102,110,255, 99,105,116,255, | |
1171 47, 97, 98, 99,100,101,102,104,105,108,112,115,116,118,119,255, 42, 47, | |
1172 255,108,110,120,255,105,111,255,102,110,255, 99,105,116,255, 47, 97, 98, | |
1173 99,100,101,102,104,105,108,112,115,116,118,119,255,102,110,255, 99,116, | |
1174 255, 47, 97,102,105,115,119,255, 42, 47,255, 60, 61,255, 61, 62,255, 33, | |
1175 38, 46, 47, 60, 61, 62,124,255, 42, 47,255, 47, 62,255,102,110,255, 99, | |
1176 116,255, 97,102,105,115,119,255, 42, 47,255, 88,120,255, 47, 48,255, 88, | |
1177 120,255, 48,255, 47,255, 34, 39, 63, 92, 97, 98,102,110,114,116,118,120, | |
1178 255, 92,255, 42, 47,255, 60, 61,255, 61, 62,255,105,116,255, 33, 38, 46, | |
1179 47, 60, 61, 62, 97, 98, 99,100,101,102,104,105,108,115,116,124,255, 42, | |
1180 47,255, 47, 62,100,255, 47, 62,255, 47, 98, 99,101,102,104,108,115,116, | |
1181 255, 62,255, 47,119,255, 47,101,255, 88,120,255, 47, 48,255,105,116,255, | |
1182 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,101,102,104,105,108,115,116,124, | |
1183 255, 42, 47,255, 60, 61,255, 61, 62,255,105,116,255, 33, 38, 46, 47, 60, | |
1184 61, 62, 97, 98, 99,101,102,104,105,108,115,116,124,255, 42, 47,255, 60, | |
1185 61,255, 61, 62,255,105,116,255, 33, 38, 46, 47, 60, 61, 62,104,105,108, | |
1186 115,116,124,255, 42, 47,255, 47,255, 60, 61,255, 61, 62,255,105,116,255, | |
1187 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,101,102,104,105,108,115,116,124, | |
1188 255, 33, 60, 61, 62,255,105,116,255, 33, 38, 46, 47, 61, 97, 98, 99,101, | |
1189 102,104,105,108,115,116,124,255,105,116,255, 38, 46, 47, 97, 98, 99,101, | |
1190 102,104,105,108,115,116,124,255,105,116,255, 46, 47, 97, 98, 99,101,102, | |
1191 104,105,108,115,116,124,255, 42, 47,255, 60, 61,255, 61, 62,255,108,110, | |
1192 255,105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,100,101,102,104, | |
1193 105,108,115,116,119,124,255, 47,101,112,255, 47,100,101,112,118,255, 47, | |
1194 99,255, 99,255,105,255, 47, 62,100,255,102,110,255, 99,116,255, 47, 97, | |
1195 101,102,105,115,119,255,101,255, 42, 47,255, 47,105,255, 47,105,255, 60, | |
1196 62,255,100,255,105,255, 46,255, 42, 47,255, 61, 62,255,105,116,255, 33, | |
1197 38, 46, 47, 60, 61, 62, 97, 98, 99,100,101,102,104,105,108,115,116,124, | |
1198 255 | |
1199 }; | |
1200 | |
1201 static const unsigned char ag_key_act[] = { | |
1202 0,0,0,4,2,7,7,7,4,3,3,4,0,0,4,5,5,4,0,0,4,0,0,4,7,5,4,7,7,7,4,7,7,4,5, | |
1203 4,5,6,4,7,7,7,4,3,3,3,2,2,2,3,2,7,7,7,2,2,2,7,2,7,7,2,7,7,7,3,4,3,7,7, | |
1204 7,4,3,4,0,0,4,7,7,4,7,7,4,5,7,4,7,7,7,4,2,7,7,7,7,2,2,7,2,7,7,2,7,7,7, | |
1205 4,0,0,4,7,7,7,4,7,7,4,5,7,4,7,7,7,4,2,7,7,7,7,2,2,7,2,7,7,2,7,7,7,4,5, | |
1206 7,4,7,7,4,3,7,7,2,2,7,4,0,0,4,0,0,4,0,0,4,3,3,3,2,2,3,2,3,4,0,0,4,2,3, | |
1207 4,5,7,4,7,7,4,7,7,2,2,7,4,0,0,4,5,5,4,2,2,4,5,5,4,2,4,3,4,0,0,0,0,0,0, | |
1208 0,0,0,0,0,0,4,2,4,0,0,4,0,0,4,0,0,4,7,7,4,3,3,3,2,2,3,2,7,7,7,7,7,7,7, | |
1209 7,7,2,7,3,4,0,0,4,2,3,7,4,3,3,4,3,7,7,7,7,7,7,7,7,4,3,4,3,7,4,3,7,4,5, | |
1210 5,4,3,2,4,7,7,4,3,3,3,3,3,3,3,7,7,7,7,7,7,7,7,2,7,3,4,0,0,4,0,0,4,0,0, | |
1211 4,7,7,4,3,3,3,2,2,3,2,7,7,7,7,7,7,7,7,2,7,3,4,0,0,4,0,0,4,0,0,4,7,7,4, | |
1212 3,3,3,2,2,3,2,7,7,7,2,7,3,4,0,0,4,2,4,0,0,4,0,0,4,7,7,4,3,3,3,3,2,3,2, | |
1213 7,7,7,7,7,7,7,7,2,7,3,4,3,3,3,3,4,7,7,4,3,3,3,3,3,7,7,7,7,7,7,7,7,2,7, | |
1214 3,4,7,7,4,3,3,3,7,7,7,7,7,7,7,7,2,7,3,4,7,7,4,3,3,7,7,7,7,7,7,7,7,2,7, | |
1215 3,4,0,0,4,0,0,4,0,0,4,7,7,4,7,7,4,3,3,3,2,2,3,2,7,7,7,7,2,7,7,7,7,2,7, | |
1216 7,3,4,3,7,7,4,3,7,7,7,7,4,3,7,4,7,4,7,4,3,3,7,4,5,7,4,7,7,4,3,7,7,7,2, | |
1217 2,7,4,7,4,0,0,4,2,7,4,3,7,4,3,3,4,7,4,7,4,3,4,0,0,4,0,0,4,7,7,4,3,3,3, | |
1218 2,3,3,2,7,7,7,7,7,7,7,7,7,2,7,3,4 | |
1219 }; | |
1220 | |
1221 static const unsigned short ag_key_parm[] = { | |
1222 0, 13, 16, 0, 0, 12, 14, 16, 0, 12, 13, 0, 13, 16, 0, 20, 18, 0, | |
1223 238,236, 0,237,212, 0, 40, 10, 0, 0, 26, 44, 0, 36, 6, 0, 14, 0, | |
1224 2, 8, 0, 22, 30, 16, 0,235,231,248, 0, 0, 0,234, 0, 12, 46, 34, | |
1225 0, 0, 0, 28, 0, 32, 42, 0, 24, 38, 4,230, 0, 16, 12, 14, 16, 0, | |
1226 13, 0, 13, 16, 0, 26, 44, 0, 36, 6, 0, 2, 14, 0, 22, 30, 16, 0, | |
1227 0, 12, 46, 34, 40, 0, 0, 28, 0, 32, 42, 0, 24, 38, 4, 0, 13, 16, | |
1228 0, 0, 26, 44, 0, 36, 6, 0, 2, 14, 0, 22, 30, 16, 0, 0, 12, 46, | |
1229 34, 40, 0, 0, 28, 0, 32, 42, 0, 24, 38, 4, 0, 2, 14, 0, 22, 16, | |
1230 0, 16, 12, 6, 0, 0, 4, 0, 13, 16, 0,238,236, 0,237,212, 0,235, | |
1231 231,248, 0, 0,234, 0,230, 0, 13, 16, 0, 0,212, 0, 2, 14, 0, 22, | |
1232 16, 0, 12, 6, 0, 0, 4, 0, 13, 16, 0, 20, 18, 0, 0, 0, 0, 20, | |
1233 18, 0, 0, 0, 16, 0, 68, 67, 66, 65, 58, 59, 60, 61, 62, 63, 64, 76, | |
1234 0, 0, 0, 13, 16, 0,238,236, 0,237,212, 0, 30, 16, 0,235,231,248, | |
1235 0, 0,234, 0, 12, 46, 34, 10, 26, 36, 28, 14, 32, 0, 24,230, 0, 13, | |
1236 16, 0, 0,212, 10, 0, 16,212, 0, 16, 46, 34, 26, 36, 28, 32, 30, 24, | |
1237 0,212, 0, 16, 4, 0, 16, 0, 0, 20, 18, 0, 13, 0, 0, 30, 16, 0, | |
1238 235,231,248, 16,236,234,237, 12, 46, 34, 26, 36, 28, 14, 32, 0, 24,230, | |
1239 0, 13, 16, 0,238,236, 0,237,212, 0, 30, 16, 0,235,231,248, 0, 0, | |
1240 234, 0, 12, 46, 34, 26, 36, 28, 14, 32, 0, 24,230, 0, 13, 16, 0,238, | |
1241 236, 0,237,212, 0, 30, 16, 0,235,231,248, 0, 0,234, 0, 28, 14, 32, | |
1242 0, 24,230, 0, 13, 16, 0, 0, 0,238,236, 0,237,212, 0, 30, 16, 0, | |
1243 235,231,248, 16, 0,234, 0, 12, 46, 34, 26, 36, 28, 14, 32, 0, 24,230, | |
1244 0,235,236,234,237, 0, 30, 16, 0,235,231,248, 16,234, 12, 46, 34, 26, | |
1245 36, 28, 14, 32, 0, 24,230, 0, 30, 16, 0,231,248, 16, 12, 46, 34, 26, | |
1246 36, 28, 14, 32, 0, 24,230, 0, 30, 16, 0,248, 16, 12, 46, 34, 26, 36, | |
1247 28, 14, 32, 0, 24,230, 0, 13, 16, 0,238,236, 0,237,212, 0, 0, 26, | |
1248 0, 30, 16, 0,235,231,248, 0, 0,234, 0, 12, 46, 34, 10, 0, 36, 28, | |
1249 14, 32, 0, 24, 4,230, 0, 16, 44, 42, 0, 16, 40, 44, 42, 38, 0, 13, | |
1250 34, 0, 34, 0, 8, 0, 16,212, 10, 0, 2, 14, 0, 22, 16, 0, 16, 12, | |
1251 0, 6, 0, 0, 4, 0, 0, 0, 13, 16, 0, 0, 2, 0, 16, 2, 0,236, | |
1252 237, 0, 10, 0, 2, 0,248, 0, 13, 16, 0,237,212, 0, 30, 16, 0,235, | |
1253 231,248, 0,236,234, 0, 12, 46, 34, 10, 26, 36, 28, 14, 32, 0, 24,230, | |
1254 0 | |
1255 }; | |
1256 | |
1257 static const unsigned short ag_key_jmp[] = { | |
1258 0, 0, 0, 0, 1, 0, 6, 9, 0, 15, 17, 0, 0, 0, 0, 0, 0, 0, | |
1259 0, 0, 0, 0, 0, 0, 44, 0, 0, 50, 53, 57, 0, 67, 71, 0, 0, 0, | |
1260 0, 34, 0, 96,101,104, 0, 19, 21, 23, 12, 15, 18, 25, 21, 27, 33, 39, | |
1261 24, 27, 31, 73, 36, 82, 90, 39,109,114,122,127, 0,129,131,137,140, 0, | |
1262 146, 0, 0, 0, 0,172,176, 0,186,190, 0, 0,201, 0,217,222,225, 0, | |
1263 74,148,154,160,165, 77, 80,192, 83,203,211, 86,230,235,243, 0, 0, 0, | |
1264 0,272,275,279, 0,289,293, 0, 0,304, 0,320,325,328, 0,106,248,254, | |
1265 260,265,109,113,295,116,306,314,119,333,338,346, 0, 0,362, 0,364,369, | |
1266 0,351,353,359,139,142,374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,379, | |
1267 381,383,152,155,385,158,387, 0, 0, 0, 0,170,389, 0, 0,400, 0,402, | |
1268 407, 0,391,397,176,179,412, 0, 0, 0, 0, 0, 0, 0,188,191, 0, 0, | |
1269 0, 0,197, 0,417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
1270 0,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,476,479, 0,419,421,423, | |
1271 219,222,425,225,427,433,439,444,446,451,456,465,468,228,484,489, 0, 0, | |
1272 0, 0,251,491,493, 0,495,497, 0,499,501,507,512,517,522,531,539,543, | |
1273 0,548, 0,550,552, 0,557,559, 0, 0, 0, 0,563,279, 0,626,629, 0, | |
1274 565,567,569,571,573,575,577,579,585,591,596,601,606,615,618,285,634,639, | |
1275 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,696,699, 0,641,643,645,307,310, | |
1276 647,313,649,655,661,666,671,676,685,688,316,704,709, 0, 0, 0, 0, 0, | |
1277 0, 0, 0, 0, 0,739,742, 0,711,713,715,338,341,717,344,719,728,731, | |
1278 347,747,752, 0, 0, 0, 0,364, 0, 0, 0, 0, 0, 0, 0,811,814, 0, | |
1279 754,756,758,760,369,762,372,764,770,776,781,786,791,800,803,375,819,824, | |
1280 0,826,828,830,832, 0,891,894, 0,834,836,838,840,842,844,850,856,861, | |
1281 866,871,880,883,402,899,904, 0,959,962, 0,906,908,910,912,918,924,929, | |
1282 934,939,948,951,422,967,972, 0,1025,1028, 0,974,976,978,984,990,995, | |
1283 1000,1005,1014,1017,440,1033,1038, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
1284 0,1067,1070, 0,1099,1102, 0,1040,1042,1044,457,460,1046,463,1048,1054, | |
1285 1060,1065,466,1074,1079,1088,1091,469,1107,1112,1117, 0,1119,1121,1132, | |
1286 0,1138,1140,1147,1158,1164, 0,1172,1174, 0,1179, 0,1184, 0,1186, | |
1287 1188,1190, 0, 0,1207, 0,1209,1214, 0,1192,1194,1200,1204,514,517,1219, | |
1288 0,1224, 0, 0, 0, 0,530,1228, 0,1230,1232, 0,1234,1236, 0,1238, | |
1289 0,1240, 0,1242, 0, 0, 0, 0, 0, 0, 0,1303,1306, 0,1244,1246, | |
1290 1248,548,1250,1252,551,1254,1260,1266,1271,1273,1278,1283,1292,1295,554, | |
1291 1311,1316, 0 | |
1292 }; | |
1293 | |
1294 static const unsigned short ag_key_index[] = { | |
1295 4, 9, 43, 67, 0, 72, 72, 72, 90,123, 0, 0, 0,145, 67, 0, 0, 0, | |
1296 161, 0, 0,173, 0,145,182,194, 0,200,202,217, 0,231,254, 72, 72,258, | |
1297 72, 0, 0, 72,258, 0,261, 0,258,258,258,271,258, 0,273,276,202, 0, | |
1298 282, 0,200,288, 67,217,319,319,350,367,319,319,282,282,282,282, 0, 0, | |
1299 200,200,200,200,200,378,378,397,378,397,288,405,425,425,425,425,443, 67, | |
1300 194,194,194,194,202,472, 0, 0,217,217, 0, 72, 0,200, 0,200, 72, 0, | |
1301 493, 72, 0,497, 72, 0, 72, 0,503,506,503,506, 72, 0,202, 72, 0,508, | |
1302 200, 0,200, 0,282, 0, 0, 0,510,258,258,258,520,528,145, 0, 0, 0, | |
1303 0, 0, 4, 0, 0,397, 0,282,200,282,200,282,200,200,200,200,200,282, | |
1304 200,282, 0,282, 0, 0, 0,282, 0,282, 0,200,200,200,200,200,200,282, | |
1305 200,282,200,200,282,200,282,200,282,200, 0,217, 0, 0, 0,258, 0,202, | |
1306 72, 0, 72, 0,202, 0, 0, 72, 0, 72, 0,202,200,200,202,202,200, 0, | |
1307 72, 0, 0,202,202,202,202,202,258, 0,258, 0,533,536,319, 0,200,288, | |
1308 0,378,378,200,378,378,288,288,288,288,405,405,378,378,378,378,539,288, | |
1309 288,405,425,425,425,425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
1310 0, 0,202,202,542,200,258,258,544, 0,546,546,282,200, 0,557,202,202, | |
1311 202,202,202,202,282,200,200,200, 0, 0, 72, 0,202, 0,282,200, 0,202, | |
1312 0, 0 | |
1313 }; | |
1314 | |
1315 static const unsigned char ag_key_ends[] = { | |
1316 99,116,105,111,110,0, 110,116,0, 116,114,105,110,103,0, 47,0, | |
1317 42,0, 61,0, 38,0, 46,0, 61,0, 99,116,105,111,110,0, | |
1318 117,116,116,111,110,0, 111,108,111,114,0, 102,97,117,108,116,0, | |
1319 115,101,0, 116,114,121,0, 112,108,97,110,97,116,105,111,110,0, | |
1320 101,108,100,0, 114,0, 105,103,104,108,105,103,104,116,0, | |
1321 111,99,97,116,105,111,110,0, 114,111,109,112,116,0, 114,101,101,110,0, | |
1322 122,101,0, 114,105,110,103,0, 105,116,108,101,0, | |
1323 97,114,105,97,98,108,101,0, 104,105,108,101,0, 124,0, 47,0, | |
1324 99,116,105,111,110,0, 110,116,0, 116,114,105,110,103,0, 42,0, | |
1325 99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0, | |
1326 101,102,97,117,108,116,0, 116,114,121,0, | |
1327 112,108,97,110,97,116,105,111,110,0, 101,108,100,0, 114,0, | |
1328 105,103,104,108,105,103,104,116,0, 116,0, 111,99,97,116,105,111,110,0, | |
1329 114,111,109,112,116,0, 114,101,101,110,0, 122,101,0, | |
1330 114,105,110,103,0, 105,116,108,101,0, 97,114,105,97,98,108,101,0, | |
1331 104,105,108,101,0, 99,116,105,111,110,0, 117,116,116,111,110,0, | |
1332 111,108,111,114,0, 101,102,97,117,108,116,0, 115,101,0, | |
1333 116,114,121,0, 112,108,97,110,97,116,105,111,110,0, 101,108,100,0, | |
1334 114,0, 105,103,104,108,105,103,104,116,0, 116,0, | |
1335 111,99,97,116,105,111,110,0, 114,111,109,112,116,0, 114,101,101,110,0, | |
1336 122,101,0, 114,105,110,103,0, 105,116,108,101,0, | |
1337 97,114,105,97,98,108,101,0, 104,105,108,101,0, 47,0, | |
1338 99,116,105,111,110,0, 111,114,0, 116,0, 114,101,101,110,0, | |
1339 114,105,110,103,0, 104,105,108,101,0, 61,0, 38,0, 46,0, 61,0, | |
1340 124,0, 62,0, 99,116,105,111,110,0, 111,114,0, 116,0, | |
1341 114,101,101,110,0, 114,105,110,103,0, 104,105,108,101,0, 47,0, | |
1342 61,0, 38,0, 46,0, 61,0, 99,116,105,111,110,0, 117,116,116,111,110,0, | |
1343 111,108,111,114,0, 111,0, 110,116,114,121,0, 105,101,108,100,0, | |
1344 105,103,104,108,105,103,104,116,0, 110,116,0, | |
1345 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, | |
1346 105,116,108,101,0, 124,0, 62,0, 111,0, 47,0, 62,0, 47,0, | |
1347 117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0, | |
1348 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, | |
1349 111,99,97,116,105,111,110,0, 105,122,101,0, 105,116,108,101,0, | |
1350 62,0, 47,0, 104,105,108,101,0, 47,0, 108,115,101,0, 42,0, 61,0, | |
1351 38,0, 46,0, 47,0, 61,0, 61,0, 61,0, 99,116,105,111,110,0, | |
1352 117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0, | |
1353 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0, | |
1354 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, | |
1355 105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 61,0, | |
1356 99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0, | |
1357 110,116,114,121,0, 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, | |
1358 110,116,0, 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, | |
1359 105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 61,0, | |
1360 105,103,104,108,105,103,104,116,0, 110,116,0, | |
1361 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, | |
1362 105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 47,0, 61,0, | |
1363 99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0, | |
1364 110,116,114,121,0, 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, | |
1365 110,116,0, 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, | |
1366 105,116,108,101,0, 124,0, 61,0, 61,0, 61,0, 61,0, 61,0, 38,0, | |
1367 46,0, 47,0, 61,0, 99,116,105,111,110,0, 117,116,116,111,110,0, | |
1368 111,108,111,114,0, 110,116,114,121,0, 105,101,108,100,0, | |
1369 105,103,104,108,105,103,104,116,0, 110,116,0, | |
1370 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, | |
1371 105,116,108,101,0, 124,0, 38,0, 46,0, 47,0, 99,116,105,111,110,0, | |
1372 117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0, | |
1373 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0, | |
1374 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, | |
1375 105,116,108,101,0, 124,0, 46,0, 47,0, 99,116,105,111,110,0, | |
1376 117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0, | |
1377 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0, | |
1378 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, | |
1379 105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 61,0, | |
1380 99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0, | |
1381 111,0, 115,101,0, 116,114,121,0, 105,101,108,100,0, | |
1382 105,103,104,108,105,103,104,116,0, 110,116,0, | |
1383 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, | |
1384 105,116,108,101,0, 104,105,108,101,0, 124,0, 47,0, | |
1385 120,112,108,97,110,97,116,105,111,110,0, 114,111,109,112,116,0, | |
1386 47,0, 101,102,97,117,108,116,0, 120,112,108,97,110,97,116,105,111,110,0, | |
1387 114,111,109,112,116,0, 97,114,105,97,98,108,101,0, 42,0, | |
1388 111,108,111,114,0, 111,108,111,114,0, 110,0, 47,0, 62,0, 111,0, | |
1389 47,0, 99,116,105,111,110,0, 108,115,101,0, 111,114,0, 116,0, | |
1390 114,101,101,110,0, 114,105,110,103,0, 104,105,108,101,0, | |
1391 108,115,101,0, 102,0, 47,0, 102,0, 61,0, 61,0, 111,0, 102,0, | |
1392 46,0, 61,0, 38,0, 46,0, 61,0, 61,0, 99,116,105,111,110,0, | |
1393 117,116,116,111,110,0, 111,108,111,114,0, 111,0, 110,116,114,121,0, | |
1394 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0, | |
1395 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, | |
1396 105,116,108,101,0, 124,0, | |
1397 }; | |
1398 | |
1399 #define AG_TCV(x) ag_tcv[(x)] | |
1400 | |
1401 static const unsigned short ag_tcv[] = { | |
1402 26,194,194,194,194,194,194,194,194, 9, 15, 9, 9, 9,194,194,194,194, | |
1403 194,194,194,194,194,194,194,194, 26,194,194,194,194,194, 9,245, 54,205, | |
1404 194,243,233,170,215,214,241,239,253,240,194,242,168,195,195,195,195,195, | |
1405 195,195,196,196,228,218,209,217,211,229,219,167,167,167,167,167,167,197, | |
1406 197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, | |
1407 197,204, 74,203,232,197,194,167,167,167,167,167,167,197,197,197,197,197, | |
1408 197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,207,210,206, | |
1409 244,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194, | |
1410 194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194, | |
1411 194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194, | |
1412 194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194, | |
1413 194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194, | |
1414 194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194, | |
1415 194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194, | |
1416 194,194,194,194 | |
1417 }; | |
1418 | |
1419 #ifndef SYNTAX_ERROR | |
1420 #define SYNTAX_ERROR fprintf(stderr,"%s, line %d, column %d\n", \ | |
1421 (PCB).error_message, (PCB).line, (PCB).column) | |
1422 #endif | |
1423 | |
1424 #ifndef FIRST_LINE | |
1425 #define FIRST_LINE 1 | |
1426 #endif | |
1427 | |
1428 #ifndef FIRST_COLUMN | |
1429 #define FIRST_COLUMN 1 | |
1430 #endif | |
1431 | |
1432 #ifndef PARSER_STACK_OVERFLOW | |
1433 #define PARSER_STACK_OVERFLOW {fprintf(stderr, \ | |
1434 "\nParser stack overflow, line %d, column %d\n",\ | |
1435 (PCB).line, (PCB).column);} | |
1436 #endif | |
1437 | |
1438 #ifndef REDUCTION_TOKEN_ERROR | |
1439 #define REDUCTION_TOKEN_ERROR {fprintf(stderr, \ | |
1440 "\nReduction token error, line %d, column %d\n", \ | |
1441 (PCB).line, (PCB).column);} | |
1442 #endif | |
1443 | |
1444 | |
1445 #ifndef INPUT_CODE | |
1446 #define INPUT_CODE(T) (T) | |
1447 #endif | |
1448 | |
1449 typedef enum | |
1450 {ag_accept_key, ag_set_key, ag_jmp_key, ag_end_key, ag_no_match_key, | |
1451 ag_cf_accept_key, ag_cf_set_key, ag_cf_end_key} key_words; | |
1452 | |
1453 static void ag_get_key_word(int ag_k) { | |
1454 int ag_save = (int) ((PCB).la_ptr - (PCB).pointer); | |
1455 const unsigned char *ag_p; | |
1456 int ag_ch; | |
1457 while (1) { | |
1458 switch (ag_key_act[ag_k]) { | |
1459 case ag_cf_end_key: { | |
1460 const unsigned char *sp = ag_key_ends + ag_key_jmp[ag_k]; | |
1461 do { | |
1462 if ((ag_ch = *sp++) == 0) { | |
1463 int ag_k1 = ag_key_parm[ag_k]; | |
1464 int ag_k2 = ag_key_pt[ag_k1]; | |
1465 if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)]) goto ag_fail; | |
1466 (PCB).token_number = (dsl-2_token_type) ag_key_pt[ag_k1 + 1]; | |
1467 return; | |
1468 } | |
1469 } while (CONVERT_CASE(*(PCB).la_ptr++) == ag_ch); | |
1470 goto ag_fail; | |
1471 } | |
1472 case ag_end_key: { | |
1473 const unsigned char *sp = ag_key_ends + ag_key_jmp[ag_k]; | |
1474 do { | |
1475 if ((ag_ch = *sp++) == 0) { | |
1476 (PCB).token_number = (dsl-2_token_type) ag_key_parm[ag_k]; | |
1477 return; | |
1478 } | |
1479 } while (CONVERT_CASE(*(PCB).la_ptr++) == ag_ch); | |
1480 } | |
1481 case ag_no_match_key: | |
1482 ag_fail: | |
1483 (PCB).la_ptr = (PCB).pointer + ag_save; | |
1484 return; | |
1485 case ag_cf_set_key: { | |
1486 int ag_k1 = ag_key_parm[ag_k]; | |
1487 int ag_k2 = ag_key_pt[ag_k1]; | |
1488 ag_k = ag_key_jmp[ag_k]; | |
1489 if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)]) break; | |
1490 ag_save = (int) ((PCB).la_ptr - (PCB).pointer); | |
1491 (PCB).token_number = (dsl-2_token_type) ag_key_pt[ag_k1+1]; | |
1492 break; | |
1493 } | |
1494 case ag_set_key: | |
1495 ag_save = (int) ((PCB).la_ptr - (PCB).pointer); | |
1496 (PCB).token_number = (dsl-2_token_type) ag_key_parm[ag_k]; | |
1497 case ag_jmp_key: | |
1498 ag_k = ag_key_jmp[ag_k]; | |
1499 break; | |
1500 case ag_accept_key: | |
1501 (PCB).token_number = (dsl-2_token_type) ag_key_parm[ag_k]; | |
1502 return; | |
1503 case ag_cf_accept_key: { | |
1504 int ag_k1 = ag_key_parm[ag_k]; | |
1505 int ag_k2 = ag_key_pt[ag_k1]; | |
1506 if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)]) | |
1507 (PCB).la_ptr = (PCB).pointer + ag_save; | |
1508 else (PCB).token_number = (dsl-2_token_type) ag_key_pt[ag_k1+1]; | |
1509 return; | |
1510 } | |
1511 } | |
1512 ag_ch = CONVERT_CASE(*(PCB).la_ptr++); | |
1513 ag_p = &ag_key_ch[ag_k]; | |
1514 if (ag_ch <= 255) while (*ag_p < ag_ch) ag_p++; | |
1515 if (ag_ch > 255 || *ag_p != ag_ch) { | |
1516 (PCB).la_ptr = (PCB).pointer + ag_save; | |
1517 return; | |
1518 } | |
1519 ag_k = (int) (ag_p - ag_key_ch); | |
1520 } | |
1521 } | |
1522 | |
1523 | |
1524 #ifndef AG_NEWLINE | |
1525 #define AG_NEWLINE 10 | |
1526 #endif | |
1527 | |
1528 #ifndef AG_RETURN | |
1529 #define AG_RETURN 13 | |
1530 #endif | |
1531 | |
1532 #ifndef AG_FORMFEED | |
1533 #define AG_FORMFEED 12 | |
1534 #endif | |
1535 | |
1536 #ifndef AG_TABCHAR | |
1537 #define AG_TABCHAR 9 | |
1538 #endif | |
1539 | |
1540 static void ag_track(void) { | |
1541 int ag_k = (int) ((PCB).la_ptr - (PCB).pointer); | |
1542 while (ag_k--) { | |
1543 switch (*(PCB).pointer++) { | |
1544 case AG_NEWLINE: | |
1545 (PCB).column = 1, (PCB).line++; | |
1546 case AG_RETURN: | |
1547 case AG_FORMFEED: | |
1548 break; | |
1549 case AG_TABCHAR: | |
1550 (PCB).column += (TAB_SPACING) - ((PCB).column - 1) % (TAB_SPACING); | |
1551 break; | |
1552 default: | |
1553 (PCB).column++; | |
1554 } | |
1555 } | |
1556 } | |
1557 | |
1558 | |
1559 static void ag_prot(void) { | |
1560 int ag_k; | |
1561 ag_k = 128 - ++(PCB).btsx; | |
1562 if (ag_k <= (PCB).ssx) { | |
1563 (PCB).exit_flag = AG_STACK_ERROR_CODE; | |
1564 PARSER_STACK_OVERFLOW; | |
1565 return; | |
1566 } | |
1567 (PCB).bts[(PCB).btsx] = (PCB).sn; | |
1568 (PCB).bts[ag_k] = (PCB).ssx; | |
1569 (PCB).vs[ag_k] = (PCB).vs[(PCB).ssx]; | |
1570 (PCB).ss[ag_k] = (PCB).ss[(PCB).ssx]; | |
1571 (PCB).cs[ag_k] = (PCB).cs[(PCB).ssx]; | |
1572 } | |
1573 | |
1574 static void ag_undo(void) { | |
1575 if ((PCB).drt == -1) return; | |
1576 while ((PCB).btsx) { | |
1577 int ag_k = 128 - (PCB).btsx; | |
1578 (PCB).sn = (PCB).bts[(PCB).btsx--]; | |
1579 (PCB).ssx = (PCB).bts[ag_k]; | |
1580 (PCB).vs[(PCB).ssx] = (PCB).vs[ag_k]; | |
1581 (PCB).ss[(PCB).ssx] = (PCB).ss[ag_k]; | |
1582 (PCB).cs[(PCB).ssx] = (PCB).cs[ag_k]; | |
1583 } | |
1584 (PCB).token_number = (dsl-2_token_type) (PCB).drt; | |
1585 (PCB).ssx = (PCB).dssx; | |
1586 (PCB).sn = (PCB).dsn; | |
1587 (PCB).drt = -1; | |
1588 } | |
1589 | |
1590 | |
1591 | |
1592 static const int ag_rtt[] = { | |
1593 28, 29, 30, 0,153,156,154,157, 0 | |
1594 }; | |
1595 | |
1596 static const unsigned short ag_tstt[] = { | |
1597 227,226,225,207,26,16,15,13,9,0,1,10,11,198,199, | |
1598 253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,211,210, | |
1599 209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,15,13,12,9,0, | |
1600 10,11, | |
1601 13,9,0,1,10,11, | |
1602 227,226,225,207,26,16,15,0,7,20,21,22,23,24,25,42,115,117,118,200, | |
1603 253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,211,210, | |
1604 209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,15,9,0,18,19, | |
1605 197,167,13,9,0,1,10,11,198,199, | |
1606 197,167,13,9,0,1,10,11,198,199, | |
1607 253,245,244,243,242,241,240,239,233,232,229,228,218,197,196,195,194,170,168, | |
1608 167,74,13,9,0,1,10,11,198,199, | |
1609 262,261,260,259,258,257,256,255,254,253,252,251,250,249,245,244,243,242,241, | |
1610 240,239,233,232,229,228,227,226,225,224,220,219,218,217,216,215,211,210, | |
1611 209,207,206,205,197,196,195,194,170,168,167,74,54,16,15,13,9,0,1,10,11, | |
1612 198,199, | |
1613 262,261,260,259,258,257,256,255,254,253,252,251,250,249,245,244,243,242,241, | |
1614 240,239,233,232,229,228,227,226,225,224,220,219,218,217,216,215,213,211, | |
1615 210,209,207,206,205,197,196,195,194,170,168,167,74,54,26,16,15,13,9,0,1, | |
1616 10,11,198,199, | |
1617 197,167,0,8,223, | |
1618 197,167,0,8,223, | |
1619 253,245,244,243,242,241,240,239,233,232,229,228,218,197,196,195,194,170,168, | |
1620 167,74,0,2,116,208, | |
1621 253,249,245,244,243,242,241,240,239,233,232,229,228,227,226,225,224,220,218, | |
1622 216,215,206,197,196,195,194,170,168,167,74,54,16,15,0,7,88,89,200, | |
1623 227,226,225,207,16,15,0,7,21,22,23,42,115,117,118,200, | |
1624 26,0, | |
1625 253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,211,210, | |
1626 209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,9,0, | |
1627 15,0, | |
1628 253,248,243,242,241,240,239,238,237,236,235,234,233,232,231,230,229,228,219, | |
1629 218,217,215,214,212,211,210,209,207,206,205,204,197,196,195,168,167,26, | |
1630 16,15,13,9,0,1,10,11,120,198,199, | |
1631 217,0,104, | |
1632 217,0,104, | |
1633 253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,212,211, | |
1634 210,209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,16,15,13, | |
1635 9,0,1,10,11,198,199, | |
1636 253,245,244,243,242,241,240,239,233,232,229,228,218,207,197,196,195,194,170, | |
1637 168,167,74,0,2,39,40,42,208, | |
1638 16,15,0,7,200, | |
1639 253,249,245,244,243,242,241,240,239,233,232,229,228,227,226,225,224,220,218, | |
1640 216,215,206,197,196,195,194,170,168,167,74,54,0,2,4,5,22,27,28,29,30,35, | |
1641 47,53,79,80,84,90,91,92,93,95,96,97,99,100,101,102,103,110,111,115,117, | |
1642 118,173,174,201,202,208, | |
1643 253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,211,210,209, | |
1644 207,206,205,197,196,195,194,170,168,167,164,163,74,54,16,15,13,9,0,1,10, | |
1645 11,198,199, | |
1646 217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223, | |
1647 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1648 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
1649 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
1650 246,247, | |
1651 253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,211,210,209, | |
1652 207,206,205,197,196,195,194,170,168,167,74,54,16,15,0,2,4,5,7,36,39,40, | |
1653 41,42,43,47,53,83,85,86,104,108,200,201,202,208, | |
1654 253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,211,210, | |
1655 209,207,206,205,204,203,197,196,195,194,170,168,167,76,74,68,67,66,65, | |
1656 64,63,62,61,60,59,58,54,9,0,55,57,69,70,71,72,73, | |
1657 253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,211,210, | |
1658 209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,15,9,0,50,52, | |
1659 262,257,256,255,254,253,252,251,250,248,245,244,243,242,241,240,239,238,237, | |
1660 236,235,234,233,232,231,230,229,228,227,226,225,221,219,218,217,215,214, | |
1661 212,211,210,209,207,206,205,204,203,197,196,195,194,170,168,167,74,54, | |
1662 26,16,15,13,9,0,1,10,11,198,199, | |
1663 253,245,244,243,242,241,240,239,233,232,229,228,221,219,218,217,215,214,212, | |
1664 211,210,209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,16,15, | |
1665 13,9,0,1,10,11,198,199, | |
1666 215,13,9,0,1,10,11,198,199, | |
1667 207,13,9,0,1,10,11,198,199, | |
1668 204,0,31, | |
1669 215,13,9,0,1,10,11,198,199, | |
1670 215,0,49, | |
1671 207,0,42, | |
1672 197,167,13,9,0,1,10,11,198,199, | |
1673 205,0,36, | |
1674 215,0,49, | |
1675 262,257,256,255,254,252,251,250,206,16,15,0,7,41,175,177,178,179,180,182, | |
1676 183,184,185,186,191,200, | |
1677 197,167,0,8,223, | |
1678 219,217,0,104,108, | |
1679 217,0,104, | |
1680 217,0,104, | |
1681 212,211,210,0,85,86,87, | |
1682 253,245,244,243,242,241,240,239,233,232,229,228,218,215,212,211,210,209,207, | |
1683 206,197,196,195,194,170,168,167,74,54,16,15,0,2,4,5,27,28,29,30,33,37, | |
1684 39,40,42,47,53,81,82,201,202,208, | |
1685 207,0,39,40,42, | |
1686 220,0,102,110, | |
1687 213,206,16,15,0,7,88,89,200, | |
1688 206,16,15,0,7,88,89,200, | |
1689 206,0,41, | |
1690 253,245,244,243,242,241,240,239,233,232,229,228,218,217,215,207,205,197,196, | |
1691 195,194,170,168,167,164,163,74,54,13,9,0,1,10,11,198,199, | |
1692 217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223, | |
1693 217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,8,36,39,40,42,49, | |
1694 53,104,109,151,152,153,154,156,157,160,161,162,165,202,223,246,247, | |
1695 219,204,0,31,108, | |
1696 227,226,225,218,207,206,205,26,16,15,0,36,105,106, | |
1697 253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,211,210, | |
1698 209,207,206,205,204,203,197,196,195,194,168,167,76,74,68,67,66,65,64,63, | |
1699 62,61,60,59,58,54,9,0,57,69,70,71,72,73,171, | |
1700 196,195,168,0, | |
1701 195,168,0, | |
1702 196,195,168,167,0,78, | |
1703 253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,211,210,209, | |
1704 207,206,205,197,196,195,194,170,168,167,74,54,16,15,13,9,0,1,10,11,198, | |
1705 199, | |
1706 262,257,256,255,254,253,252,251,250,248,243,242,241,240,239,238,237,236,235, | |
1707 234,233,232,231,230,229,228,227,226,225,219,218,217,214,212,211,210,209, | |
1708 207,206,205,204,26,16,15,13,9,0,1,10,11,198,199, | |
1709 262,257,256,255,254,253,252,251,250,248,243,242,241,240,239,238,237,236,235, | |
1710 234,233,232,231,230,229,228,227,226,225,219,218,217,214,212,211,210,209, | |
1711 207,206,205,204,26,16,15,13,9,0,1,10,11,198,199, | |
1712 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1713 10,11,198,199, | |
1714 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1715 10,11,198,199, | |
1716 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1717 10,11,198,199, | |
1718 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1719 10,11,198,199, | |
1720 215,0,49,155, | |
1721 217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,152,156,157,202,223, | |
1722 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1723 8,36,39,40,42,49,53,104,109,142,143,144,149,150,151,152,153,154,156,157, | |
1724 160,161,162,165,202,223,246,247, | |
1725 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1726 8,36,39,40,42,49,53,104,109,142,143,144,149,150,151,152,153,154,156,157, | |
1727 160,161,162,165,202,223,246,247, | |
1728 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1729 8,36,39,40,42,49,53,104,109,142,143,144,149,150,151,152,153,154,156,157, | |
1730 160,161,162,165,202,223,246,247, | |
1731 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1732 8,36,39,40,42,49,53,104,109,142,143,144,149,150,151,152,153,154,156,157, | |
1733 160,161,162,165,202,223,246,247, | |
1734 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1735 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
1736 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
1737 246,247, | |
1738 243,242,241,0,145,146,148, | |
1739 240,239,0,142,143, | |
1740 219,204,0,31,108, | |
1741 238,212,0,87,140, | |
1742 237,236,235,234,211,209,205,0,36,83,86,134,135,137,138, | |
1743 237,236,211,209,0,83,86,137,138, | |
1744 235,234,0,134,135, | |
1745 233,0,132, | |
1746 232,0,130, | |
1747 210,0,85, | |
1748 231,0,127, | |
1749 230,229,0,122,125, | |
1750 227,226,225,218,207,206,26,16,15,0,105,106, | |
1751 253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,211,210,209, | |
1752 207,206,205,197,196,195,194,170,168,167,164,163,74,54,16,15,13,9,0,1,10, | |
1753 11,198,199, | |
1754 253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,211,210,209, | |
1755 207,206,205,197,196,195,194,170,168,167,164,163,74,54,16,15,13,9,0,1,10, | |
1756 11,198,199, | |
1757 253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,211,210,209, | |
1758 207,206,205,197,196,195,194,170,168,167,164,163,74,54,16,15,13,9,0,1,10, | |
1759 11,198,199, | |
1760 253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,211,210,209, | |
1761 207,206,205,197,196,195,194,170,168,167,164,163,74,54,16,15,13,9,0,1,10, | |
1762 11,198,199, | |
1763 204,0,31, | |
1764 262,257,256,255,254,253,252,251,250,248,245,244,243,242,241,240,239,238,237, | |
1765 236,235,234,233,232,231,230,229,228,227,226,225,221,220,219,218,217,215, | |
1766 214,213,212,211,210,209,207,206,205,204,203,197,196,195,194,170,168,167, | |
1767 74,54,26,16,15,13,9,0,1,10,11,198,199, | |
1768 195,168,0, | |
1769 196,195,168,167,0,77,78, | |
1770 195,168,0, | |
1771 195,168,0, | |
1772 215,0,47, | |
1773 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
1774 170,168,167,74,54,13,9,0,1,10,11,198,199, | |
1775 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
1776 170,168,167,74,54,0,32, | |
1777 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1778 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
1779 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
1780 246,247, | |
1781 253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170, | |
1782 168,167,74,54,0,2,4,5,27,28,29,30,47,53,201,202,208, | |
1783 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1784 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
1785 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
1786 246,247, | |
1787 207,13,9,0,1,10,11,198,199, | |
1788 207,0,42, | |
1789 261,260,207,206,16,15,0,7,39,40,41,42,189,190,200, | |
1790 207,13,9,0,1,10,11,198,199, | |
1791 207,0,42, | |
1792 261,260,259,258,206,16,15,0,7,41,187,188,189,190,200, | |
1793 217,13,9,0,1,10,11,198,199, | |
1794 217,0,104, | |
1795 217,13,9,0,1,10,11,198,199, | |
1796 217,0,104, | |
1797 256,13,9,0,1,10,11,198,199, | |
1798 256,0,177,185, | |
1799 256,13,9,0,1,10,11,198,199, | |
1800 256,0,177,185, | |
1801 217,13,9,0,1,10,11,198,199, | |
1802 217,0,104, | |
1803 16,15,0,7,200, | |
1804 217,13,9,0,1,10,11,198,199, | |
1805 217,0,104, | |
1806 222,0,112, | |
1807 217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,8,36,39,40,42,49, | |
1808 53,104,109,151,152,153,154,156,157,160,161,162,165,202,223,246,247, | |
1809 217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223, | |
1810 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1811 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
1812 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
1813 246,247, | |
1814 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
1815 170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208, | |
1816 253,245,244,243,242,241,240,239,233,232,229,228,218,217,215,207,205,197,196, | |
1817 195,194,170,168,167,164,163,74,54,13,9,0,1,10,11,198,199, | |
1818 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
1819 170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208, | |
1820 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
1821 170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208, | |
1822 253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170, | |
1823 168,167,74,54,0,2,4,5,27,28,29,30,35,47,53,80,201,202,208, | |
1824 204,0,31, | |
1825 205,0,36, | |
1826 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
1827 170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208, | |
1828 212,211,210,209,206,16,15,0,83, | |
1829 253,249,245,244,243,242,241,240,239,233,232,229,228,227,226,225,224,220,218, | |
1830 216,215,197,196,195,194,170,168,167,74,54,16,15,0,2,4,5,7,22,27,28,29, | |
1831 30,35,47,53,79,80,84,93,95,96,97,99,100,101,102,103,110,111,115,117,118, | |
1832 173,174,200,201,202,208, | |
1833 213,0,94, | |
1834 253,249,245,244,243,242,241,240,239,233,232,229,228,227,226,225,224,220,218, | |
1835 216,215,197,196,195,194,170,168,167,74,54,16,15,0,2,4,5,7,22,27,28,29, | |
1836 30,35,47,53,79,80,84,93,95,96,97,99,100,101,102,103,110,111,115,117,118, | |
1837 173,174,200,201,202,208, | |
1838 214,205,0,36,48, | |
1839 219,204,0,31,108, | |
1840 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
1841 170,168,167,74,54,0,159, | |
1842 215,0,49, | |
1843 217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,151,152,156,157,202,223, | |
1844 227,226,225,207,206,26,16,15,13,9,0,1,10,11,198,199, | |
1845 170,0, | |
1846 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
1847 170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208, | |
1848 237,236,235,234,214,211,209,205,0,36,48,83,86,134,135,137,138, | |
1849 214,0,48, | |
1850 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1851 10,11,198,199, | |
1852 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1853 8,36,39,40,42,49,53,104,109,142,143,144,147,149,150,151,152,153,154,156, | |
1854 157,160,161,162,165,202,223,246,247, | |
1855 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1856 10,11,198,199, | |
1857 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1858 8,36,39,40,42,49,53,104,109,142,143,144,147,149,150,151,152,153,154,156, | |
1859 157,160,161,162,165,202,223,246,247, | |
1860 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1861 10,11,198,199, | |
1862 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1863 8,36,39,40,42,49,53,104,109,142,143,144,149,150,151,152,153,154,156,157, | |
1864 160,161,162,165,202,223,246,247, | |
1865 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1866 8,36,39,40,42,49,53,104,109,141,142,143,144,149,150,151,152,153,154,156, | |
1867 157,160,161,162,165,202,223,246,247, | |
1868 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1869 8,36,39,40,42,49,53,104,109,141,142,143,144,149,150,151,152,153,154,156, | |
1870 157,160,161,162,165,202,223,246,247, | |
1871 217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,8,36,39,40,42,49, | |
1872 53,104,109,151,152,153,154,156,157,160,161,162,165,202,223,246,247, | |
1873 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1874 8,36,39,40,42,49,53,104,109,139,141,142,143,144,149,150,151,152,153,154, | |
1875 156,157,160,161,162,165,202,223,246,247, | |
1876 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1877 10,11,198,199, | |
1878 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1879 8,36,39,40,42,49,53,104,109,139,141,142,143,144,149,150,151,152,153,154, | |
1880 156,157,160,161,162,165,202,223,246,247, | |
1881 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1882 10,11,198,199, | |
1883 217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223, | |
1884 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1885 10,11,198,199, | |
1886 217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223, | |
1887 217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223, | |
1888 217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223, | |
1889 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1890 10,11,198,199, | |
1891 217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223, | |
1892 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1893 10,11,198,199, | |
1894 217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223, | |
1895 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1896 8,36,39,40,42,49,53,104,109,136,139,141,142,143,144,149,150,151,152,153, | |
1897 154,156,157,160,161,162,165,202,223,246,247, | |
1898 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1899 8,36,39,40,42,49,53,104,109,136,139,141,142,143,144,149,150,151,152,153, | |
1900 154,156,157,160,161,162,165,202,223,246,247, | |
1901 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1902 8,36,39,40,42,49,53,104,109,136,139,141,142,143,144,149,150,151,152,153, | |
1903 154,156,157,160,161,162,165,202,223,246,247, | |
1904 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1905 8,36,39,40,42,49,53,104,109,136,139,141,142,143,144,149,150,151,152,153, | |
1906 154,156,157,160,161,162,165,202,223,246,247, | |
1907 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1908 8,36,39,40,42,49,53,104,107,109,133,136,139,141,142,143,144,149,150,151, | |
1909 152,153,154,156,157,160,161,162,165,202,223,246,247, | |
1910 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1911 8,36,39,40,42,49,53,104,107,109,133,136,139,141,142,143,144,149,150,151, | |
1912 152,153,154,156,157,160,161,162,165,202,223,246,247, | |
1913 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1914 10,11,198,199, | |
1915 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1916 8,36,39,40,42,49,53,104,107,109,131,133,136,139,141,142,143,144,149,150, | |
1917 151,152,153,154,156,157,160,161,162,165,202,223,246,247, | |
1918 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1919 10,11,198,199, | |
1920 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1921 8,36,39,40,42,49,53,104,107,109,129,131,133,136,139,141,142,143,144,149, | |
1922 150,151,152,153,154,156,157,160,161,162,165,202,223,246,247, | |
1923 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1924 8,36,39,40,42,49,53,104,107,109,128,129,131,133,136,139,141,142,143,144, | |
1925 149,150,151,152,153,154,156,157,160,161,162,165,202,223,246,247, | |
1926 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1927 10,11,198,199, | |
1928 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1929 8,36,39,40,42,49,53,104,107,109,126,128,129,131,133,136,139,141,142,143, | |
1930 144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,246,247, | |
1931 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1932 10,11,198,199, | |
1933 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1934 8,36,39,40,42,49,53,104,107,109,124,126,128,129,131,133,136,139,141,142, | |
1935 143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,246,247, | |
1936 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
1937 10,11,198,199, | |
1938 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1939 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
1940 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
1941 246,247, | |
1942 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
1943 170,168,167,74,54,0,2,4,5,39,40,42,43,45,46,47,53,201,202,208, | |
1944 196,195,168,167,0,78, | |
1945 253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,211,210, | |
1946 209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,15,9,0,50,52, | |
1947 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
1948 170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208, | |
1949 214,0,48, | |
1950 204,0,31, | |
1951 214,0,48, | |
1952 16,15,0,7,200, | |
1953 217,13,9,0,1,10,11,198,199, | |
1954 217,0,104, | |
1955 217,13,9,0,1,10,11,198,199, | |
1956 217,0,104, | |
1957 16,15,0,7,200, | |
1958 217,0,104, | |
1959 217,0,104, | |
1960 217,13,9,0,1,10,11,198,199, | |
1961 217,0,104, | |
1962 217,13,9,0,1,10,11,198,199, | |
1963 217,0,104, | |
1964 16,15,0,7,200, | |
1965 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1966 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
1967 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
1968 246,247, | |
1969 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1970 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
1971 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
1972 246,247, | |
1973 16,15,0,7,200, | |
1974 16,15,0,7,200, | |
1975 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
1976 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
1977 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
1978 246,247, | |
1979 253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170, | |
1980 168,167,74,54,0,2,4,5,47,53,176,192,201,202,208, | |
1981 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
1982 170,168,167,74,54,13,9,0,1,10,11,198,199, | |
1983 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
1984 170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208, | |
1985 217,0,104, | |
1986 218,206,205,16,15,0,36,105,106, | |
1987 218,206,16,15,0,105,106, | |
1988 205,0,36, | |
1989 205,0,36, | |
1990 205,0,36, | |
1991 253,245,244,243,242,241,240,239,233,232,229,228,218,215,212,211,210,207,206, | |
1992 197,196,195,194,170,168,167,74,54,16,15,0,2,4,5,27,28,29,30,33,37,39,40, | |
1993 42,47,53,81,82,201,202,208, | |
1994 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
1995 170,168,167,74,54,0,2,4,5,27,28,29,30,37,39,40,42,47,53,201,202,208, | |
1996 205,0,36, | |
1997 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
1998 170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208, | |
1999 216,207,16,15,13,9,0,1,10,11,198,199, | |
2000 216,207,16,15,0,7,39,40,42,88,89,200, | |
2001 262,257,256,255,254,253,252,251,250,248,243,242,241,240,239,238,237,236,235, | |
2002 234,233,232,231,230,229,228,227,226,225,219,218,217,214,212,211,210,209, | |
2003 207,206,205,204,26,16,15,13,9,0,1,10,11,198,199, | |
2004 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
2005 170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208, | |
2006 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
2007 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
2008 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
2009 246,247, | |
2010 219,204,0,31,108, | |
2011 214,205,0,36,48, | |
2012 243,242,241,0,145,146,148, | |
2013 243,242,241,0,145,146,148, | |
2014 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
2015 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
2016 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
2017 246,247, | |
2018 240,239,0,142,143, | |
2019 240,239,0,142,143, | |
2020 205,0,36, | |
2021 205,0,36, | |
2022 205,0,36, | |
2023 205,0,36, | |
2024 205,0,36, | |
2025 205,0,36, | |
2026 238,212,0,87,140, | |
2027 238,212,0,87,140, | |
2028 238,212,0,87,140, | |
2029 238,212,0,87,140, | |
2030 237,236,211,209,205,0,36,83,86,137,138, | |
2031 237,236,211,209,0,83,86,137,138, | |
2032 237,236,211,209,0,83,86,137,138, | |
2033 235,234,0,134,135, | |
2034 233,0,132, | |
2035 232,0,130, | |
2036 210,0,85, | |
2037 231,0,127, | |
2038 228,0,123, | |
2039 204,0,31, | |
2040 205,203,0,34,36, | |
2041 205,203,0,34,36, | |
2042 207,0,39,40,42, | |
2043 253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170, | |
2044 168,167,74,54,0,2,4,5,47,53,176,192,201,202,208, | |
2045 253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170, | |
2046 168,167,74,54,0,2,4,5,47,53,176,192,201,202,208, | |
2047 253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170, | |
2048 168,167,74,54,0,2,4,5,47,53,176,192,201,202,208, | |
2049 253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170, | |
2050 168,167,74,54,0,2,4,5,47,53,176,192,201,202,208, | |
2051 253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170, | |
2052 168,167,74,54,0,2,4,5,47,53,176,192,201,202,208, | |
2053 253,245,244,243,242,241,240,239,233,232,229,228,218,197,196,195,194,170,168, | |
2054 167,74,0,2,208, | |
2055 253,0,181, | |
2056 253,0,181, | |
2057 253,0,181, | |
2058 204,0,31, | |
2059 205,16,15,0,7,36,200, | |
2060 221,207,205,0,36,113,114, | |
2061 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
2062 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
2063 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
2064 246,247, | |
2065 212,211,210,206,16,15,0, | |
2066 212,211,210,206,205,16,15,0,36, | |
2067 216,0,96,97, | |
2068 205,203,0,34,36, | |
2069 248,0,158, | |
2070 248,214,0,48,158, | |
2071 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
2072 10,11,198,199, | |
2073 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
2074 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
2075 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
2076 246,247, | |
2077 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
2078 170,168,167,74,54,0,2,4,5,39,40,42,43,46,47,53,201,202,208, | |
2079 262,257,256,255,254,253,252,251,250,248,245,244,243,242,241,240,239,237,236, | |
2080 235,234,233,232,231,230,229,228,227,226,225,221,219,218,217,215,214,212, | |
2081 211,210,209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,26,16, | |
2082 15,13,9,0,1,10,11,198,199, | |
2083 205,16,15,0,7,36,200, | |
2084 205,16,15,0,7,36,200, | |
2085 205,16,15,0,7,36,200, | |
2086 205,16,15,0,7,36,200, | |
2087 205,16,15,0,7,36,200, | |
2088 16,15,0,7,200, | |
2089 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
2090 10,11,198,199, | |
2091 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
2092 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
2093 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
2094 246,247, | |
2095 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
2096 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
2097 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
2098 246,247, | |
2099 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
2100 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
2101 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
2102 246,247, | |
2103 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
2104 170,168,167,74,54,0,193, | |
2105 253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170, | |
2106 168,167,74,54,0,2,4,5,47,53,192,201,202,208, | |
2107 207,13,9,0,1,10,11,198,199, | |
2108 207,0,39,40,42, | |
2109 218,206,16,15,0,105,106, | |
2110 207,0,39,40,42, | |
2111 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1, | |
2112 10,11,198,199, | |
2113 245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6, | |
2114 8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139, | |
2115 141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223, | |
2116 246,247, | |
2117 253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194, | |
2118 170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208, | |
2119 204,0,31, | |
2120 214,0,48, | |
2121 205,203,0,34,36, | |
2122 | |
2123 }; | |
2124 | |
2125 | |
2126 static unsigned const char ag_astt[6785] = { | |
2127 8,8,8,8,8,8,8,1,1,7,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, | |
2128 9,9,9,9,9,9,9,9,9,9,9,9,9,1,3,9,7,3,1,1,9,5,3,3,1,1,1,1,1,8,1,1,7,1,0,1,1, | |
2129 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,1,1,1,1, | |
2130 1,1,1,1,1,8,1,7,1,1,5,5,1,1,7,1,1,1,1,3,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5, | |
2131 5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, | |
2132 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,5,5,5,5,5,5,5,5, | |
2133 1,1,7,1,1,1,1,3,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, | |
2134 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,1,1,7,1,1,1,1,3,2,2,7,1, | |
2135 1,2,2,7,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,2,1,1,8,8,8,8,8,8, | |
2136 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,5,8,8,8,8,8,8,8,8,8,1,1,7,1,1,1,1,1,1,1,1,1, | |
2137 1,5,3,3,3,3,1,1,1,1,1,3,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, | |
2138 9,9,9,9,9,9,9,9,9,9,9,5,3,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, | |
2139 5,5,5,5,5,5,5,5,10,10,10,10,10,5,5,5,1,1,7,1,1,1,2,1,3,1,7,1,1,7,1,10,10, | |
2140 10,10,10,10,10,10,10,10,10,10,5,10,5,5,5,5,5,5,5,5,5,5,5,5,10,10,10,10,10, | |
2141 10,10,10,5,5,5,1,1,7,1,1,1,1,3,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2, | |
2142 7,2,2,1,2,1,1,1,5,3,1,2,1,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,1,2,8,2,2,2,2, | |
2143 2,2,2,2,2,7,2,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, | |
2144 1,1,1,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,5,5,5, | |
2145 5,5,5,1,1,7,1,1,1,1,3,1,1,1,2,2,2,7,1,2,2,1,2,1,1,1,1,1,1,2,2,1,1,1,1,1,1, | |
2146 1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
2147 1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,2,1, | |
2148 1,1,1,1,1,2,2,2,2,2,2,2,2,2,1,1,7,2,2,2,3,3,2,1,3,2,1,1,1,3,3,3,3,3,1,1,1, | |
2149 1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2, | |
2150 2,2,2,2,2,2,2,2,2,3,2,7,3,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,3,2, | |
2151 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,3,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, | |
2152 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,5,5,5,5,5,5,5,5, | |
2153 5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, | |
2154 5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,1,1,7,1,1,1,1,3,5,1,1,7,1,1, | |
2155 1,1,3,1,5,1,5,1,1,7,1,1,1,1,3,1,7,1,1,7,2,5,5,1,1,7,1,1,1,1,3,1,4,1,1,7,1, | |
2156 1,1,1,1,1,1,1,1,1,1,1,7,3,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,7,1,1,1,1,4,1,1,1, | |
2157 4,1,1,4,1,1,1,1,7,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,8,1,5,2,2,2,2,2, | |
2158 2,2,2,2,5,5,7,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,1,1,1,7,2,1,2,1,5,3,1,8,5, | |
2159 1,1,7,1,1,1,1,5,1,1,7,1,1,3,1,1,7,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, | |
2160 5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,2,2,2,7,1,2,2,1,2,1,1,1,1,1,1,2,2, | |
2161 1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1,1,2,1,2,2,1,1,1, | |
2162 2,1,1,1,1,1,1,5,1,1,5,5,5,1,5,5,1,5,5,5,7,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
2163 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,1,1,7,1,1,1, | |
2164 1,1,1,1,10,10,10,5,10,10,5,10,10,10,2,5,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, | |
2165 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5, | |
2166 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,5,5,5,1,1,7,1,1, | |
2167 1,1,3,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,5,5,5,5,5, | |
2168 5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1, | |
2169 7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5, | |
2170 5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1, | |
2171 1,7,1,1,1,1,3,1,7,1,2,1,1,1,2,2,2,7,2,2,2,1,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1, | |
2172 1,1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1,1,2,1,1,1,1,2,1,2,2,1,1, | |
2173 1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1, | |
2174 1,2,1,1,1,1,2,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,2, | |
2175 1,2,2,1,2,1,2,1,1,1,2,1,1,2,1,1,1,1,2,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1, | |
2176 1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1,1,2,1,1,1,1,2,1,2,2,1,1,1, | |
2177 2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1, | |
2178 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,5,1,1,1,1, | |
2179 1,5,1,1,1,1,5,1,1,1,1,5,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1, | |
2180 1,1,1,5,1,1,1,5,1,1,5,1,1,5,1,1,5,1,1,1,5,1,1,5,5,5,1,5,5,5,5,5,7,2,2,5,5, | |
2181 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,5,5,5,5,1,1,7,1, | |
2182 1,1,1,3,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,5,5,5,5, | |
2183 5,5,1,1,7,1,1,1,1,3,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, | |
2184 5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, | |
2185 5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,5,1,5,5,5,5,5,5,5,5,5,5,5,5, | |
2186 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,5,5,5,5,5,5,5,5, | |
2187 5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,2,7,1,1,1,2,7,1,1,2,2,5,2,2,5,2,7, | |
2188 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,1,1,7,1,1,1,1,3,4,4,4,4, | |
2189 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2, | |
2190 2,2,7,1,1,1,2,1,2,1,2,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, | |
2191 2,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,2,1,1,1, | |
2192 2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1, | |
2193 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,5,1,1,7,1, | |
2194 1,1,1,3,1,7,2,1,1,1,1,1,1,7,3,1,1,1,2,1,1,1,5,1,1,7,1,1,1,1,3,1,7,2,1,1,1, | |
2195 1,1,1,1,7,3,1,1,1,1,1,1,5,1,1,7,1,1,1,1,3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,5, | |
2196 1,1,7,1,1,1,1,3,1,7,1,1,5,1,1,7,1,1,1,1,3,1,7,1,1,5,1,1,7,1,1,1,1,3,1,7,1, | |
2197 1,1,7,2,1,5,1,1,7,1,1,1,1,3,1,7,1,1,7,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1, | |
2198 2,1,2,1,2,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,2,2,2,7,1,2,2,1,2,1,1, | |
2199 1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1, | |
2200 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,2,2,2,2,2, | |
2201 2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1, | |
2202 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,1,1,7,1,1,1,1,3,2, | |
2203 2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2,1,1,2,1,2,1, | |
2204 1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2,1, | |
2205 1,2,1,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,2,1,1,1, | |
2206 2,2,2,1,1,1,1,1,1,1,1,5,1,1,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2, | |
2207 2,2,2,5,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,4,4,4,1,4,4,4,7,1,2,1,2,2,2,2,2, | |
2208 2,2,2,2,2,2,1,1,1,1,1,2,1,2,2,2,2,2,2,2,2,2,2,1,1,5,2,1,1,3,3,1,1,1,1,1,1, | |
2209 1,3,1,1,3,2,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,2,1,2,2,2,2,2,2,2,2, | |
2210 2,2,2,1,1,1,1,1,2,1,2,2,2,2,2,2,2,2,2,2,1,1,5,2,1,1,3,3,1,1,1,1,1,1,1,3,1, | |
2211 1,3,2,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,3,1,1,7,1,1,4,4,4,4,4,4, | |
2212 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,1,1,1,2,2,2,7,1,2,2,1,2,1,1, | |
2213 1,1,1,2,2,1,1,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,7,2,2,2,2,2,2,2,2,2,2,2,2, | |
2214 2,2,1,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1, | |
2215 1,7,1,3,1,1,1,1,1,1,1,7,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1, | |
2216 3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1,1,2,2,1,1, | |
2217 1,1,2,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1, | |
2218 1,3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1,1,2,2,1, | |
2219 1,1,1,2,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1, | |
2220 1,1,3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1,1,2,1, | |
2221 1,1,1,2,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2, | |
2222 1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2, | |
2223 2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2, | |
2224 1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1,1,2,1,2,2,1, | |
2225 1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1, | |
2226 1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, | |
2227 5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1, | |
2228 1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5, | |
2229 5,5,5,1,1,7,1,1,1,1,3,1,1,1,2,2,2,7,1,2,2,1,2,1,1,1,1,1,1,2,2,1,1,5,5,5,5, | |
2230 5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,2,2,2,7,1,2,2,1,2,1,1,1,1, | |
2231 1,1,2,2,1,1,1,1,1,2,2,2,7,1,2,2,1,2,1,1,1,1,1,1,2,2,1,1,1,1,1,2,2,2,7,1,2, | |
2232 2,1,2,1,1,1,1,1,1,2,2,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1, | |
2233 3,1,1,1,2,2,2,7,1,2,2,1,2,1,1,1,1,1,1,2,2,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5, | |
2234 5,5,5,1,1,7,1,1,1,1,3,1,1,1,2,2,2,7,1,2,2,1,2,1,1,1,1,1,1,2,2,1,1,1,1,1,1, | |
2235 1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
2236 1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2, | |
2237 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2, | |
2238 1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2, | |
2239 1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1, | |
2240 1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7, | |
2241 1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1, | |
2242 1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1, | |
2243 1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1, | |
2244 1,1,1,3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1, | |
2245 1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, | |
2246 5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1, | |
2247 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1, | |
2248 2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
2249 1,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3, | |
2250 1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1, | |
2251 1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, | |
2252 5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1, | |
2253 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5, | |
2254 5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7, | |
2255 1,1,1,2,1,2,1,2,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,2,1,1, | |
2256 1,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7,2,2,2,1,1,2, | |
2257 1,1,1,1,1,1,1,1,10,10,10,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,2,2, | |
2258 2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2, | |
2259 2,2,2,2,7,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,1,7,1,1,4,1,1,7,2,1,1,7,2,1,5, | |
2260 1,1,7,1,1,1,1,3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,1,1,7,2,1,1,7,1,1,7,1,5,1,1, | |
2261 7,1,1,1,1,3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,1,1,7,2,1,1,1,1,1,1,1,1,1,2,2,2, | |
2262 1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
2263 1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2, | |
2264 1,2,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,2,1,1,1,2,1,1,1,1, | |
2265 1,1,7,2,1,1,1,7,2,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1, | |
2266 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,2,1,1,1,2,1,1,1,1,2,2,2, | |
2267 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5, | |
2268 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,2,2,2,2,2,2,2,2,2,2, | |
2269 2,2,2,1,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,1,7,1,1,5,1, | |
2270 5,5,7,1,2,2,1,5,5,5,7,2,2,1,4,1,1,4,1,1,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5, | |
2271 5,5,1,5,2,2,2,2,2,2,2,2,2,5,5,7,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,1,1,2,2, | |
2272 2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2,2,2,1,2,1,1,1, | |
2273 1,1,1,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2, | |
2274 1,1,2,1,2,1,1,1,1,1,5,5,5,5,1,1,7,1,1,1,1,3,8,1,1,1,7,1,2,1,2,1,1,1,5,5,5, | |
2275 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,5,5,5,5,5,5,5,5, | |
2276 5,5,5,5,1,1,7,1,1,1,1,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7, | |
2277 2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1, | |
2278 1,2,1,2,1,2,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,2,1,1,1,2, | |
2279 1,1,1,1,1,1,4,1,1,1,1,7,1,3,1,1,1,4,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,2, | |
2280 2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
2281 1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,4,1,1,1,1,4,1,1,1,4,1,1,4,1,1,4,1,1,4,1, | |
2282 1,4,1,1,4,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,1,1,1,7,1,1,1,1,1, | |
2283 1,1,1,1,4,1,1,1,1,1,1,1,1,4,1,1,1,1,1,1,4,1,1,1,4,1,1,4,1,1,4,1,1,4,1,1,7, | |
2284 1,1,5,1,1,1,7,3,1,1,1,7,2,1,1,7,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, | |
2285 2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, | |
2286 2,2,7,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7, | |
2287 1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1, | |
2288 1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1, | |
2289 1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,7,1,1,7,1,1,7,1, | |
2290 1,4,1,1,1,1,7,2,1,1,1,8,1,7,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1, | |
2291 1,2,1,2,1,2,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,2,1,1,1,2, | |
2292 1,1,1,1,4,4,4,4,4,4,7,4,4,4,4,1,4,4,7,1,1,7,1,1,1,1,7,2,1,1,7,1,1,1,7,2,1, | |
2293 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,2,2,2,1, | |
2294 2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
2295 1,1,2,2,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7, | |
2296 2,2,2,3,1,2,1,3,1,1,1,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, | |
2297 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,5,5,5,5,1,1,7,1, | |
2298 1,1,1,3,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2, | |
2299 1,1,1,1,7,2,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1, | |
2300 1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
2301 1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7, | |
2302 1,1,1,2,1,2,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1, | |
2303 1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,2,1,1, | |
2304 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,4,4,4,4,4,4,4, | |
2305 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, | |
2306 2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,5,1,1,7,1,1,1,1,3,1,7,2,1,2,1,5,5,5,7,2,2,1, | |
2307 7,2,1,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1, | |
2308 2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
2309 1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2, | |
2310 2,2,2,7,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,1,4,1,1,7,2,1,1,7,2,1 | |
2311 }; | |
2312 | |
2313 | |
2314 static const unsigned short ag_pstt[] = { | |
2315 3,3,3,3,3,3,3,1,2,0,2,2,1,2,3, | |
2316 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,5,5,5,5,5,5,1,3,5, | |
2317 1,6,1, | |
2318 1,459,461,459,459,1, | |
2319 5,6,7,8,15,4,9,3,14,0,14,14,14,14,15,13,12,11,10,9, | |
2320 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, | |
2321 16,16,16,16,16,16,16,16,16,17,16,4,16,17, | |
2322 460,460,1,2,5,2,2,1,2,489, | |
2323 460,460,1,2,6,2,2,1,2,488, | |
2324 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2325 460,460,1,2,7,2,2,1,2,487, | |
2326 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2327 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2328 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,8,2,2,1, | |
2329 2,469, | |
2330 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2331 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2332 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2, | |
2333 9,2,2,1,2,462, | |
2334 138,138,10,19,18, | |
2335 138,138,11,20,18, | |
2336 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,12,136,22,21, | |
2337 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,98,24,24,24, | |
2338 24,24,24,24,24,24,4,9,13,23,23,24,9, | |
2339 5,6,7,8,4,9,19,17,17,17,17,13,12,11,10,9, | |
2340 20,15, | |
2341 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,11, | |
2342 12,17, | |
2343 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2344 460,460,460,460,460,460,460,460,460,460,460,460,139,140,140,140,139,460, | |
2345 460,460,1,2,18,2,2,1,140,2,485, | |
2346 25,19,26, | |
2347 25,20,27, | |
2348 33,33,33,33,33,33,33,33,33,33,33,33,460,33,460,460,460,460,460,460,460,460, | |
2349 460,460,460,460,33,33,33,33,33,33,33,33,460,460,460,1,2,21,2,2,1,2,470, | |
2350 32,32,32,32,32,32,32,32,32,32,32,32,32,8,32,32,32,32,32,32,32,32,22,137,133, | |
2351 28,37,21, | |
2352 4,9,99,97,9, | |
2353 32,34,32,32,32,32,32,32,32,32,32,32,32,5,6,7,39,33,32,36,51,53,32,32,32,32, | |
2354 32,32,32,32,57,24,128,35,35,52,35,45,44,46,40,30,29,52,48,47,52,51,53, | |
2355 52,51,49,41,52,52,52,50,50,37,43,12,11,10,42,38,32,31,21, | |
2356 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2357 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,25, | |
2358 2,2,1,2,479, | |
2359 25,54,8,138,138,57,26,57,191,201,28,37,55,29,56,58,57,57,199,200,31,18, | |
2360 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,27,77,79,77,191,71, | |
2361 201,28,37,76,29,89,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,73, | |
2362 72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2363 32,32,32,32,32,32,32,32,32,32,32,32,91,32,25,51,92,90,93,8,95,63,32,32,32, | |
2364 32,32,32,32,32,57,4,9,28,44,43,42,39,41,40,28,36,37,94,30,29,41,41,41, | |
2365 41,41,9,32,31,21, | |
2366 59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59, | |
2367 59,59,59,59,59,59,59,97,96,71,70,69,68,67,66,65,64,63,62,61,56,59,29,58, | |
2368 60,60,60,99,98,60, | |
2369 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,54,50,53,53,53,53,53,53,53,53, | |
2370 53,53,53,53,53,53,53,53,53,53,53,30,52,100, | |
2371 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2372 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2373 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2374 460,460,460,1,2,31,2,2,1,2,464, | |
2375 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2376 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2377 460,1,2,32,2,2,1,2,463, | |
2378 460,1,2,33,2,2,1,2,482, | |
2379 460,1,2,34,2,2,1,2,511, | |
2380 101,28,102, | |
2381 460,1,2,36,2,2,1,2,478, | |
2382 54,37,103, | |
2383 8,38,221, | |
2384 460,460,1,2,39,2,2,1,2,486, | |
2385 63,93,104, | |
2386 54,41,105, | |
2387 106,109,120,112,114,116,118,123,95,4,9,42,222,220,124,122,119,117,115,113, | |
2388 111,108,121,110,107,9, | |
2389 138,138,43,125,18, | |
2390 91,25,24,127,126, | |
2391 25,23,128, | |
2392 25,25,129, | |
2393 130,92,90,47,133,132,131, | |
2394 32,32,32,32,32,32,32,32,32,32,32,32,32,51,83,83,83,137,8,83,32,32,32,32,32, | |
2395 32,32,32,57,83,83,48,128,134,134,134,23,24,25,135,135,35,28,37,30,29, | |
2396 136,137,32,31,21, | |
2397 8,49,113,28,37, | |
2398 33,121,120,37, | |
2399 139,98,4,9,51,138,138,139,9, | |
2400 98,4,9,52,140,140,101,9, | |
2401 95,53,103, | |
2402 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2403 460,460,460,460,460,460,460,460,460,1,2,54,2,2,1,2,477, | |
2404 25,54,8,138,138,57,55,57,191,201,28,37,55,29,56,141,57,57,199,200,31,18, | |
2405 25,54,8,63,138,215,215,59,213,138,209,209,57,56,202,142,202,191,71,201,28, | |
2406 37,76,29,56,202,142,142,202,70,199,200,62,61,60,209,31,18,65,64, | |
2407 91,101,192,143,144, | |
2408 123,123,123,146,123,123,63,123,123,123,58,145,135,135, | |
2409 147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147, | |
2410 147,147,147,147,147,147,147,147,147,147,147,147,97,96,71,70,69,68,67,66, | |
2411 65,64,63,62,61,147,147,59,147,147,147,99,98,147,147, | |
2412 216,216,216,206, | |
2413 214,214,205, | |
2414 210,210,210,212,204,210, | |
2415 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2416 460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,63,2,2,1,2, | |
2417 467, | |
2418 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2419 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2420 460,460,460,460,460,460,460,1,2,64,2,2,1,2,509, | |
2421 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2422 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2423 460,460,460,460,460,460,460,1,2,65,2,2,1,2,508, | |
2424 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,66, | |
2425 2,2,1,2,507, | |
2426 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,67, | |
2427 2,2,1,2,506, | |
2428 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,68, | |
2429 2,2,1,2,502, | |
2430 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,69, | |
2431 2,2,1,2,501, | |
2432 54,70,148,189, | |
2433 25,54,8,138,138,57,71,186,191,201,28,37,55,29,56,186,199,200,31,18, | |
2434 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,72,182,142,182,191, | |
2435 71,201,28,37,76,29,56,182,75,74,182,73,72,142,142,182,70,199,200,62,61, | |
2436 60,209,31,18,65,64, | |
2437 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,73,181,142,181,191, | |
2438 71,201,28,37,76,29,56,181,75,74,181,73,72,142,142,181,70,199,200,62,61, | |
2439 60,209,31,18,65,64, | |
2440 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,74,180,142,180,191, | |
2441 71,201,28,37,76,29,56,180,75,74,180,73,72,142,142,180,70,199,200,62,61, | |
2442 60,209,31,18,65,64, | |
2443 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,75,179,142,179,191, | |
2444 71,201,28,37,76,29,56,179,75,74,179,73,72,142,142,179,70,199,200,62,61, | |
2445 60,209,31,18,65,64, | |
2446 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,76,77,79,77,191,71, | |
2447 201,28,37,76,29,150,56,149,77,88,87,86,85,84,83,82,80,78,77,75,74,77,73, | |
2448 72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2449 151,153,155,170,156,154,152, | |
2450 68,69,167,158,157, | |
2451 91,101,192,143,159, | |
2452 161,130,158,160,162, | |
2453 163,165,169,171,92,93,63,81,145,168,167,172,170,166,164, | |
2454 163,165,92,93,153,176,175,174,173, | |
2455 169,171,151,178,177, | |
2456 179,149,180, | |
2457 181,147,182, | |
2458 90,145,183, | |
2459 184,143,185, | |
2460 186,188,141,189,187, | |
2461 123,123,123,146,123,123,123,123,123,89,134,134, | |
2462 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2463 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,90, | |
2464 2,2,1,2,472, | |
2465 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2466 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,91, | |
2467 2,2,1,2,481, | |
2468 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2469 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,92, | |
2470 2,2,1,2,473, | |
2471 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2472 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,93, | |
2473 2,2,1,2,471, | |
2474 101,38,190, | |
2475 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2476 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2477 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2478 460,460,460,460,460,1,2,95,2,2,1,2,468, | |
2479 77,77,96, | |
2480 191,191,191,212,97,191,191, | |
2481 79,79,75, | |
2482 78,78,74, | |
2483 51,100,192, | |
2484 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2485 460,460,460,460,460,1,2,101,2,2,1,2,466, | |
2486 26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,102, | |
2487 193, | |
2488 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,103,77,79,77,191, | |
2489 71,201,28,37,76,29,194,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77, | |
2490 73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2491 32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,104, | |
2492 128,195,195,195,23,24,25,30,29,32,31,21, | |
2493 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,105,77,79,77,191, | |
2494 71,201,28,37,76,29,196,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77, | |
2495 73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2496 460,1,2,106,2,2,1,2,524, | |
2497 8,107,238, | |
2498 198,200,8,95,4,9,108,239,197,28,202,37,201,199,9, | |
2499 460,1,2,109,2,2,1,2,519, | |
2500 8,110,232, | |
2501 198,200,205,207,95,4,9,111,233,209,208,206,204,203,9, | |
2502 460,1,2,112,2,2,1,2,517, | |
2503 25,113,210, | |
2504 460,1,2,114,2,2,1,2,516, | |
2505 25,115,211, | |
2506 460,1,2,116,2,2,1,2,514, | |
2507 120,117,212,121, | |
2508 460,1,2,118,2,2,1,2,513, | |
2509 120,119,213,121, | |
2510 460,1,2,120,2,2,1,2,518, | |
2511 25,121,214, | |
2512 4,9,122,224,9, | |
2513 460,1,2,123,2,2,1,2,512, | |
2514 25,124,215, | |
2515 216,125,217, | |
2516 25,54,8,63,138,215,215,59,213,138,209,209,57,126,218,142,218,191,71,201,28, | |
2517 37,76,29,56,218,142,142,218,70,199,200,62,61,60,209,31,18,65,64, | |
2518 25,54,8,138,138,57,127,57,191,201,28,37,55,29,56,219,57,57,199,200,31,18, | |
2519 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,128,77,79,77,191, | |
2520 71,201,28,37,76,29,220,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77, | |
2521 73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2522 32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,129, | |
2523 128,134,134,134,23,24,25,221,221,35,28,37,30,29,32,31,21, | |
2524 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2525 460,460,460,460,460,460,460,460,460,1,2,130,2,2,1,2,474, | |
2526 32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,131, | |
2527 128,134,134,134,23,24,25,222,222,35,28,37,30,29,32,31,21, | |
2528 32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,132, | |
2529 128,134,134,134,23,24,25,223,223,35,28,37,30,29,32,31,21, | |
2530 32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,133, | |
2531 128,35,35,35,23,24,25,40,30,29,224,32,31,21, | |
2532 101,34,102, | |
2533 63,94,225, | |
2534 32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,84, | |
2535 128,134,134,134,23,24,25,226,226,35,28,37,30,29,32,31,21, | |
2536 90,90,90,93,85,85,85,137,227, | |
2537 32,34,32,32,32,32,32,32,32,32,32,32,32,5,6,7,39,33,32,36,51,32,32,32,32,32, | |
2538 32,32,32,57,4,9,99,128,35,35,97,106,35,45,44,46,40,30,29,106,48,47,106, | |
2539 109,49,41,106,106,106,50,50,37,43,12,11,10,42,38,9,32,31,21, | |
2540 228,102,229, | |
2541 32,34,32,32,32,32,32,32,32,32,32,32,32,5,6,7,39,33,32,36,51,32,32,32,32,32, | |
2542 32,32,32,57,4,9,99,128,35,35,97,105,35,45,44,46,40,30,29,105,48,47,105, | |
2543 110,49,41,105,105,105,50,50,37,43,12,11,10,42,38,9,32,31,21, | |
2544 230,63,141,145,203, | |
2545 91,101,142,143,159, | |
2546 196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, | |
2547 196,196,196,196,196,143,231, | |
2548 54,144,232, | |
2549 25,54,8,138,138,57,145,233,191,201,28,37,55,29,56,233,233,199,200,31,18, | |
2550 460,460,460,460,460,460,460,460,1,2,146,2,2,1,2,480, | |
2551 217,147, | |
2552 32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,148, | |
2553 128,134,134,134,23,24,25,234,234,35,28,37,30,29,32,31,21, | |
2554 163,165,169,171,230,92,93,63,149,145,203,168,167,172,170,166,164, | |
2555 230,150,188, | |
2556 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,151, | |
2557 2,2,1,2,505, | |
2558 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,152,177,142,177, | |
2559 191,71,201,28,37,76,29,56,177,75,74,177,176,73,72,142,142,177,70,199, | |
2560 200,62,61,60,209,31,18,65,64, | |
2561 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,153, | |
2562 2,2,1,2,504, | |
2563 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,154,177,142,177, | |
2564 191,71,201,28,37,76,29,56,177,75,74,177,175,73,72,142,142,177,70,199, | |
2565 200,62,61,60,209,31,18,65,64, | |
2566 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,155, | |
2567 2,2,1,2,503, | |
2568 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,156,174,142,174, | |
2569 191,71,201,28,37,76,29,56,174,75,74,174,73,72,142,142,174,70,199,200,62, | |
2570 61,60,209,31,18,65,64, | |
2571 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,157,235,142,235, | |
2572 191,71,201,28,37,76,29,56,235,235,75,74,235,73,72,142,142,235,70,199, | |
2573 200,62,61,60,209,31,18,65,64, | |
2574 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,158,236,142,236, | |
2575 191,71,201,28,37,76,29,56,236,236,75,74,236,73,72,142,142,236,70,199, | |
2576 200,62,61,60,209,31,18,65,64, | |
2577 25,54,8,63,138,215,215,59,213,138,209,209,57,159,185,142,185,191,71,201,28, | |
2578 37,237,29,56,185,142,142,185,70,199,200,62,61,60,209,31,18,65,64, | |
2579 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,160,77,142,77,191, | |
2580 71,201,28,37,76,29,56,77,238,77,75,74,77,73,72,142,142,77,70,199,200,62, | |
2581 61,60,209,31,18,65,64, | |
2582 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,161, | |
2583 2,2,1,2,500, | |
2584 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,162,77,142,77,191, | |
2585 71,201,28,37,76,29,56,77,239,77,75,74,77,73,72,142,142,77,70,199,200,62, | |
2586 61,60,209,31,18,65,64, | |
2587 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,163, | |
2588 2,2,1,2,499, | |
2589 25,54,8,138,138,57,164,57,191,201,28,37,55,29,56,240,57,57,199,200,31,18, | |
2590 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,165, | |
2591 2,2,1,2,498, | |
2592 25,54,8,138,138,57,166,57,191,201,28,37,55,29,56,241,57,57,199,200,31,18, | |
2593 25,54,8,138,138,57,167,57,191,201,28,37,55,29,56,242,57,57,199,200,31,18, | |
2594 25,54,8,138,138,57,168,57,191,201,28,37,55,29,56,243,57,57,199,200,31,18, | |
2595 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,169, | |
2596 2,2,1,2,497, | |
2597 25,54,8,138,138,57,170,57,191,201,28,37,55,29,56,244,57,57,199,200,31,18, | |
2598 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,171, | |
2599 2,2,1,2,496, | |
2600 25,54,8,138,138,57,172,57,191,201,28,37,55,29,56,245,57,57,199,200,31,18, | |
2601 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,173,77,142,77,191, | |
2602 71,201,28,37,76,29,56,77,246,78,77,75,74,77,73,72,142,142,77,70,199,200, | |
2603 62,61,60,209,31,18,65,64, | |
2604 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,174,77,142,77,191, | |
2605 71,201,28,37,76,29,56,77,247,78,77,75,74,77,73,72,142,142,77,70,199,200, | |
2606 62,61,60,209,31,18,65,64, | |
2607 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,175,77,142,77,191, | |
2608 71,201,28,37,76,29,56,77,248,78,77,75,74,77,73,72,142,142,77,70,199,200, | |
2609 62,61,60,209,31,18,65,64, | |
2610 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,176,77,142,77,191, | |
2611 71,201,28,37,76,29,56,77,249,78,77,75,74,77,73,72,142,142,77,70,199,200, | |
2612 62,61,60,209,31,18,65,64, | |
2613 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,177,77,79,77,191, | |
2614 71,201,28,37,76,29,56,250,77,251,80,78,77,75,74,77,73,72,79,79,77,70, | |
2615 199,200,62,61,60,209,31,18,65,64, | |
2616 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,178,77,79,77,191, | |
2617 71,201,28,37,76,29,56,250,77,252,80,78,77,75,74,77,73,72,79,79,77,70, | |
2618 199,200,62,61,60,209,31,18,65,64, | |
2619 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,179, | |
2620 2,2,1,2,495, | |
2621 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,180,77,79,77,191, | |
2622 71,201,28,37,76,29,56,81,77,253,82,80,78,77,75,74,77,73,72,79,79,77,70, | |
2623 199,200,62,61,60,209,31,18,65,64, | |
2624 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,181, | |
2625 2,2,1,2,494, | |
2626 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,182,77,79,77,191, | |
2627 71,201,28,37,76,29,56,81,77,254,83,82,80,78,77,75,74,77,73,72,79,79,77, | |
2628 70,199,200,62,61,60,209,31,18,65,64, | |
2629 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,183,77,79,77,191, | |
2630 71,201,28,37,76,29,56,81,77,255,84,83,82,80,78,77,75,74,77,73,72,79,79, | |
2631 77,70,199,200,62,61,60,209,31,18,65,64, | |
2632 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,184, | |
2633 2,2,1,2,493, | |
2634 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,185,77,79,77,191, | |
2635 71,201,28,37,76,29,56,81,77,256,85,84,83,82,80,78,77,75,74,77,73,72,79, | |
2636 79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2637 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,186, | |
2638 2,2,1,2,492, | |
2639 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,187,77,79,77,191, | |
2640 71,201,28,37,76,29,56,81,77,257,86,85,84,83,82,80,78,77,75,74,77,73,72, | |
2641 79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2642 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,188, | |
2643 2,2,1,2,491, | |
2644 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,189,77,79,77,191, | |
2645 71,201,28,37,76,29,258,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77, | |
2646 73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2647 32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,190, | |
2648 44,43,42,260,28,37,259,260,260,30,29,32,31,21, | |
2649 82,82,82,212,80,82, | |
2650 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,54,55,53,53,53,53,53,53,53,53, | |
2651 53,53,53,53,53,53,53,53,53,53,53,192,52,100, | |
2652 32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,193, | |
2653 128,134,134,134,23,24,25,261,261,35,28,37,30,29,32,31,21, | |
2654 230,194,262, | |
2655 101,29,102, | |
2656 230,196,112, | |
2657 4,9,197,242,9, | |
2658 460,1,2,198,2,2,1,2,523, | |
2659 25,199,263, | |
2660 460,1,2,200,2,2,1,2,522, | |
2661 25,201,264, | |
2662 4,9,202,230,9, | |
2663 25,203,265, | |
2664 25,204,266, | |
2665 460,1,2,205,2,2,1,2,521, | |
2666 25,206,267, | |
2667 460,1,2,207,2,2,1,2,520, | |
2668 25,208,268, | |
2669 4,9,209,229,9, | |
2670 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,210,77,79,77,191, | |
2671 71,201,28,37,76,29,269,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77, | |
2672 73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2673 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,211,77,79,77,191, | |
2674 71,201,28,37,76,29,270,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77, | |
2675 73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2676 4,9,212,226,9, | |
2677 4,9,213,225,9, | |
2678 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,214,77,79,77,191, | |
2679 71,201,28,37,76,29,271,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77, | |
2680 73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2681 32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,215, | |
2682 272,272,272,30,29,273,272,32,31,21, | |
2683 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2684 460,460,460,460,460,1,2,216,2,2,1,2,484, | |
2685 32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,217, | |
2686 128,134,134,134,23,24,25,274,274,35,28,37,30,29,32,31,21, | |
2687 25,218,275, | |
2688 146,123,63,123,123,219,145,126,126, | |
2689 146,123,123,123,220,125,125, | |
2690 63,122,225, | |
2691 63,89,225, | |
2692 63,88,225, | |
2693 32,32,32,32,32,32,32,32,32,32,32,32,32,51,83,83,83,8,83,32,32,32,32,32,32, | |
2694 32,32,57,83,83,224,128,134,134,134,23,24,25,135,135,35,28,37,30,29,136, | |
2695 276,32,31,21, | |
2696 32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,225, | |
2697 128,134,134,134,23,24,25,31,35,28,37,30,29,32,31,21, | |
2698 63,95,225, | |
2699 32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,227, | |
2700 128,134,134,134,23,24,25,277,277,35,28,37,30,29,32,31,21, | |
2701 460,460,460,460,1,2,228,2,2,1,2,475, | |
2702 278,8,4,9,229,23,107,28,37,23,278,9, | |
2703 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2704 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2705 460,460,460,460,460,460,460,1,2,230,2,2,1,2,476, | |
2706 32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,231, | |
2707 128,134,134,134,23,24,25,279,279,35,28,37,30,29,32,31,21, | |
2708 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,232,77,79,77,191, | |
2709 71,201,28,37,76,29,280,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77, | |
2710 73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2711 91,101,193,143,144, | |
2712 230,63,234,225,190, | |
2713 151,153,155,172,156,154,152, | |
2714 151,153,155,171,156,154,152, | |
2715 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,237,77,79,77,191, | |
2716 71,201,28,37,76,29,281,56,149,77,88,87,86,85,84,83,82,80,78,77,75,74,77, | |
2717 73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2718 68,69,169,158,157, | |
2719 68,69,168,158,157, | |
2720 63,166,145, | |
2721 63,165,145, | |
2722 63,164,145, | |
2723 63,163,145, | |
2724 63,157,145, | |
2725 63,156,145, | |
2726 161,130,162,160,162, | |
2727 161,130,161,160,162, | |
2728 161,130,160,160,162, | |
2729 161,130,159,160,162, | |
2730 163,165,92,93,63,250,145,168,167,166,164, | |
2731 163,165,92,93,155,176,175,174,173, | |
2732 163,165,92,93,154,176,175,174,173, | |
2733 169,171,152,178,177, | |
2734 179,150,180, | |
2735 181,148,182, | |
2736 90,146,183, | |
2737 184,144,185, | |
2738 282,258,283, | |
2739 101,48,190, | |
2740 63,285,260,45,284, | |
2741 63,285,261,27,225, | |
2742 8,262,129,28,37, | |
2743 32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,263, | |
2744 272,272,272,30,29,286,272,32,31,21, | |
2745 32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,264, | |
2746 272,272,272,30,29,287,272,32,31,21, | |
2747 32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,265, | |
2748 272,272,272,30,29,288,272,32,31,21, | |
2749 32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,266, | |
2750 272,272,272,30,29,289,272,32,31,21, | |
2751 32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,267, | |
2752 272,272,272,30,29,290,272,32,31,21, | |
2753 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,268,291,21, | |
2754 292,269,293, | |
2755 292,270,294, | |
2756 292,271,295, | |
2757 101,243,296, | |
2758 63,4,9,273,223,297,9, | |
2759 298,299,63,274,225,299,299, | |
2760 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,275,77,79,77,191, | |
2761 71,201,28,37,76,29,300,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77, | |
2762 73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2763 92,92,92,87,87,87,276, | |
2764 91,91,91,86,63,86,86,277,225, | |
2765 36,278,301,41, | |
2766 63,285,279,197,225, | |
2767 302,280,303, | |
2768 302,230,281,188,303, | |
2769 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,282, | |
2770 2,2,1,2,490, | |
2771 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,283,77,79,77,191, | |
2772 71,201,28,37,76,29,142,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77, | |
2773 73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2774 32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,284, | |
2775 44,43,42,47,28,37,259,47,30,29,32,31,21, | |
2776 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2777 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2778 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | |
2779 460,460,1,2,285,2,2,1,2,465, | |
2780 63,4,9,286,241,297,9, | |
2781 63,4,9,287,240,297,9, | |
2782 63,4,9,288,237,297,9, | |
2783 63,4,9,289,236,297,9, | |
2784 63,4,9,290,235,297,9, | |
2785 4,9,291,234,9, | |
2786 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,292, | |
2787 2,2,1,2,515, | |
2788 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,293,77,79,77,191, | |
2789 71,201,28,37,76,29,228,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77, | |
2790 73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2791 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,294,77,79,77,191, | |
2792 71,201,28,37,76,29,227,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77, | |
2793 73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2794 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,295,77,79,77,191, | |
2795 71,201,28,37,76,29,231,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77, | |
2796 73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2797 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, | |
2798 248,248,248,248,248,296,304, | |
2799 32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,297, | |
2800 305,305,305,30,29,305,32,31,21, | |
2801 460,1,2,298,2,2,1,2,483, | |
2802 8,299,132,28,37, | |
2803 146,123,123,123,300,127,127, | |
2804 8,301,111,28,37, | |
2805 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,302, | |
2806 2,2,1,2,510, | |
2807 66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,303,77,79,77,191, | |
2808 71,201,28,37,76,29,306,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77, | |
2809 73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64, | |
2810 32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,304, | |
2811 128,134,134,134,23,24,25,307,307,35,28,37,30,29,32,31,21, | |
2812 101,244,296, | |
2813 230,306,195, | |
2814 63,285,307,249,225, | |
2815 | |
2816 }; | |
2817 | |
2818 | |
2819 static const unsigned short ag_sbt[] = { | |
2820 0, 15, 56, 62, 82, 121, 131, 141, 170, 230, 292, 297, 302, 327, | |
2821 365, 381, 383, 419, 421, 469, 472, 475, 520, 548, 553, 621, 664, 686, | |
2822 747, 802, 857, 896, 962,1008,1017,1026,1029,1038,1041,1044,1054,1057, | |
2823 1060,1086,1091,1096,1099,1102,1109,1160,1165,1169,1178,1186,1189,1225, | |
2824 1247,1287,1292,1306,1360,1364,1367,1373,1414,1466,1518,1543,1568,1593, | |
2825 1618,1622,1642,1691,1740,1789,1838,1899,1906,1911,1916,1921,1936,1945, | |
2826 1950,1953,1956,1959,1962,1967,1979,2022,2065,2108,2151,2154,2222,2225, | |
2827 2232,2235,2238,2241,2273,2299,2360,2396,2457,2466,2469,2484,2493,2496, | |
2828 2511,2520,2523,2532,2535,2544,2548,2557,2561,2570,2573,2578,2587,2590, | |
2829 2593,2633,2655,2716,2758,2794,2836,2878,2916,2919,2922,2964,2973,3041, | |
2830 3044,3112,3117,3122,3148,3151,3172,3188,3190,3232,3249,3252,3277,3327, | |
2831 3352,3402,3427,3476,3526,3576,3616,3667,3692,3743,3768,3790,3815,3837, | |
2832 3859,3881,3906,3928,3953,3975,4027,4079,4131,4183,4237,4291,4316,4371, | |
2833 4396,4452,4509,4534,4592,4617,4676,4701,4762,4801,4807,4846,4888,4891, | |
2834 4894,4897,4902,4911,4914,4923,4926,4931,4934,4937,4946,4949,4958,4961, | |
2835 4966,5027,5088,5093,5098,5159,5193,5225,5267,5270,5279,5286,5289,5292, | |
2836 5295,5345,5386,5389,5431,5443,5455,5507,5549,5610,5615,5620,5627,5634, | |
2837 5695,5700,5705,5708,5711,5714,5717,5720,5723,5728,5733,5738,5743,5754, | |
2838 5763,5772,5777,5780,5783,5786,5789,5792,5795,5800,5805,5810,5844,5878, | |
2839 5912,5946,5980,6004,6007,6010,6013,6016,6023,6030,6091,6098,6107,6111, | |
2840 6116,6119,6124,6149,6210,6248,6313,6320,6327,6334,6341,6348,6353,6378, | |
2841 6439,6500,6561,6587,6620,6629,6634,6641,6646,6671,6732,6774,6777,6780, | |
2842 6785 | |
2843 }; | |
2844 | |
2845 | |
2846 static const unsigned short ag_sbe[] = { | |
2847 9, 53, 58, 69, 118, 125, 135, 164, 224, 286, 294, 299, 323, 360, | |
2848 371, 382, 418, 420, 462, 470, 473, 514, 542, 550, 584, 658, 670, 703, | |
2849 780, 849, 893, 956,1002,1011,1020,1027,1032,1039,1042,1048,1055,1058, | |
2850 1071,1088,1093,1097,1100,1105,1140,1161,1166,1173,1181,1187,1219,1231, | |
2851 1260,1289,1302,1352,1363,1366,1371,1408,1460,1512,1537,1562,1587,1612, | |
2852 1619,1628,1659,1708,1757,1806,1855,1902,1908,1913,1918,1928,1940,1947, | |
2853 1951,1954,1957,1960,1964,1976,2016,2059,2102,2145,2152,2216,2224,2229, | |
2854 2234,2237,2239,2267,2297,2316,2383,2413,2460,2467,2475,2487,2494,2503, | |
2855 2514,2521,2526,2533,2538,2545,2551,2558,2564,2571,2575,2581,2588,2591, | |
2856 2606,2639,2672,2740,2788,2818,2860,2901,2917,2920,2946,2971,3005,3042, | |
2857 3076,3114,3119,3146,3149,3157,3182,3189,3214,3240,3250,3271,3294,3346, | |
2858 3369,3421,3444,3493,3543,3589,3633,3686,3709,3762,3774,3809,3821,3843, | |
2859 3865,3900,3912,3947,3959,3992,4044,4096,4148,4200,4254,4310,4333,4390, | |
2860 4413,4469,4528,4551,4611,4634,4695,4718,4786,4805,4843,4870,4889,4892, | |
2861 4895,4899,4905,4912,4917,4924,4928,4932,4935,4940,4947,4952,4959,4963, | |
2862 4983,5044,5090,5095,5115,5182,5219,5249,5268,5275,5283,5287,5290,5293, | |
2863 5325,5369,5387,5413,5437,5447,5501,5531,5566,5612,5617,5623,5630,5651, | |
2864 5697,5702,5706,5709,5712,5715,5718,5721,5725,5730,5735,5740,5748,5758, | |
2865 5767,5774,5778,5781,5784,5787,5790,5793,5797,5802,5806,5833,5867,5901, | |
2866 5935,5969,6001,6005,6008,6011,6014,6019,6026,6047,6097,6105,6108,6113, | |
2867 6117,6121,6143,6166,6234,6307,6316,6323,6330,6337,6344,6350,6372,6395, | |
2868 6456,6517,6585,6610,6623,6630,6638,6642,6665,6688,6756,6775,6778,6782,6785 | |
2869 }; | |
2870 | |
2871 | |
2872 static const unsigned char ag_fl[] = { | |
2873 2,1,1,2,1,2,2,1,1,2,0,1,3,1,1,1,1,2,0,1,2,1,1,1,1,1,0,5,1,3,1,3,1,2,1, | |
2874 1,2,1,2,2,2,2,1,1,1,4,1,3,1,1,2,1,2,1,0,3,2,1,2,1,1,1,1,1,1,1,1,1,1,1, | |
2875 1,1,1,1,1,1,1,2,2,2,2,1,2,0,1,2,4,4,3,3,2,4,4,1,1,2,1,2,0,1,0,2,2,4,1, | |
2876 3,3,4,1,3,3,6,4,2,1,1,1,1,1,1,2,1,3,0,1,4,4,6,1,5,0,1,6,3,5,5,1,2,1,2, | |
2877 2,1,5,1,3,1,3,1,3,1,3,1,3,1,3,3,3,3,1,3,3,3,3,3,3,3,3,1,3,3,1,3,3,1,3, | |
2878 3,3,1,1,2,2,2,2,1,1,3,2,1,3,2,3,1,1,3,1,7,0,5,1,1,1,1,2,3,1,1,1,1,1,1, | |
2879 2,1,1,1,2,1,2,3,1,1,2,2,2,5,3,4,4,6,6,4,4,5,2,2,5,5,5,5,2,2,5,5,3,1,3, | |
2880 1,1,1,0,5,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, | |
2881 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,1,1, | |
2882 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,1,1, | |
2883 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,1,1, | |
2884 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,1,1, | |
2885 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,1,1, | |
2886 1,1,1,1,2,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, | |
2887 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 | |
2888 }; | |
2889 | |
2890 static const unsigned short ag_ptt[] = { | |
2891 0, 1, 1, 10, 11, 11, 11,200, 18, 18, 19, 19,200, 23, 23, 23, 24, 24, | |
2892 25, 25, 20, 27, 27, 27, 27, 27, 32, 27, 35, 35, 33, 33,208,208, 37, 37, | |
2893 39, 40, 40, 40, 40, 40, 43, 43, 43, 43, 45, 45, 46, 46,201, 47, 47, 50, | |
2894 52, 50,202, 53, 53, 55, 55, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, | |
2895 57, 57, 69, 69, 69, 71, 72, 73, 70, 77, 77, 82, 82, 79, 79, 79, 79, 79, | |
2896 84, 84, 84, 80, 81, 81, 88, 88, 89, 89, 92, 92, 92, 21, 90, 90, 90, 90, | |
2897 91, 91, 91, 91, 96, 95, 93, 93, 93, 93, 93,103,103, 93, 99,106,106, 99, | |
2898 99, 99, 28,102,114,114,100, 22, 22, 22,116,116,223,223,223, 98, 98,121, | |
2899 121,124,124,126,126,128,128,129,129,131,131,131,131,131,133,133,133,133, | |
2900 133,133,133,133,133,136,136,136,139,139,139,141,141,141,141,147,144,144, | |
2901 144,144,144,109,109,109,109,109,109,109,155,153,107,107,151,151,159,151, | |
2902 152,152,152,152,152,152,246,246,246,165,165,160,160, 78, 78,161,161,162, | |
2903 162,247,171,171,101,173,173,173,173,173,173,173,173,173,173,177,183,183, | |
2904 183,183,183,183,184,184,184,184,184,176,176,192,192,192,193,192,120, 14, | |
2905 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, | |
2906 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, | |
2907 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, | |
2908 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 38, 38, | |
2909 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, | |
2910 38, 44, 44, 44, 44, 44, 44, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, | |
2911 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, | |
2912 51, 51, 51, 51, 51, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, | |
2913 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, | |
2914 56, 56, 75, 75,119,119,166,166,166,169,169,172,172,172,172,172,172,172, | |
2915 172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172, | |
2916 172,172,172,172,172,172,172,172,198,198,199,199, 7, 5, 4, 34, 31, 36, | |
2917 41, 42, 2, 83, 85, 86, 87, 94, 48, 49, 97,104,105,108,110,113,112, 8, | |
2918 111,115,117,118,123,122,125,127,130,132,134,135,137,138,140,142,143,145, | |
2919 146,148,149,150, 3, 6,158,174,175,178,179,181,180,182,185,186,187,188, | |
2920 189,190,191 | |
2921 }; | |
2922 | |
2923 static const unsigned short *ag_valid(int ag_k) { | |
2924 const unsigned short *ag_tp = &ag_tstt[ag_sbt[(PCB).sn+1]]; | |
2925 while (*--ag_tp != (unsigned short) ag_k) if (*ag_tp == 0) return NULL; | |
2926 return ag_tp; | |
2927 } | |
2928 | |
2929 int dsl-2_change_reduction(dsl-2_token_type ag_k) { | |
2930 if (!ag_valid(ag_k)) return 0; | |
2931 (PCB).reduction_token = ag_k; | |
2932 return 1; | |
2933 } | |
2934 | |
2935 static void ag_default(const int *ag_tp) { | |
2936 (PCB).ag_dsn = (PCB).sn; | |
2937 (PCB).ag_dtl = ag_tp; | |
2938 while (!ag_valid((dsl-2_token_type) *ag_tp)) ag_tp++; | |
2939 (PCB).reduction_token = (dsl-2_token_type) *ag_tp; | |
2940 } | |
2941 | |
2942 | |
2943 | |
2944 static void ag_ra(void) | |
2945 { | |
2946 switch(ag_rpx[(PCB).ag_ap]) { | |
2947 case 1: ag_rp_1(V(0,(unsigned *))); break; | |
2948 case 2: ag_rp_2(V(0,(unsigned *))); break; | |
2949 case 3: ag_rp_3(V(0,(unsigned *))); break; | |
2950 case 4: ag_rp_4(); break; | |
2951 case 5: ag_rp_5(); break; | |
2952 case 6: ag_rp_6(); break; | |
2953 case 7: ag_rp_7(); break; | |
2954 case 8: ag_rp_8(V(0,(int *))); break; | |
2955 case 9: ag_rp_9(V(1,(int *))); break; | |
2956 case 10: ag_rp_10(); break; | |
2957 case 11: ag_rp_11(); break; | |
2958 case 12: ag_rp_12(); break; | |
2959 case 13: ag_rp_13(); break; | |
2960 case 14: ag_rp_14(); break; | |
2961 case 15: ag_rp_15(); break; | |
2962 case 16: ag_rp_16(); break; | |
2963 case 17: ag_rp_17(V(0,(int *))); break; | |
2964 case 18: ag_rp_18(); break; | |
2965 case 19: ag_rp_19(); break; | |
2966 case 20: ag_rp_20(); break; | |
2967 case 21: ag_rp_21(V(0,(int *))); break; | |
2968 case 22: ag_rp_22(V(0,(int *))); break; | |
2969 case 23: V(0,(int *)) = ag_rp_23(); break; | |
2970 case 24: V(0,(int *)) = ag_rp_24(); break; | |
2971 case 25: V(0,(int *)) = ag_rp_25(); break; | |
2972 case 26: V(0,(int *)) = ag_rp_26(); break; | |
2973 case 27: V(0,(int *)) = ag_rp_27(); break; | |
2974 case 28: V(0,(int *)) = ag_rp_28(); break; | |
2975 case 29: V(0,(int *)) = ag_rp_29(); break; | |
2976 case 30: V(0,(int *)) = ag_rp_30(); break; | |
2977 case 31: V(0,(int *)) = ag_rp_31(); break; | |
2978 case 32: V(0,(int *)) = ag_rp_32(); break; | |
2979 case 33: V(0,(int *)) = ag_rp_33(); break; | |
2980 case 34: V(0,(int *)) = ag_rp_34(V(1,(int *))); break; | |
2981 case 35: V(0,(int *)) = ag_rp_35(V(0,(int *)), V(1,(int *))); break; | |
2982 case 36: V(0,(int *)) = ag_rp_36(V(0,(int *)), V(1,(int *))); break; | |
2983 case 37: V(0,(int *)) = ag_rp_37(V(1,(long *))); break; | |
2984 case 38: V(0,(long *)) = ag_rp_38(V(0,(long *)), V(1,(long *))); break; | |
2985 case 39: ag_rp_39(); break; | |
2986 case 40: ag_rp_40(); break; | |
2987 case 41: ag_rp_41(V(0,(char * *))); break; | |
2988 case 42: ag_rp_42(V(0,(char * *))); break; | |
2989 case 43: ag_rp_43(V(0,(char * *))); break; | |
2990 case 44: V(0,(char * *)) = ag_rp_44(); break; | |
2991 case 45: V(0,(char * *)) = ag_rp_45(); break; | |
2992 case 46: V(0,(char * *)) = ag_rp_46(V(0,(char * *))); break; | |
2993 case 47: ag_rp_47(); break; | |
2994 case 48: ag_rp_48(); break; | |
2995 case 49: ag_rp_49(); break; | |
2996 case 50: ag_rp_50(V(0,(int *))); break; | |
2997 case 51: V(0,(int *)) = ag_rp_51(V(2,(int *))); break; | |
2998 case 52: V(0,(int *)) = ag_rp_52(V(2,(int *))); break; | |
2999 case 53: V(0,(int *)) = ag_rp_53(V(0,(int *)), V(4,(int *))); break; | |
3000 case 54: V(0,(int *)) = ag_rp_54(V(2,(long *))); break; | |
3001 case 55: V(0,(int *)) = ag_rp_55(V(0,(int *))); break; | |
3002 case 56: ag_rp_56(V(0,(unsigned *))); break; | |
3003 case 57: ag_rp_57(V(0,(unsigned *)), V(2,(long *))); break; | |
3004 case 58: ag_rp_58(V(0,(unsigned *))); break; | |
3005 case 59: ag_rp_59(V(0,(unsigned *)), V(2,(long *)), V(4,(long *))); break; | |
3006 case 60: ag_default(&ag_rtt[0]); V(0,(unsigned *)) = ag_rp_60(); break; | |
3007 case 61: ag_rp_61(V(2,(long *))); break; | |
3008 case 62: ag_rp_62(); break; | |
3009 case 63: ag_rp_63(V(1,(int *))); break; | |
3010 case 64: ag_rp_64(V(3,(long *))); break; | |
3011 case 65: ag_rp_65(); break; | |
3012 case 66: V(0,(int *)) = ag_rp_66(); break; | |
3013 case 67: V(0,(int *)) = ag_rp_67(V(0,(int *))); break; | |
3014 case 68: ag_rp_68(V(0,(int *))); break; | |
3015 case 69: ag_rp_69(V(1,(int *))); break; | |
3016 case 70: ag_rp_70(V(1,(int *))); break; | |
3017 case 71: V(0,(long *)) = ag_rp_71(V(0,(long *)), V(2,(long *)), V(4,(long *))); break; | |
3018 case 72: V(0,(long *)) = ag_rp_72(V(0,(long *)), V(2,(long *))); break; | |
3019 case 73: V(0,(long *)) = ag_rp_73(V(0,(long *)), V(2,(long *))); break; | |
3020 case 74: V(0,(long *)) = ag_rp_74(V(0,(long *)), V(2,(long *))); break; | |
3021 case 75: V(0,(long *)) = ag_rp_75(V(0,(long *)), V(2,(long *))); break; | |
3022 case 76: V(0,(long *)) = ag_rp_76(V(0,(long *)), V(2,(long *))); break; | |
3023 case 77: V(0,(long *)) = ag_rp_77(V(0,(long *)), V(2,(long *))); break; | |
3024 case 78: V(0,(long *)) = ag_rp_78(V(0,(long *)), V(2,(long *))); break; | |
3025 case 79: V(0,(long *)) = ag_rp_79(); break; | |
3026 case 80: V(0,(long *)) = ag_rp_80(); break; | |
3027 case 81: V(0,(long *)) = ag_rp_81(V(0,(long *)), V(2,(long *))); break; | |
3028 case 82: V(0,(long *)) = ag_rp_82(V(0,(long *)), V(2,(long *))); break; | |
3029 case 83: V(0,(long *)) = ag_rp_83(V(0,(long *)), V(2,(long *))); break; | |
3030 case 84: V(0,(long *)) = ag_rp_84(V(0,(long *)), V(2,(long *))); break; | |
3031 case 85: V(0,(long *)) = ag_rp_85(); break; | |
3032 case 86: V(0,(long *)) = ag_rp_86(); break; | |
3033 case 87: V(0,(long *)) = ag_rp_87(); break; | |
3034 case 88: V(0,(long *)) = ag_rp_88(); break; | |
3035 case 89: V(0,(long *)) = ag_rp_89(V(0,(long *)), V(2,(long *))); break; | |
3036 case 90: V(0,(long *)) = ag_rp_90(V(0,(long *)), V(2,(long *))); break; | |
3037 case 91: V(0,(long *)) = ag_rp_91(V(0,(long *)), V(2,(long *))); break; | |
3038 case 92: V(0,(long *)) = ag_rp_92(V(0,(long *)), V(2,(long *))); break; | |
3039 case 93: V(0,(long *)) = ag_rp_93(V(0,(long *)), V(2,(long *))); break; | |
3040 case 94: V(0,(long *)) = ag_rp_94(V(0,(long *)), V(2,(long *))); break; | |
3041 case 95: V(0,(long *)) = ag_rp_95(V(0,(long *)), V(2,(long *))); break; | |
3042 case 96: V(0,(long *)) = ag_rp_96(V(0,(long *))); break; | |
3043 case 97: V(0,(long *)) = ag_rp_97(V(1,(long *))); break; | |
3044 case 98: V(0,(long *)) = ag_rp_98(V(1,(long *))); break; | |
3045 case 99: V(0,(long *)) = ag_rp_99(V(1,(long *))); break; | |
3046 case 100: V(0,(long *)) = ag_rp_100(V(1,(long *))); break; | |
3047 case 101: V(0,(long *)) = ag_rp_101(V(2,(long *))); break; | |
3048 case 102: V(0,(long *)) = ag_rp_102(); break; | |
3049 case 103: V(0,(long *)) = ag_rp_103(V(1,(long *))); break; | |
3050 case 104: V(0,(long *)) = ag_rp_104(V(0,(long *))); break; | |
3051 case 105: ag_default(&ag_rtt[4]); V(0,(long *)) = ag_rp_105(); break; | |
3052 case 106: ag_rp_106(); break; | |
3053 case 107: ag_rp_107(V(3,(long *)), V(5,(long *))); break; | |
3054 case 108: ag_rp_108(); break; | |
3055 case 109: ag_rp_109(); break; | |
3056 case 110: ag_rp_110(V(0,(long *))); break; | |
3057 case 111: ag_rp_111(V(0,(long *))); break; | |
3058 case 112: ag_rp_112(); break; | |
3059 case 113: ag_rp_113(V(1,(long *))); break; | |
3060 case 114: V(0,(long *)) = ag_rp_114(); break; | |
3061 case 115: V(0,(long *)) = ag_rp_115(V(0,(long *)), V(1,(long *))); break; | |
3062 case 116: V(0,(long *)) = ag_rp_116(V(0,(int *))); break; | |
3063 case 117: V(0,(long *)) = ag_rp_117(); break; | |
3064 case 118: V(0,(long *)) = ag_rp_118(V(0,(long *)), V(1,(int *))); break; | |
3065 case 119: V(0,(long *)) = ag_rp_119(V(0,(int *))); break; | |
3066 case 120: V(0,(long *)) = ag_rp_120(V(0,(long *)), V(1,(int *))); break; | |
3067 case 121: V(0,(int *)) = ag_rp_121(V(1,(int *))); break; | |
3068 case 122: ag_rp_122(V(0,(screen_descriptor * *))); break; | |
3069 case 123: V(0,(screen_descriptor * *)) = ag_rp_123(); break; | |
3070 case 124: V(0,(screen_descriptor * *)) = ag_rp_124(V(0,(screen_descriptor * *))); break; | |
3071 case 125: V(0,(screen_descriptor * *)) = ag_rp_125(V(0,(screen_descriptor * *)), V(1,(int *))); break; | |
3072 case 126: V(0,(screen_descriptor * *)) = ag_rp_126(V(0,(screen_descriptor * *)), V(2,(int *))); break; | |
3073 case 127: V(0,(screen_descriptor * *)) = ag_rp_127(V(0,(screen_descriptor * *)), V(2,(int *))); break; | |
3074 case 128: V(0,(screen_descriptor * *)) = ag_rp_128(V(0,(screen_descriptor * *)), V(3,(long *)), V(5,(long *))); break; | |
3075 case 129: V(0,(screen_descriptor * *)) = ag_rp_129(V(0,(screen_descriptor * *)), V(3,(long *)), V(5,(long *))); break; | |
3076 case 130: V(0,(screen_descriptor * *)) = ag_rp_130(V(0,(screen_descriptor * *)), V(1,(query_item * *))); break; | |
3077 case 131: V(0,(screen_descriptor * *)) = ag_rp_131(V(0,(screen_descriptor * *)), V(1,(query_item * *))); break; | |
3078 case 132: V(0,(int *)) = ag_rp_132(V(2,(long *)), V(4,(long *))); break; | |
3079 case 133: V(0,(query_item * *)) = ag_rp_133(); break; | |
3080 case 134: V(0,(query_item * *)) = ag_rp_134(V(0,(query_item * *))); break; | |
3081 case 135: V(0,(query_item * *)) = ag_rp_135(V(0,(query_item * *))); break; | |
3082 case 136: V(0,(query_item * *)) = ag_rp_136(V(0,(query_item * *))); break; | |
3083 case 137: V(0,(query_item * *)) = ag_rp_137(V(0,(query_item * *))); break; | |
3084 case 138: V(0,(query_item * *)) = ag_rp_138(); break; | |
3085 case 139: V(0,(query_item * *)) = ag_rp_139(V(0,(query_item * *))); break; | |
3086 case 140: V(0,(query_item * *)) = ag_rp_140(V(0,(query_item * *))); break; | |
3087 case 141: V(0,(query_item * *)) = ag_rp_141(V(0,(query_item * *))); break; | |
3088 case 142: ag_rp_142(); break; | |
3089 case 143: ag_rp_143(); break; | |
3090 case 144: ag_rp_144(); break; | |
3091 case 145: ag_rp_145(); break; | |
3092 } | |
3093 (PCB).la_ptr = (PCB).pointer; | |
3094 } | |
3095 | |
3096 #define TOKEN_NAMES dsl-2_token_names | |
3097 const char *const dsl-2_token_names[263] = { | |
3098 "script file", | |
3099 "ws", | |
3100 "literal", | |
3101 "integer constant", | |
3102 "string literal", | |
3103 "paren string", | |
3104 "character constant", | |
3105 "eol", | |
3106 "name", | |
3107 "white", | |
3108 "comment", | |
3109 "comment head", | |
3110 "\"*/\"", | |
3111 "\"/*\"", | |
3112 "", | |
3113 "'\\n'", | |
3114 "\"//\"", | |
3115 "not eol", | |
3116 "", | |
3117 "", | |
3118 "script file", | |
3119 "execution block", | |
3120 "declaration", | |
3121 "", | |
3122 "", | |
3123 "", | |
3124 "eof", | |
3125 "word", | |
3126 "integer variable", | |
3127 "string variable", | |
3128 "undeclared variable", | |
3129 "'['", | |
3130 "", | |
3131 "parameter string", | |
3132 "']'", | |
3133 "string", | |
3134 "'#'", | |
3135 "param word", | |
3136 "text char", | |
3137 "action text", | |
3138 "action text head", | |
3139 "'}'", | |
3140 "'{'", | |
3141 "action word", | |
3142 "", | |
3143 "action parameter string", | |
3144 "action param word", | |
3145 "paren string chars", | |
3146 "')'", | |
3147 "'('", | |
3148 "paren string char", | |
3149 "not paren", | |
3150 "", | |
3151 "string chars", | |
3152 "'\\\"'", | |
3153 "string char", | |
3154 "not double quote", | |
3155 "escape sequence", | |
3156 "\"\\\\a\"", | |
3157 "\"\\\\b\"", | |
3158 "\"\\\\f\"", | |
3159 "\"\\\\n\"", | |
3160 "\"\\\\r\"", | |
3161 "\"\\\\t\"", | |
3162 "\"\\\\v\"", | |
3163 "\"\\\\\\\\\"", | |
3164 "\"\\\\?\"", | |
3165 "\"\\\\\\'\"", | |
3166 "\"\\\\\\\"\"", | |
3167 "octal escape", | |
3168 "hex escape", | |
3169 "one octal", | |
3170 "two octal", | |
3171 "three octal", | |
3172 "'\\\\'", | |
3173 "", | |
3174 "\"\\\\x\"", | |
3175 "hex number", | |
3176 "hex digit", | |
3177 "command", | |
3178 "identifier", | |
3179 "parameters", | |
3180 "", | |
3181 "'<'", | |
3182 "piped command", | |
3183 "'|'", | |
3184 "'>'", | |
3185 "\">>\"", | |
3186 "", | |
3187 "", | |
3188 "command sequence", | |
3189 "if sequence", | |
3190 "", | |
3191 "statement", | |
3192 "\"else\"", | |
3193 "if statement", | |
3194 "if condition", | |
3195 "\"if\"", | |
3196 "conditional exp", | |
3197 "assignment", | |
3198 "for statement", | |
3199 "screen description", | |
3200 "while statement", | |
3201 "", | |
3202 "'='", | |
3203 "';'", | |
3204 "", | |
3205 "string exp", | |
3206 "'@'", | |
3207 "primary exp", | |
3208 "\"while\"", | |
3209 "\"for\"", | |
3210 "\"in\"", | |
3211 "\"do\"", | |
3212 "", | |
3213 "\"action\"", | |
3214 "literals", | |
3215 "\"int\"", | |
3216 "\"string\"", | |
3217 "letter", | |
3218 "digit", | |
3219 "logical or exp", | |
3220 "'\\?'", | |
3221 "':'", | |
3222 "logical and exp", | |
3223 "\"||\"", | |
3224 "inclusive or exp", | |
3225 "\"&&\"", | |
3226 "exclusive or exp", | |
3227 "and exp", | |
3228 "'^'", | |
3229 "equality exp", | |
3230 "'&'", | |
3231 "relational exp", | |
3232 "\"==\"", | |
3233 "\"!=\"", | |
3234 "shift exp", | |
3235 "\"<=\"", | |
3236 "\">=\"", | |
3237 "additive exp", | |
3238 "\"<<\"", | |
3239 "multiplicative exp", | |
3240 "'+'", | |
3241 "'-'", | |
3242 "unary exp", | |
3243 "'*'", | |
3244 "'/'", | |
3245 "nonzero", | |
3246 "'%'", | |
3247 "'~'", | |
3248 "'!'", | |
3249 "string term", | |
3250 "string element", | |
3251 "numeric name", | |
3252 "built_in name", | |
3253 "built_in argument", | |
3254 "string name", | |
3255 "undefined name", | |
3256 "\"..\"", | |
3257 "", | |
3258 "hex constant", | |
3259 "octal constant", | |
3260 "decimal constant", | |
3261 "\"0x\"", | |
3262 "\"0X\"", | |
3263 "", | |
3264 "", | |
3265 "", | |
3266 "'0'", | |
3267 "", | |
3268 "'\\''", | |
3269 "char constant element", | |
3270 "not single quote", | |
3271 "screen items", | |
3272 "\"screen\"", | |
3273 "\"title\"", | |
3274 "formula", | |
3275 "color spec", | |
3276 "\"entry\"", | |
3277 "\"highlight\"", | |
3278 "\"size\"", | |
3279 "','", | |
3280 "\"location\"", | |
3281 "query line", | |
3282 "button line", | |
3283 "\"color\"", | |
3284 "\"field\"", | |
3285 "\"variable\"", | |
3286 "\"default\"", | |
3287 "\"prompt\"", | |
3288 "\"explanation\"", | |
3289 "\"button\"", | |
3290 "formula element", | |
3291 "", | |
3292 "", | |
3293 "", | |
3294 "", | |
3295 "", | |
3296 "", | |
3297 "", | |
3298 "eol", | |
3299 "paren string", | |
3300 "string literal", | |
3301 "']'", | |
3302 "'['", | |
3303 "'#'", | |
3304 "'}'", | |
3305 "'{'", | |
3306 "literal", | |
3307 "'<'", | |
3308 "'|'", | |
3309 "'>'", | |
3310 "\">>\"", | |
3311 "\"else\"", | |
3312 "')'", | |
3313 "'('", | |
3314 "\"if\"", | |
3315 "'='", | |
3316 "';'", | |
3317 "'@'", | |
3318 "\"while\"", | |
3319 "\"do\"", | |
3320 "\"in\"", | |
3321 "name", | |
3322 "\"for\"", | |
3323 "\"action\"", | |
3324 "\"int\"", | |
3325 "\"string\"", | |
3326 "':'", | |
3327 "'\\?'", | |
3328 "\"||\"", | |
3329 "\"&&\"", | |
3330 "'^'", | |
3331 "'&'", | |
3332 "\"==\"", | |
3333 "\"!=\"", | |
3334 "\"<=\"", | |
3335 "\">=\"", | |
3336 "\"<<\"", | |
3337 "'+'", | |
3338 "'-'", | |
3339 "'*'", | |
3340 "'/'", | |
3341 "'%'", | |
3342 "'~'", | |
3343 "'!'", | |
3344 "integer constant", | |
3345 "character constant", | |
3346 "\"..\"", | |
3347 "\"screen\"", | |
3348 "\"title\"", | |
3349 "\"entry\"", | |
3350 "\"highlight\"", | |
3351 "','", | |
3352 "\"size\"", | |
3353 "\"location\"", | |
3354 "\"color\"", | |
3355 "\"field\"", | |
3356 "\"variable\"", | |
3357 "\"default\"", | |
3358 "\"prompt\"", | |
3359 "\"explanation\"", | |
3360 "\"button\"", | |
3361 | |
3362 }; | |
3363 | |
3364 #ifndef MISSING_FORMAT | |
3365 #define MISSING_FORMAT "Missing %s" | |
3366 #endif | |
3367 #ifndef UNEXPECTED_FORMAT | |
3368 #define UNEXPECTED_FORMAT "Unexpected %s" | |
3369 #endif | |
3370 #ifndef UNNAMED_TOKEN | |
3371 #define UNNAMED_TOKEN "input" | |
3372 #endif | |
3373 | |
3374 | |
3375 static void ag_diagnose(void) { | |
3376 int ag_snd = (PCB).sn; | |
3377 int ag_k = ag_sbt[ag_snd]; | |
3378 | |
3379 if (*TOKEN_NAMES[ag_tstt[ag_k]] && ag_astt[ag_k + 1] == ag_action_8) { | |
3380 sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]); | |
3381 } | |
3382 else if (ag_astt[ag_sbe[(PCB).sn]] == ag_action_8 | |
3383 && (ag_k = (int) ag_sbe[(PCB).sn] + 1) == (int) ag_sbt[(PCB).sn+1] - 1 | |
3384 && *TOKEN_NAMES[ag_tstt[ag_k]]) { | |
3385 sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]); | |
3386 } | |
3387 else if ((PCB).token_number && *TOKEN_NAMES[(PCB).token_number]) { | |
3388 sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, TOKEN_NAMES[(PCB).token_number]); | |
3389 } | |
3390 else if (isprint(INPUT_CODE((*(PCB).pointer))) && INPUT_CODE((*(PCB).pointer)) != '\\') { | |
3391 char buf[20]; | |
3392 sprintf(buf, "\'%c\'", (char) INPUT_CODE((*(PCB).pointer))); | |
3393 sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, buf); | |
3394 } | |
3395 else sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, UNNAMED_TOKEN); | |
3396 (PCB).error_message = (PCB).ag_msg; | |
3397 | |
3398 | |
3399 } | |
3400 static int ag_action_1_r_proc(void); | |
3401 static int ag_action_2_r_proc(void); | |
3402 static int ag_action_3_r_proc(void); | |
3403 static int ag_action_4_r_proc(void); | |
3404 static int ag_action_1_s_proc(void); | |
3405 static int ag_action_3_s_proc(void); | |
3406 static int ag_action_1_proc(void); | |
3407 static int ag_action_2_proc(void); | |
3408 static int ag_action_3_proc(void); | |
3409 static int ag_action_4_proc(void); | |
3410 static int ag_action_5_proc(void); | |
3411 static int ag_action_6_proc(void); | |
3412 static int ag_action_7_proc(void); | |
3413 static int ag_action_8_proc(void); | |
3414 static int ag_action_9_proc(void); | |
3415 static int ag_action_10_proc(void); | |
3416 static int ag_action_11_proc(void); | |
3417 static int ag_action_8_proc(void); | |
3418 | |
3419 | |
3420 static int (*const ag_r_procs_scan[])(void) = { | |
3421 ag_action_1_r_proc, | |
3422 ag_action_2_r_proc, | |
3423 ag_action_3_r_proc, | |
3424 ag_action_4_r_proc | |
3425 }; | |
3426 | |
3427 static int (*const ag_s_procs_scan[])(void) = { | |
3428 ag_action_1_s_proc, | |
3429 ag_action_2_r_proc, | |
3430 ag_action_3_s_proc, | |
3431 ag_action_4_r_proc | |
3432 }; | |
3433 | |
3434 static int (*const ag_gt_procs_scan[])(void) = { | |
3435 ag_action_1_proc, | |
3436 ag_action_2_proc, | |
3437 ag_action_3_proc, | |
3438 ag_action_4_proc, | |
3439 ag_action_5_proc, | |
3440 ag_action_6_proc, | |
3441 ag_action_7_proc, | |
3442 ag_action_8_proc, | |
3443 ag_action_9_proc, | |
3444 ag_action_10_proc, | |
3445 ag_action_11_proc, | |
3446 ag_action_8_proc | |
3447 }; | |
3448 | |
3449 | |
3450 static int ag_action_10_proc(void) { | |
3451 int ag_t = (PCB).token_number; | |
3452 (PCB).btsx = 0, (PCB).drt = -1; | |
3453 do { | |
3454 ag_track(); | |
3455 (PCB).token_number = (dsl-2_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr)); | |
3456 (PCB).la_ptr++; | |
3457 if (ag_key_index[(PCB).sn]) { | |
3458 unsigned ag_k = ag_key_index[(PCB).sn]; | |
3459 int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer)); | |
3460 if (ag_ch <= 255) { | |
3461 while (ag_key_ch[ag_k] < ag_ch) ag_k++; | |
3462 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k); | |
3463 } | |
3464 } | |
3465 } while ((PCB).token_number == (dsl-2_token_type) ag_t); | |
3466 (PCB).la_ptr = (PCB).pointer; | |
3467 return 1; | |
3468 } | |
3469 | |
3470 static int ag_action_11_proc(void) { | |
3471 int ag_t = (PCB).token_number; | |
3472 | |
3473 (PCB).btsx = 0, (PCB).drt = -1; | |
3474 do { | |
3475 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer; | |
3476 (PCB).ssx--; | |
3477 ag_track(); | |
3478 ag_ra(); | |
3479 if ((PCB).exit_flag != AG_RUNNING_CODE) return 0; | |
3480 (PCB).ssx++; | |
3481 (PCB).token_number = (dsl-2_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr)); | |
3482 (PCB).la_ptr++; | |
3483 if (ag_key_index[(PCB).sn]) { | |
3484 unsigned ag_k = ag_key_index[(PCB).sn]; | |
3485 int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer)); | |
3486 if (ag_ch <= 255) { | |
3487 while (ag_key_ch[ag_k] < ag_ch) ag_k++; | |
3488 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k); | |
3489 } | |
3490 } | |
3491 } | |
3492 while ((PCB).token_number == (dsl-2_token_type) ag_t); | |
3493 (PCB).la_ptr = (PCB).pointer; | |
3494 return 1; | |
3495 } | |
3496 | |
3497 static int ag_action_3_r_proc(void) { | |
3498 int ag_sd = ag_fl[(PCB).ag_ap] - 1; | |
3499 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; | |
3500 (PCB).btsx = 0, (PCB).drt = -1; | |
3501 (PCB).reduction_token = (dsl-2_token_type) ag_ptt[(PCB).ag_ap]; | |
3502 ag_ra(); | |
3503 return (PCB).exit_flag == AG_RUNNING_CODE; | |
3504 } | |
3505 | |
3506 static int ag_action_3_s_proc(void) { | |
3507 int ag_sd = ag_fl[(PCB).ag_ap] - 1; | |
3508 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; | |
3509 (PCB).btsx = 0, (PCB).drt = -1; | |
3510 (PCB).reduction_token = (dsl-2_token_type) ag_ptt[(PCB).ag_ap]; | |
3511 ag_ra(); | |
3512 return (PCB).exit_flag == AG_RUNNING_CODE; | |
3513 } | |
3514 | |
3515 static int ag_action_4_r_proc(void) { | |
3516 int ag_sd = ag_fl[(PCB).ag_ap] - 1; | |
3517 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; | |
3518 (PCB).reduction_token = (dsl-2_token_type) ag_ptt[(PCB).ag_ap]; | |
3519 return 1; | |
3520 } | |
3521 | |
3522 static int ag_action_2_proc(void) { | |
3523 (PCB).btsx = 0, (PCB).drt = -1; | |
3524 if ((PCB).ssx >= 128) { | |
3525 (PCB).exit_flag = AG_STACK_ERROR_CODE; | |
3526 PARSER_STACK_OVERFLOW; | |
3527 } | |
3528 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer; | |
3529 GET_CONTEXT; | |
3530 (PCB).ss[(PCB).ssx] = (PCB).sn; | |
3531 (PCB).ssx++; | |
3532 (PCB).sn = (PCB).ag_ap; | |
3533 ag_track(); | |
3534 return 0; | |
3535 } | |
3536 | |
3537 static int ag_action_9_proc(void) { | |
3538 if ((PCB).drt == -1) { | |
3539 (PCB).drt=(PCB).token_number; | |
3540 (PCB).dssx=(PCB).ssx; | |
3541 (PCB).dsn=(PCB).sn; | |
3542 } | |
3543 ag_prot(); | |
3544 (PCB).vs[(PCB).ssx] = ag_null_value; | |
3545 GET_CONTEXT; | |
3546 (PCB).ss[(PCB).ssx] = (PCB).sn; | |
3547 (PCB).ssx++; | |
3548 (PCB).sn = (PCB).ag_ap; | |
3549 (PCB).la_ptr = (PCB).pointer; | |
3550 return (PCB).exit_flag == AG_RUNNING_CODE; | |
3551 } | |
3552 | |
3553 static int ag_action_2_r_proc(void) { | |
3554 (PCB).ssx++; | |
3555 (PCB).sn = (PCB).ag_ap; | |
3556 return 0; | |
3557 } | |
3558 | |
3559 static int ag_action_7_proc(void) { | |
3560 --(PCB).ssx; | |
3561 (PCB).la_ptr = (PCB).pointer; | |
3562 (PCB).exit_flag = AG_SUCCESS_CODE; | |
3563 return 0; | |
3564 } | |
3565 | |
3566 static int ag_action_1_proc(void) { | |
3567 ag_track(); | |
3568 (PCB).exit_flag = AG_SUCCESS_CODE; | |
3569 return 0; | |
3570 } | |
3571 | |
3572 static int ag_action_1_r_proc(void) { | |
3573 (PCB).exit_flag = AG_SUCCESS_CODE; | |
3574 return 0; | |
3575 } | |
3576 | |
3577 static int ag_action_1_s_proc(void) { | |
3578 (PCB).exit_flag = AG_SUCCESS_CODE; | |
3579 return 0; | |
3580 } | |
3581 | |
3582 static int ag_action_4_proc(void) { | |
3583 int ag_sd = ag_fl[(PCB).ag_ap] - 1; | |
3584 (PCB).reduction_token = (dsl-2_token_type) ag_ptt[(PCB).ag_ap]; | |
3585 (PCB).btsx = 0, (PCB).drt = -1; | |
3586 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer; | |
3587 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; | |
3588 else GET_CONTEXT; | |
3589 (PCB).ss[(PCB).ssx] = (PCB).sn; | |
3590 ag_track(); | |
3591 while ((PCB).exit_flag == AG_RUNNING_CODE) { | |
3592 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; | |
3593 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; | |
3594 do { | |
3595 unsigned ag_tx = (ag_t1 + ag_t2)/2; | |
3596 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; | |
3597 else ag_t2 = ag_tx; | |
3598 } while (ag_t1 < ag_t2); | |
3599 if (ag_tstt[ag_t1] != (PCB).reduction_token) { | |
3600 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; | |
3601 REDUCTION_TOKEN_ERROR; break;} | |
3602 (PCB).ag_ap = ag_pstt[ag_t1]; | |
3603 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break; | |
3604 } | |
3605 return 0; | |
3606 } | |
3607 | |
3608 static int ag_action_3_proc(void) { | |
3609 int ag_sd = ag_fl[(PCB).ag_ap] - 1; | |
3610 (PCB).btsx = 0, (PCB).drt = -1; | |
3611 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer; | |
3612 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; | |
3613 else GET_CONTEXT; | |
3614 (PCB).ss[(PCB).ssx] = (PCB).sn; | |
3615 ag_track(); | |
3616 (PCB).reduction_token = (dsl-2_token_type) ag_ptt[(PCB).ag_ap]; | |
3617 ag_ra(); | |
3618 while ((PCB).exit_flag == AG_RUNNING_CODE) { | |
3619 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; | |
3620 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; | |
3621 do { | |
3622 unsigned ag_tx = (ag_t1 + ag_t2)/2; | |
3623 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; | |
3624 else ag_t2 = ag_tx; | |
3625 } while (ag_t1 < ag_t2); | |
3626 if (ag_tstt[ag_t1] != (PCB).reduction_token) { | |
3627 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; | |
3628 REDUCTION_TOKEN_ERROR; break;} | |
3629 (PCB).ag_ap = ag_pstt[ag_t1]; | |
3630 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break; | |
3631 } | |
3632 return 0; | |
3633 } | |
3634 | |
3635 static int ag_action_8_proc(void) { | |
3636 ag_undo(); | |
3637 (PCB).la_ptr = (PCB).pointer; | |
3638 (PCB).exit_flag = AG_SYNTAX_ERROR_CODE; | |
3639 ag_diagnose(); | |
3640 SYNTAX_ERROR; | |
3641 {(PCB).la_ptr = (PCB).pointer + 1; ag_track();} | |
3642 return (PCB).exit_flag == AG_RUNNING_CODE; | |
3643 } | |
3644 | |
3645 static int ag_action_5_proc(void) { | |
3646 int ag_sd = ag_fl[(PCB).ag_ap]; | |
3647 (PCB).btsx = 0, (PCB).drt = -1; | |
3648 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; | |
3649 else { | |
3650 GET_CONTEXT; | |
3651 (PCB).ss[(PCB).ssx] = (PCB).sn; | |
3652 } | |
3653 (PCB).la_ptr = (PCB).pointer; | |
3654 (PCB).reduction_token = (dsl-2_token_type) ag_ptt[(PCB).ag_ap]; | |
3655 ag_ra(); | |
3656 while ((PCB).exit_flag == AG_RUNNING_CODE) { | |
3657 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; | |
3658 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; | |
3659 do { | |
3660 unsigned ag_tx = (ag_t1 + ag_t2)/2; | |
3661 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; | |
3662 else ag_t2 = ag_tx; | |
3663 } while (ag_t1 < ag_t2); | |
3664 if (ag_tstt[ag_t1] != (PCB).reduction_token) { | |
3665 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; | |
3666 REDUCTION_TOKEN_ERROR; break;} | |
3667 (PCB).ag_ap = ag_pstt[ag_t1]; | |
3668 if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break; | |
3669 } | |
3670 return (PCB).exit_flag == AG_RUNNING_CODE; | |
3671 } | |
3672 | |
3673 static int ag_action_6_proc(void) { | |
3674 int ag_sd = ag_fl[(PCB).ag_ap]; | |
3675 (PCB).reduction_token = (dsl-2_token_type) ag_ptt[(PCB).ag_ap]; | |
3676 if ((PCB).drt == -1) { | |
3677 (PCB).drt=(PCB).token_number; | |
3678 (PCB).dssx=(PCB).ssx; | |
3679 (PCB).dsn=(PCB).sn; | |
3680 } | |
3681 if (ag_sd) { | |
3682 (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; | |
3683 } | |
3684 else { | |
3685 ag_prot(); | |
3686 (PCB).vs[(PCB).ssx] = ag_null_value; | |
3687 GET_CONTEXT; | |
3688 (PCB).ss[(PCB).ssx] = (PCB).sn; | |
3689 } | |
3690 (PCB).la_ptr = (PCB).pointer; | |
3691 while ((PCB).exit_flag == AG_RUNNING_CODE) { | |
3692 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; | |
3693 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; | |
3694 do { | |
3695 unsigned ag_tx = (ag_t1 + ag_t2)/2; | |
3696 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; | |
3697 else ag_t2 = ag_tx; | |
3698 } while (ag_t1 < ag_t2); | |
3699 if (ag_tstt[ag_t1] != (PCB).reduction_token) { | |
3700 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; | |
3701 REDUCTION_TOKEN_ERROR; break;} | |
3702 (PCB).ag_ap = ag_pstt[ag_t1]; | |
3703 if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break; | |
3704 } | |
3705 return (PCB).exit_flag == AG_RUNNING_CODE; | |
3706 } | |
3707 | |
3708 | |
3709 void init_dsl-2(void) { | |
3710 (PCB).la_ptr = (PCB).pointer; | |
3711 (PCB).ss[0] = (PCB).sn = (PCB).ssx = 0; | |
3712 (PCB).exit_flag = AG_RUNNING_CODE; | |
3713 (PCB).line = FIRST_LINE; | |
3714 (PCB).column = FIRST_COLUMN; | |
3715 (PCB).btsx = 0, (PCB).drt = -1; | |
3716 } | |
3717 | |
3718 void dsl-2(void) { | |
3719 init_dsl-2(); | |
3720 (PCB).exit_flag = AG_RUNNING_CODE; | |
3721 while ((PCB).exit_flag == AG_RUNNING_CODE) { | |
3722 unsigned ag_t1 = ag_sbt[(PCB).sn]; | |
3723 if (ag_tstt[ag_t1]) { | |
3724 unsigned ag_t2 = ag_sbe[(PCB).sn] - 1; | |
3725 (PCB).token_number = (dsl-2_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr)); | |
3726 (PCB).la_ptr++; | |
3727 if (ag_key_index[(PCB).sn]) { | |
3728 unsigned ag_k = ag_key_index[(PCB).sn]; | |
3729 int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer)); | |
3730 if (ag_ch <= 255) { | |
3731 while (ag_key_ch[ag_k] < ag_ch) ag_k++; | |
3732 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k); | |
3733 } | |
3734 } | |
3735 do { | |
3736 unsigned ag_tx = (ag_t1 + ag_t2)/2; | |
3737 if (ag_tstt[ag_tx] > (unsigned short)(PCB).token_number) | |
3738 ag_t1 = ag_tx + 1; | |
3739 else ag_t2 = ag_tx; | |
3740 } while (ag_t1 < ag_t2); | |
3741 if (ag_tstt[ag_t1] != (unsigned short)(PCB).token_number) | |
3742 ag_t1 = ag_sbe[(PCB).sn]; | |
3743 } | |
3744 (PCB).ag_ap = ag_pstt[ag_t1]; | |
3745 (ag_gt_procs_scan[ag_astt[ag_t1]])(); | |
3746 } | |
3747 } | |
3748 | |
3749 |