comparison tests/agcl/oldagsrc/good/pgg24b.cpp @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:13d2b8934445
1 /*
2 AnaGram Syntax Analyzer.
3 Copyright (c) Jerome T. Holland, 1989, 1990, 1991, 1992
4 All Rights Reserved.
5 */
6 #include HEADERS
7 #include STDLIB
8 #include STDIO
9 #include STRING
10 #include DATA
11 #include TREES
12 #include STK
13 #include CTYPE
14 #include ASSERT
15 #include PGG
16 #include MYALLOC
17 #include UT
18
19 /*
20 * AnaGram, A System for Syntax Directed Programming
21 * File generated by: ...
22 *
23 * AnaGram Parsing Engine
24 * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
25 *
26 * This software is provided 'as-is', without any express or implied
27 * warranty. In no event will the authors be held liable for any damages
28 * arising from the use of this software.
29 *
30 * Permission is granted to anyone to use this software for any purpose,
31 * including commercial applications, and to alter it and redistribute it
32 * freely, subject to the following restrictions:
33 *
34 * 1. The origin of this software must not be misrepresented; you must not
35 * claim that you wrote the original software. If you use this software
36 * in a product, an acknowledgment in the product documentation would be
37 * appreciated but is not required.
38 * 2. Altered source versions must be plainly marked as such, and must not be
39 * misrepresented as being the original software.
40 * 3. This notice may not be removed or altered from any source distribution.
41 */
42
43 #ifndef PGG24B_H
44 #include "pgg24b.h"
45 #endif
46
47 #ifndef PGG24B_H
48 #error Mismatched header file
49 #endif
50
51 #include <ctype.h>
52 #include <stdio.h>
53
54 #define RULE_CONTEXT (&((PCB).cs[(PCB).ssx]))
55 #define ERROR_CONTEXT ((PCB).cs[(PCB).error_frame_ssx])
56 #define CONTEXT ((PCB).cs[(PCB).ssx])
57
58
59 #define CHANGE_REDUCTION(x) pgg_change_reduction(pgg_##x##_token)
60 int pgg_change_reduction(pgg_token_type);
61
62 #define TOKEN_NAMES pgg_token_names
63 const char *const pgg_token_names[244] = {
64 "syntax definition",
65 "",
66 "\"->\"",
67 "",
68 "",
69 "",
70 "",
71 "','",
72 "",
73 "",
74 "",
75 "\"...\"",
76 "",
77 "'='",
78 "",
79 "'!'",
80 "",
81 "'{'",
82 "",
83 "'['",
84 "",
85 "'('",
86 "",
87 "'-'",
88 "",
89 "'+'",
90 "",
91 "']'",
92 "",
93 "'}'",
94 "",
95 "')'",
96 "",
97 "single quote",
98 "",
99 "'~'",
100 "",
101 "'|'",
102 "syntax definition",
103 "",
104 "",
105 "",
106 "",
107 "statement",
108 "",
109 "",
110 "eof",
111 "production",
112 "",
113 "left hand side",
114 "right hand side",
115 "",
116 "",
117 "",
118 "definition",
119 "embedded c",
120 "configuration section",
121 "token name list",
122 "type definition",
123 "",
124 "name",
125 "'$'",
126 "",
127 "error",
128 "",
129 "vp rule spec",
130 "",
131 "",
132 "reduction procedure",
133 "vp rules",
134 "grammar rule",
135 "",
136 "rule element",
137 "parameter name",
138 "",
139 "c expression",
140 "';'",
141 "type name",
142 "",
143 "",
144 "",
145 "\"::\"",
146 "",
147 "",
148 "",
149 "",
150 "template field head",
151 "'>'",
152 "'<'",
153 "",
154 "",
155 "'*'",
156 "",
157 "",
158 "letter",
159 "",
160 "",
161 "\"enum\"",
162 "blank char",
163 "c comment",
164 "continuation",
165 "comment",
166 "",
167 "carriage return",
168 "",
169 "newline",
170 "",
171 "vertical space",
172 "\"//\"",
173 "",
174 "",
175 "",
176 "character",
177 "signed number",
178 "'^'",
179 "",
180 "quoted character",
181 "char const",
182 "",
183 "",
184 "",
185 "decimal number",
186 "'0'",
187 "octal number",
188 "\"0x\"",
189 "\"0X\"",
190 "",
191 "hex number",
192 "",
193 "",
194 "",
195 "hex digit",
196 "",
197 "token",
198 "mid rule action",
199 "",
200 "virtual production",
201 "",
202 "",
203 "'&'",
204 "",
205 "",
206 "escape sequence",
207 "octal escape",
208 "",
209 "hex escape",
210 "character range",
211 "\"..\"",
212 "enum definition",
213 "enum statement",
214 "keyword string",
215 "keyword string head",
216 "string",
217 "double quote",
218 "",
219 "",
220 "",
221 "string char",
222 "simple string char",
223 "\"\\\\a\"",
224 "\"\\\\b\"",
225 "\"\\\\f\"",
226 "\"\\\\n\"",
227 "\"\\\\r\"",
228 "\"\\\\t\"",
229 "\"\\\\v\"",
230 "\"\\\\\\\\\"",
231 "\"\\\\?\"",
232 "\"\\\\\\'\"",
233 "\"\\\\\\\"\"",
234 "",
235 "backslash",
236 "",
237 "\"\\\\x\"",
238 "any digit",
239 "nonoctal digit",
240 "':'",
241 "",
242 "",
243 "configuration parameters",
244 "configuration parameter list",
245 "",
246 "configuration parameter",
247 "attribute statement",
248 "keyword kluge",
249 "\"distinguish\"",
250 "\"left\"",
251 "token list",
252 "\"right\"",
253 "\"nonassoc\"",
254 "\"sticky\"",
255 "\"subgrammar\"",
256 "\"hidden\"",
257 "",
258 "",
259 "\"disregard\"",
260 "\"lexeme\"",
261 "\"reserve\"",
262 "\"keywords\"",
263 "\"rename\"",
264 "\"macro\"",
265 "macro name",
266 "",
267 "tokens",
268 "'\\?'",
269 "\"}...\"",
270 "\"]...\"",
271 "\"?...\"",
272 "\"}/...\"",
273 "\"]/...\"",
274 "embedded c head",
275 "",
276 "",
277 "",
278 "",
279 "c code first",
280 "",
281 "",
282 "c character constant",
283 "c string constant",
284 "",
285 "simple c char",
286 "",
287 "",
288 "",
289 "",
290 "\"\\\\\\n\"",
291 "",
292 "\"*/\"",
293 "\"/*\"",
294 "",
295 "c literal elem",
296 "",
297 "",
298 "",
299 "",
300 "",
301 "",
302 "",
303 "",
304 "",
305 "",
306 "",
307 "",
308
309 };
310
311
312 /* Line -, pgg24b.syn */
313 int null_warning(int n) {
314 extern void warning_here(const char *,...);
315 if (n == 0) warning_here("Null character in keyword string");
316 return n;
317 }
318 /* Line -, pgg24b.syn */
319 pgg_pcb_type pgcb;
320 #define PCB pgcb
321
322 #define PARSER_STACK_OVERFLOW parse_stack_overflow()
323 #define SYNTAX_ERROR log_syntax_error()
324 #define GET_CONTEXT CONTEXT.y = PCB.line, CONTEXT.x = PCB.column;
325
326 #define REDUCTION_TOKEN_ERROR reduction_token_error()
327
328 int save_case_sensitive;
329
330 void reduction_token_error(void) {
331 assert(0);
332 }
333
334 extern tsd *rename_macro_list;
335
336 extern int parse_abort_flag;
337 void log_error_location(int, int);
338 void log_error(void);
339 void show_error(void);
340
341 void parse_stack_overflow(void) {
342 int eline = PCB.line, ecol = PCB.column;
343 reset_stk();
344 log_error_location(ecol,eline);
345 ass("Nesting too deep");
346 log_error();
347 sss("Syntax Analysis aborted");
348 show_error();
349 parse_abort_flag = 1;
350 PCB.exit_flag = AG_SEMANTIC_ERROR_CODE;
351 }
352
353 extern string_dict *cast_dict;
354 extern int character_seen;
355 extern int enum_base;
356 extern unsigned char *input_base;
357 extern int nest_comments;
358 extern int precedence_level;
359 extern int syntax_error_flag;
360 extern int case_sensitive;
361 extern int n_statements;
362
363 void log_error_location(int,int);
364 void log_error_here(void);
365 void log_error(void);
366
367 //node make_or_node(node,node);
368 //node make_and_node(node,node);
369 //node make_minus_node(node,node);
370 //node make_tilde_node(node);
371 //node ss1(int);
372 //node ss2(void);
373 CharSetExpression *ss2(void);
374 //node ss3(void);
375
376 void acs(int);
377 void aws(int);
378 void atkn(unsigned);
379 void copyoff(void);
380 void copyon(void);
381 //void definition_1(node);
382 void definition_1(CharSetExpression *);
383 void definition_2(int);
384 void definition_3(int);
385 //int form_element_1(node);
386 int form_element_1(CharSetExpression *);
387 int form_spec_2(int, int);
388 int form1(void);
389 int form2(void);
390 void gp2(void);
391 void gp3(void);
392 void gp4(int);
393 void gp5(int);
394 int head_list_1(int);
395 int head_list_2(int);
396 static int head_list_3(int);
397 void ics(void);
398 //int identify_node(node);
399 int identify_node(CharSetExpression *);
400 //void init_reserve(int);
401 void iws(void);
402 int mid_line(int);
403 int new_cast_spec_1(void);
404 int new_cast_spec_2(void);
405 //void new_reserve(void);
406 int null_warning(int);
407 /* void pf2(int, int, int); */
408 void pf2x(int, int);
409 int pr3(int);
410 int pr4(int);
411 int proc_spec_4(int);
412 int proc_spec_5(void);
413 void production(int);
414 void range(int, int);
415 void scs(int);
416 static void set_prec(int,int);
417 /*
418 void suppress(void);
419 void suppress_all(void);
420 void suppress_except(void);
421 void suppress_initial(void);
422 */
423 void sws(int);
424 void tp4(int);
425 int vp_form3(int);
426 int vp_s(void);
427 int vp_1(void);
428 int vp_2(void);
429 int vp_3(void);
430 int vp_4(void);
431 int vp_5(int);
432 int vp_6(int);
433 int vp_7(int);
434 int vp_8(int);
435 int vp_8a(int);
436 int vp_9(void);
437 int vp_10(void);
438
439 /*
440 static int reserve(int pt) {
441 int key = map_token_number[vp_s()].key;
442 map_key_word[key].reserve = pt;
443 return pt;
444 }
445 */
446
447 /*
448 static void anomalous(void) {
449 map_token_number[vp_s()].anomalous = 1;
450 }
451 */
452
453 int *disregard_list = NULL;
454 int n_disregard_list = 0;
455
456 static void disregard(int tn) {
457 iws();
458 if (n_disregard_list) {
459 int *p = disregard_list;
460 while (n_disregard_list--) aws(*p++);
461 free(disregard_list);
462 }
463 xws(tn);
464 disregard_list = build_list();
465 n_disregard_list = fis();
466 }
467
468 extern tsd *syntax_errors;
469
470 static void log_syntax_error(void) {
471 int eline = PCB.line, ecol = PCB.column;
472 int flag = PCB.error_frame_token == pgg_c_comment_token ||
473 PCB.error_frame_token == pgg_embedded_c_token;
474
475 reset_stk();
476 if (flag && PCB.token_number == pgg_eof_token) {
477 eline = ERROR_CONTEXT.y;
478 ecol = ERROR_CONTEXT.x;
479 }
480 log_error_location(ecol,eline);
481 apprintf("%s in %s",
482 PCB.error_message,pgg_token_names[PCB.error_frame_token]);
483 log_error();
484 syntax_error_flag++;
485 if (syntax_errors->nt < 50) return;
486 sss("Too many syntax errors, parse aborted");
487 log_error();
488 PCB.exit_flag = AG_SYNTAX_ERROR_CODE;
489 }
490
491 static int head_list_3(int type) {
492 int i, n = tis();
493 for (i = 0; i < n; i ++) {
494 int tn = list_base[i];
495 token_number_map *tp = &map_token_number[tn];
496 int ptt = tp->value_type;
497 if (ptt && ptt != type) {
498 log_error_here();
499 apprintf("Type Redefinition of T%03d: ", tn);
500 atkn(tn);
501 log_error();
502 }
503 tp->value_type = type;
504 if (ptt == 0 && tp->rp_arg && type == void_token_type) {
505 log_error_here();
506 apprintf("Void token, %s, used as parameter",
507 dict_str(tkn_dict,tp->token_name));
508 log_error();
509 }
510 }
511 return type;
512 }
513
514 static void set_prec(int left, int right){
515 int n = tis();
516 precedence_level++;
517 while (n--) {
518 int k = list_base[n];
519 token_number_map *tp = &map_token_number[k];
520 tp->left_associative = left;
521 tp->right_associative = right;
522 tp->precedence_level = precedence_level;
523 }
524 rws();
525 }
526
527 static void set_sticky(void){
528 int n = tis();
529 while (n--) {
530 int k = list_base[n];
531 token_number_map *tp = &map_token_number[k];
532 tp->sticky = 1;
533 }
534 rws();
535 }
536
537 static void set_subgrammar(void){
538 int n = tis();
539 while (n--) {
540 int k = list_base[n];
541 token_number_map *tp = &map_token_number[k];
542 tp->subgrammar = 1;
543 }
544 rws();
545 }
546
547 void set_hidden(void) {
548 int *lb = list_base;
549 int n = tis();
550 while (n--) map_token_number[*lb++].fine_structure = 1;
551 rws();
552 }
553
554 void set_lexeme(void) {
555 int n = tis();
556 while (n--) {
557 token_number_map *tp = &map_token_number[list_base[n]];
558 /* tp->lexeme = tp->subgrammar = 1; */
559 tp->lexeme = 1;
560 }
561 rws();
562 }
563
564 void set_reserved_words(void) {
565 int n = tis();
566 while (n--) {
567 token_number_map *tp = &map_token_number[list_base[n]];
568 tp->reserved_word = 1;
569 }
570 rws();
571 }
572
573 void parse(void) {
574 pgcb.pointer = input_base;
575 pgg();
576 }
577
578 #ifndef CONVERT_CASE
579 #define CONVERT_CASE(c) (c)
580 #endif
581 #ifndef TAB_SPACING
582 #define TAB_SPACING 8
583 #endif
584
585 static void ag_rp_1(void) {
586 /* Line -, pgg24b.syn */
587 n_statements++;
588 }
589
590 static void ag_rp_2(void) {
591 /* Line -, pgg24b.syn */
592 n_statements++;
593 }
594
595 static void ag_rp_3(int t) {
596 /* Line -, pgg24b.syn */
597 production(t);
598 }
599
600 static void ag_rp_4(void) {
601 /* Line -, pgg24b.syn */
602 n_statements++;
603 }
604
605 static void ag_rp_5(int t) {
606 /* Line -, pgg24b.syn */
607 production(t);
608 }
609
610 static void ag_rp_6(void) {
611 /* Line -, pgg24b.syn */
612 n_statements++;
613 }
614
615 static int ag_rp_7(int type) {
616 /* Line -, pgg24b.syn */
617 return iws(),type;
618 }
619
620 static int ag_rp_8(int type) {
621 /* Line -, pgg24b.syn */
622 return concat_list(),type;
623 }
624
625 static int ag_rp_9(void) {
626 /* Line -, pgg24b.syn */
627 return n_statements++, 0;
628 }
629
630 static int ag_rp_10(int d) {
631 /* Line -, pgg24b.syn */
632 return n_statements++, head_list_3(d);
633 }
634
635 static void ag_rp_11(int x) {
636 /* Line -, pgg24b.syn */
637 sws(head_list_2(x));
638 }
639
640 static void ag_rp_12(int x) {
641 /* Line -, pgg24b.syn */
642 aws(head_list_2(x));
643 }
644
645 static int ag_rp_13(void) {
646 /* Line -, pgg24b.syn */
647 return 0;
648 }
649
650 static int ag_rp_14(void) {
651 /* Line -, pgg24b.syn */
652 return 1;
653 }
654
655 static int ag_rp_15(void) {
656 /* Line -, pgg24b.syn */
657 return ids(cast_dict),fis();
658 }
659
660 static void ag_rp_16(int n) {
661 /* Line -, pgg24b.syn */
662 sws(n);
663 }
664
665 static void ag_rp_17(int n) {
666 /* Line -, pgg24b.syn */
667 aws(n);
668 }
669
670 static void ag_rp_18(int pn) {
671 /* Line -, pgg24b.syn */
672 sws((iws(),vp_form3(pn)));
673 }
674
675 static int ag_rp_19(int s) {
676 /* Line -, pgg24b.syn */
677 return vp_form3(s);
678 }
679
680 static void ag_rp_20(int n) {
681 /* Line -, pgg24b.syn */
682 sws(form_spec_2(form1(),n));
683 }
684
685 static void ag_rp_21(int n) {
686 /* Line -, pgg24b.syn */
687 sws(n);
688 }
689
690 static void ag_rp_22(int n) {
691 /* Line -, pgg24b.syn */
692 aws(n);
693 }
694
695 static int ag_rp_23(int s) {
696 /* Line -, pgg24b.syn */
697 return form_spec_2(form2(),s);
698 }
699
700 static void ag_rp_24(int e, int p) {
701 /* Line -, pgg24b.syn */
702 iws(),pf2x(e,p);
703 }
704
705 static void ag_rp_25(int e, int p) {
706 /* Line -, pgg24b.syn */
707 pf2x(e,p);
708 }
709
710 static int ag_rp_26(void) {
711 /* Line -, pgg24b.syn */
712 return 0;
713 }
714
715 static int ag_rp_27(void) {
716 /* Line -, pgg24b.syn */
717 return proc_spec_4(0);
718 }
719
720 static int ag_rp_28(void) {
721 /* Line -, pgg24b.syn */
722 return proc_spec_4(1);
723 }
724
725 static void ag_rp_29(void) {
726 /* Line -, pgg24b.syn */
727 concat_string();
728 }
729
730 static void ag_rp_30(void) {
731 /* Line -, pgg24b.syn */
732 sss("::");
733 }
734
735 static void ag_rp_31(void) {
736 /* Line -, pgg24b.syn */
737 concat_string();
738 }
739
740 static void ag_rp_32(void) {
741 /* Line -, pgg24b.syn */
742 ass("::");
743 }
744
745 static void ag_rp_33(void) {
746 /* Line -, pgg24b.syn */
747 concat_string();
748 }
749
750 static void ag_rp_34(void) {
751 /* Line -, pgg24b.syn */
752 concat_string();
753 }
754
755 static void ag_rp_35(void) {
756 /* Line -, pgg24b.syn */
757 acs('>'), concat_string();
758 }
759
760 static void ag_rp_36(void) {
761 /* Line -, pgg24b.syn */
762 acs('<');
763 }
764
765 static void ag_rp_37(void) {
766 /* Line -, pgg24b.syn */
767 acs(','), concat_string();
768 }
769
770 static void ag_rp_38(void) {
771 /* Line -, pgg24b.syn */
772 scs('(');
773 }
774
775 static void ag_rp_39(void) {
776 /* Line -, pgg24b.syn */
777 concat_string(), acs(')');
778 }
779
780 static void ag_rp_40(void) {
781 /* Line -, pgg24b.syn */
782 sss(" *");
783 }
784
785 static void ag_rp_41(void) {
786 /* Line -, pgg24b.syn */
787 concat_string();
788 }
789
790 static void ag_rp_42(void) {
791 /* Line -, pgg24b.syn */
792 concat_string();
793 }
794
795 static void ag_rp_43(int c) {
796 /* Line -, pgg24b.syn */
797 scs(c);
798 }
799
800 static void ag_rp_44(int c) {
801 /* Line -, pgg24b.syn */
802 acs(c);
803 }
804
805 static void ag_rp_45(int c) {
806 /* Line -, pgg24b.syn */
807 acs(' '), acs(c);
808 }
809
810 static void ag_rp_46(int c) {
811 /* Line -, pgg24b.syn */
812 sss("enum "), acs(c);
813 }
814
815 static void ag_rp_47(int c) {
816 /* Line -, pgg24b.syn */
817 acs(c);
818 }
819
820 static void ag_rp_48(int c) {
821 /* Line -, pgg24b.syn */
822 acs(' '), acs(c);
823 }
824
825 static int ag_rp_49(int x) {
826 /* Line -, pgg24b.syn */
827 return x & 0x1f;
828 }
829
830 static int ag_rp_50(int c) {
831 /* Line -, pgg24b.syn */
832 return (character_seen=1),c;
833 }
834
835 static int ag_rp_51(int s, int n) {
836 /* Line -, pgg24b.syn */
837 return s*n;
838 }
839
840 static int ag_rp_52(void) {
841 /* Line -, pgg24b.syn */
842 return 1;
843 }
844
845 static int ag_rp_53(void) {
846 /* Line -, pgg24b.syn */
847 return -1;
848 }
849
850 static int ag_rp_54(int n) {
851 /* Line -, pgg24b.syn */
852 return n;
853 }
854
855 static int ag_rp_55(int n) {
856 /* Line -, pgg24b.syn */
857 return n;
858 }
859
860 static int ag_rp_56(int d) {
861 /* Line -, pgg24b.syn */
862 return d - '0';
863 }
864
865 static int ag_rp_57(int n, int d) {
866 /* Line -, pgg24b.syn */
867 return 10*n + d - '0';
868 }
869
870 static int ag_rp_58(void) {
871 /* Line -, pgg24b.syn */
872 return 0;
873 }
874
875 static int ag_rp_59(int n, int d) {
876 /* Line -, pgg24b.syn */
877 return 8*n + d - '0';
878 }
879
880 static int ag_rp_60(int d) {
881 /* Line -, pgg24b.syn */
882 return d;
883 }
884
885 static int ag_rp_61(int n, int d) {
886 /* Line -, pgg24b.syn */
887 return 16*n + d;
888 }
889
890 static int ag_rp_62(int d) {
891 /* Line -, pgg24b.syn */
892 return d-'0';
893 }
894
895 static int ag_rp_63(int d) {
896 /* Line -, pgg24b.syn */
897 return (d&7)+9;
898 }
899
900 static int ag_rp_64(int p) {
901 /* Line -, pgg24b.syn */
902 return vp_8a(p);
903 }
904
905 static int ag_rp_65(CharSetExpression * n) {
906 /* Line -, pgg24b.syn */
907 return form_element_1(n);
908 }
909
910 static CharSetExpression * ag_rp_66(CharSetExpression * u, CharSetExpression * i) {
911 /* Line -, pgg24b.syn */
912 return new CharSetUnion(u,i);
913 }
914
915 static CharSetExpression * ag_rp_67(CharSetExpression * u, CharSetExpression * i) {
916 /* Line -, pgg24b.syn */
917 return new CharSetDifference(u,i);
918 }
919
920 static CharSetExpression * ag_rp_68(CharSetExpression * i, CharSetExpression * n) {
921 /* Line -, pgg24b.syn */
922 return new CharSetIntersection(i,n);
923 }
924
925 static CharSetExpression * ag_rp_69(CharSetExpression * n) {
926 /* Line -, pgg24b.syn */
927 return new CharSetComplement(n);
928 }
929
930 static int ag_rp_70(int c) {
931 /* Line -, pgg24b.syn */
932 return case_sensitive ? (c) : toupper(c);
933 }
934
935 static CharSetExpression * ag_rp_71(int c) {
936 /* Line -, pgg24b.syn */
937 return new IndividualCode(c);
938 }
939
940 static CharSetExpression * ag_rp_72(int c) {
941 /* Line -, pgg24b.syn */
942 return new IndividualChar(c);
943 }
944
945 static CharSetExpression * ag_rp_73(void) {
946 /* Line -, pgg24b.syn */
947 return ss2();
948 }
949
950 static CharSetExpression * ag_rp_74(CharSetExpression * x) {
951 /* Line -, pgg24b.syn */
952 return x;
953 }
954
955 static CharSetExpression * ag_rp_75(int l, int r) {
956 /* Line -, pgg24b.syn */
957 return (character_seen=1),new CharRange(l,r);
958 }
959
960 static CharSetExpression * ag_rp_76(int l, int r) {
961 /* Line -, pgg24b.syn */
962 return new CodeRange(l,r);
963 }
964
965 static void ag_rp_77(CharSetExpression * n) {
966 /* Line -, pgg24b.syn */
967 definition_1(n);
968 }
969
970 static void ag_rp_78(int p) {
971 /* Line -, pgg24b.syn */
972 definition_2(p);
973 }
974
975 static void ag_rp_79(int p) {
976 /* Line -, pgg24b.syn */
977 definition_2(vp_8a(p));
978 }
979
980 static void ag_rp_80(void) {
981 /* Line -, pgg24b.syn */
982 definition_3(enum_base++);
983 }
984
985 static void ag_rp_81(int n) {
986 /* Line -, pgg24b.syn */
987 definition_3(enum_base = n), enum_base++;
988 }
989
990 static void ag_rp_82(int n) {
991 /* Line -, pgg24b.syn */
992 definition_3(enum_base = n), enum_base++;
993 }
994
995 static void ag_rp_83(void) {
996 /* Line -, pgg24b.syn */
997 ics();
998 }
999
1000 static int ag_rp_84(int n) {
1001 /* Line -, pgg24b.syn */
1002 return null_warning(n);
1003 }
1004
1005 static int ag_rp_85(void) {
1006 /* Line -, pgg24b.syn */
1007 return '\a';
1008 }
1009
1010 static int ag_rp_86(void) {
1011 /* Line -, pgg24b.syn */
1012 return '\b';
1013 }
1014
1015 static int ag_rp_87(void) {
1016 /* Line -, pgg24b.syn */
1017 return '\f';
1018 }
1019
1020 static int ag_rp_88(void) {
1021 /* Line -, pgg24b.syn */
1022 return '\n';
1023 }
1024
1025 static int ag_rp_89(void) {
1026 /* Line -, pgg24b.syn */
1027 return '\r';
1028 }
1029
1030 static int ag_rp_90(void) {
1031 /* Line -, pgg24b.syn */
1032 return '\t';
1033 }
1034
1035 static int ag_rp_91(void) {
1036 /* Line -, pgg24b.syn */
1037 return '\v';
1038 }
1039
1040 static int ag_rp_92(void) {
1041 /* Line -, pgg24b.syn */
1042 return '\\';
1043 }
1044
1045 static int ag_rp_93(void) {
1046 /* Line -, pgg24b.syn */
1047 return '\?';
1048 }
1049
1050 static int ag_rp_94(void) {
1051 /* Line -, pgg24b.syn */
1052 return '\'';
1053 }
1054
1055 static int ag_rp_95(void) {
1056 /* Line -, pgg24b.syn */
1057 return '"';
1058 }
1059
1060 static int ag_rp_96(int n) {
1061 /* Line -, pgg24b.syn */
1062 return n&7;
1063 }
1064
1065 static int ag_rp_97(int n, int d) {
1066 /* Line -, pgg24b.syn */
1067 return n*8 + (d&7);
1068 }
1069
1070 static int ag_rp_98(int n, int d) {
1071 /* Line -, pgg24b.syn */
1072 return n*8 + (d&7);
1073 }
1074
1075 static int ag_rp_99(int x) {
1076 /* Line -, pgg24b.syn */
1077 return x;
1078 }
1079
1080 static void ag_rp_100(int c) {
1081 /* Line -, pgg24b.syn */
1082 acs(c);
1083 }
1084
1085 static void ag_rp_101(int c) {
1086 /* Line -, pgg24b.syn */
1087 acs(c);
1088 }
1089
1090 static void ag_rp_102(int c) {
1091 /* Line -, pgg24b.syn */
1092 acs(c);
1093 }
1094
1095 static void ag_rp_103(int c) {
1096 /* Line -, pgg24b.syn */
1097 acs(c);
1098 }
1099
1100 static void ag_rp_104(int c) {
1101 /* Line -, pgg24b.syn */
1102 acs(c);
1103 }
1104
1105 static void ag_rp_105(int c) {
1106 /* Line -, pgg24b.syn */
1107 acs(null_warning(c));
1108 }
1109
1110 static void ag_rp_106(int c) {
1111 /* Line -, pgg24b.syn */
1112 acs(null_warning(c));
1113 }
1114
1115 static void ag_rp_107(int c) {
1116 /* Line -, pgg24b.syn */
1117 acs(null_warning(c));
1118 }
1119
1120 static void ag_rp_108(int c) {
1121 /* Line -, pgg24b.syn */
1122 acs(null_warning(c));
1123 }
1124
1125 static int ag_rp_109(void) {
1126 /* Line -, pgg24b.syn */
1127 return 0;
1128 }
1129
1130 static int ag_rp_110(void) {
1131 /* Line -, pgg24b.syn */
1132 return ids(cvar_dict),fis();
1133 }
1134
1135 static void ag_rp_111(int c) {
1136 /* Line -, pgg24b.syn */
1137 scs(c);
1138 }
1139
1140 static void ag_rp_112(int c) {
1141 /* Line -, pgg24b.syn */
1142 acs(c);
1143 }
1144
1145 static void ag_rp_113(void) {
1146 /* Line -, pgg24b.syn */
1147 gp4(1);
1148 }
1149
1150 static void ag_rp_114(void) {
1151 /* Line -, pgg24b.syn */
1152 gp4(0);
1153 }
1154
1155 static void ag_rp_115(void) {
1156 /* Line -, pgg24b.syn */
1157 gp2();
1158 }
1159
1160 static void ag_rp_116(void) {
1161 /* Line -, pgg24b.syn */
1162 gp3();
1163 }
1164
1165 static void ag_rp_117(void) {
1166 /* Line -, pgg24b.syn */
1167 gp3();
1168 }
1169
1170 static void ag_rp_118(int n) {
1171 /* Line -, pgg24b.syn */
1172 gp5(n);
1173 }
1174
1175 static void ag_rp_119(void) {
1176 /* Line -, pgg24b.syn */
1177 concat_string(), gp4(1);
1178 }
1179
1180 static void ag_rp_120(void) {
1181 /* Line -, pgg24b.syn */
1182 sss("distinguish_");
1183 }
1184
1185 static void ag_rp_121(void) {
1186 /* Line -, pgg24b.syn */
1187 set_prec(1,0);
1188 }
1189
1190 static void ag_rp_122(void) {
1191 /* Line -, pgg24b.syn */
1192 set_prec(0,1);
1193 }
1194
1195 static void ag_rp_123(void) {
1196 /* Line -, pgg24b.syn */
1197 set_prec(0,0);
1198 }
1199
1200 static void ag_rp_124(void) {
1201 /* Line -, pgg24b.syn */
1202 set_sticky();
1203 }
1204
1205 static void ag_rp_125(void) {
1206 /* Line -, pgg24b.syn */
1207 set_subgrammar();
1208 }
1209
1210 static void ag_rp_126(void) {
1211 /* Line -, pgg24b.syn */
1212 set_hidden();
1213 }
1214
1215 static void ag_rp_127(int t) {
1216 /* Line -, pgg24b.syn */
1217 disregard(t);
1218 }
1219
1220 static void ag_rp_128(void) {
1221 /* Line -, pgg24b.syn */
1222 set_lexeme();
1223 }
1224
1225 static void ag_rp_129(void) {
1226 /* Line -, pgg24b.syn */
1227 set_reserved_words();
1228 }
1229
1230 static void ag_rp_130(int oldName, int newName) {
1231 /* Line -, pgg24b.syn */
1232 at(rename_macro_list,oldName,newName);
1233 }
1234
1235 static int ag_rp_131(void) {
1236 /* Line -, pgg24b.syn */
1237 return (PCB).pointer-input_base-1;
1238 }
1239
1240 static void ag_rp_132(CharSetExpression * n) {
1241 /* Line -, pgg24b.syn */
1242 distinguishSets.push(identify_node(n));
1243 }
1244
1245 static void ag_rp_133(CharSetExpression * n) {
1246 /* Line -, pgg24b.syn */
1247 distinguishSets.push(identify_node(n));
1248 }
1249
1250 static void ag_rp_134(int t) {
1251 /* Line -, pgg24b.syn */
1252 sws(t);
1253 }
1254
1255 static void ag_rp_135(int t) {
1256 /* Line -, pgg24b.syn */
1257 aws(t);
1258 }
1259
1260 static int ag_rp_136(void) {
1261 /* Line -, pgg24b.syn */
1262 return vp_s();
1263 }
1264
1265 static int ag_rp_137(void) {
1266 /* Line -, pgg24b.syn */
1267 return vp_5(vp_s());
1268 }
1269
1270 static int ag_rp_138(void) {
1271 /* Line -, pgg24b.syn */
1272 return vp_1();
1273 }
1274
1275 static int ag_rp_139(void) {
1276 /* Line -, pgg24b.syn */
1277 return vp_2();
1278 }
1279
1280 static int ag_rp_140(void) {
1281 /* Line -, pgg24b.syn */
1282 return vp_3();
1283 }
1284
1285 static int ag_rp_141(void) {
1286 /* Line -, pgg24b.syn */
1287 return vp_4();
1288 }
1289
1290 static int ag_rp_142(CharSetExpression * n) {
1291 /* Line -, pgg24b.syn */
1292 return vp_5(form_element_1(n));
1293 }
1294
1295 static int ag_rp_143(CharSetExpression * n) {
1296 /* Line -, pgg24b.syn */
1297 return vp_6(form_element_1(n));
1298 }
1299
1300 static int ag_rp_144(CharSetExpression * n) {
1301 /* Line -, pgg24b.syn */
1302 return vp_7(form_element_1(n));
1303 }
1304
1305 static int ag_rp_145(void) {
1306 /* Line -, pgg24b.syn */
1307 return vp_9();
1308 }
1309
1310 static int ag_rp_146(void) {
1311 /* Line -, pgg24b.syn */
1312 return vp_10();
1313 }
1314
1315 static int ag_rp_147(void) {
1316 /* Line -, pgg24b.syn */
1317 return mid_line(proc_spec_4(0));
1318 }
1319
1320 static int ag_rp_148(void) {
1321 /* Line -, pgg24b.syn */
1322 return mid_line(proc_spec_4(1));
1323 }
1324
1325 static void ag_rp_149(void) {
1326 /* Line -, pgg24b.syn */
1327 copyon();
1328 }
1329
1330 static void ag_rp_150(void) {
1331 /* Line -, pgg24b.syn */
1332 copyoff();
1333 }
1334
1335 static void ag_rp_151(void) {
1336 /* Line -, pgg24b.syn */
1337 copyoff();
1338 }
1339
1340 static void ag_rp_152(void) {
1341 /* Line -, pgg24b.syn */
1342 copyon();
1343 }
1344
1345 static void ag_rp_153(void) {
1346 /* Line -, pgg24b.syn */
1347 copyoff();
1348 }
1349
1350 static void ag_rp_154(void) {
1351 /* Line -, pgg24b.syn */
1352 if (nest_comments) PCB.reduction_token = pgg_c_comment_head_token;
1353 }
1354
1355
1356 #define READ_COUNTS
1357 #define WRITE_COUNTS
1358 #undef V
1359 #define V(i,t) (*t (&(PCB).vs[(PCB).ssx + i]))
1360 #undef VS
1361 #define VS(i) (PCB).vs[(PCB).ssx + i]
1362
1363 #ifndef GET_CONTEXT
1364 #define GET_CONTEXT CONTEXT = (PCB).input_context
1365 #endif
1366
1367 typedef enum {
1368 ag_action_1,
1369 ag_action_2,
1370 ag_action_3,
1371 ag_action_4,
1372 ag_action_5,
1373 ag_action_6,
1374 ag_action_7,
1375 ag_action_8,
1376 ag_action_9,
1377 ag_action_10,
1378 ag_action_11,
1379 ag_action_12
1380 } ag_parser_action;
1381
1382
1383 #ifndef NULL_VALUE_INITIALIZER
1384 #define NULL_VALUE_INITIALIZER = { 0 }
1385 #endif
1386
1387 static pgg_vs_type const ag_null_value NULL_VALUE_INITIALIZER;
1388
1389 static const unsigned char ag_rpx[] = {
1390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0,
1391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 6,
1392 7, 0, 8, 0, 0, 0, 0, 0, 0, 0, 9, 10, 11, 12, 13, 14, 15, 0,
1393 16, 0, 17, 18, 0, 0, 0, 19, 20, 21, 0, 22, 23, 24, 25, 0, 26, 27,
1394 28, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 0, 34, 35, 36, 37, 38,
1395 39, 40, 0, 41, 0, 42, 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0,
1396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1397 0, 49, 50, 51, 0, 0, 52, 53, 0, 54, 0, 0, 55, 56, 57, 58, 59, 60,
1398 61, 62, 63, 0, 64, 65, 0, 0, 66, 67, 0, 68, 0, 69, 70, 0, 0, 0,
1399 0, 0, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 0, 0, 0, 0,
1400 0, 0, 83, 0, 0, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
1401 97, 98, 0, 0, 99,100,101,102,103,104,105,106,107,108,109,110,111,112,
1402 0, 0, 0, 0, 0, 0, 0,113,114,115,116,117,118, 0,119,120,121,122,
1403 123,124,125,126, 0, 0,127,128,129,130,131, 0, 0, 0, 0, 0,132,133,
1404 0,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148, 0, 0,
1405 0, 0, 0, 0,149,150,151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1406 0, 0,152,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154
1407 };
1408
1409 static const unsigned char ag_key_itt[] = {
1410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
1412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1418 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1419 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1421 0
1422 };
1423
1424 static const unsigned short ag_key_pt[] = {
1425 0, 11, 0,147,0
1426 };
1427
1428 static const unsigned char ag_key_ch[] = {
1429 0, 42, 47,255, 47,255, 42, 47,255, 46,255, 46,255, 42, 47,255, 88,120,
1430 255, 46, 47,255,114,116,255,115,255,105,255,102,120,255,101,255,110,115,
1431 255,101,105,255,116,117,255, 46, 47,255, 45, 46, 47, 48, 58, 63, 93,100,
1432 101,104,108,110,114,115,125,255, 47,255, 42, 47,255,114,116,255,115,255,
1433 105,255,102,120,255,101,255,110,115,255,101,105,255,116,117,255, 47,100,
1434 101,104,108,110,114,115,255, 42, 47,255, 88,120,255, 47, 48, 58,255, 42,
1435 47,255, 46, 47,255, 46, 47,255, 45, 46, 47, 58, 63, 93,125,255, 58,255,
1436 45, 47,255, 42, 47,255, 88,120,255, 47, 48, 58, 92,125,255, 47,255, 47,
1437 58,255,114,116,255,115,255,105,255,102,120,255,101,255,110,115,255,101,
1438 105,255,116,117,255, 47,100,101,104,108,110,114,115,255, 42, 47,255, 88,
1439 120,255, 47, 48, 58, 92,255, 88,120,255, 48,255, 42, 47,255, 45, 47,255,
1440 42, 47,255, 88,120,255, 47, 48,255, 88,120,255, 47, 48,255, 88,120,255,
1441 47, 48, 58, 92,125,255, 47, 58,255,114,116,255,115,255,105,255,102,120,
1442 255,101,255,110,115,255,101,105,255,116,117,255,100,101,104,108,110,114,
1443 115,255, 42, 47,255, 46, 47,255, 46, 47,255, 47, 93,125,255, 42, 47,255,
1444 47, 92,255, 92,255, 42, 47,255, 88,120,255, 47, 48,125,255, 34, 39, 63,
1445 92, 97, 98,102,110,114,116,118,120,255, 92,255, 88,120,255, 48,125,255,
1446 46, 47,255, 46, 47,255, 47, 93,125,255, 46,255, 46,255, 46, 47,255, 46,
1447 47,255, 46, 47, 63, 93,125,255, 46, 47,255, 46, 47,255, 46, 47, 63, 93,
1448 125,255, 46, 47, 63,255, 46, 47,255, 46, 47,255, 93,125,255, 46, 47,255,
1449 93,255, 46, 47,255,125,255,125,255, 46,255, 46,255, 42, 47,255, 46, 47,
1450 255, 46, 47,255, 46, 47, 63, 93,125,255, 47,107,255, 47,109,255, 88,120,
1451 255, 47, 48,255, 88,120,255, 48, 58,255, 47, 92,255, 42, 47,255, 46, 47,
1452 255, 46, 47,255, 46, 47, 63, 93,125,255
1453 };
1454
1455 static const unsigned char ag_key_act[] = {
1456 0,0,0,4,2,4,3,3,4,5,4,6,4,0,0,4,0,0,4,3,3,4,3,3,4,2,4,2,4,3,3,4,2,4,3,
1457 3,4,2,3,4,3,3,4,3,3,4,3,2,2,2,3,3,2,2,3,3,2,3,2,2,2,4,3,4,0,0,4,3,3,4,
1458 2,4,2,4,3,3,4,2,4,3,3,4,2,3,4,3,3,4,2,2,3,3,2,3,2,2,4,0,0,4,0,0,4,2,2,
1459 3,4,0,0,4,3,3,4,3,3,4,3,7,2,3,3,2,2,4,3,4,3,3,4,0,0,4,0,0,4,2,2,3,3,3,
1460 4,3,4,3,3,4,3,3,4,2,4,2,4,3,3,4,2,4,3,3,4,2,3,4,3,3,4,3,2,3,3,2,3,2,2,
1461 4,0,0,4,0,0,4,2,2,3,3,4,0,0,4,2,4,0,0,4,3,2,4,0,0,4,0,0,4,2,2,4,0,0,4,
1462 3,2,4,0,0,4,3,2,3,3,3,4,3,3,4,3,3,4,2,4,2,4,3,3,4,2,4,3,3,4,2,3,4,3,3,
1463 4,2,3,3,2,3,2,2,4,0,0,4,3,3,4,3,3,4,2,2,2,4,0,0,4,2,3,4,3,4,0,0,4,0,0,
1464 4,2,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,4,2,4,0,0,4,2,3,4,3,3,4,3,3,4,3,2,2,
1465 4,5,4,6,4,3,3,4,3,3,4,2,3,3,2,2,4,3,3,4,3,3,4,7,3,3,2,2,4,7,3,3,4,3,3,
1466 4,3,3,4,2,2,4,3,3,4,2,4,3,3,4,2,4,3,4,5,4,6,4,0,0,4,3,3,4,3,3,4,2,2,3,
1467 2,2,4,3,3,4,3,3,4,0,0,4,3,2,4,0,0,4,2,3,4,3,3,4,0,0,4,3,3,4,3,3,4,7,2,
1468 3,2,2,4
1469 };
1470
1471 static const unsigned char ag_key_parm[] = {
1472 0,229,108, 0, 0, 0,228,229, 0, 0, 0, 2, 0,229,108, 0,125,124,
1473 0,206,209, 0,195,185, 0, 0, 0, 0, 0,186,196, 0, 0, 0,199,197,
1474 0, 0,188, 0,190,191, 0,205,208, 0, 2, 0, 0, 0, 81,207, 0, 0,
1475 97,192, 0,189, 0, 0, 0, 0,108, 0,229,108, 0,195,185, 0, 0, 0,
1476 0, 0,186,196, 0, 0, 0,199,197, 0, 0,188, 0,190,191, 0, 0, 0,
1477 97,192, 0,189, 0, 0, 0,229,108, 0,125,124, 0, 0, 0, 81, 0,229,
1478 108, 0,206,209, 0,205,208, 0, 2, 0, 0, 81,207, 0, 0, 0, 81, 0,
1479 2,108, 0,229,108, 0,125,124, 0, 0, 0, 81,226,205, 0,229, 0,108,
1480 81, 0,195,185, 0, 0, 0, 0, 0,186,196, 0, 0, 0,199,197, 0, 0,
1481 188, 0,190,191, 0,108, 0, 97,192, 0,189, 0, 0, 0,229,108, 0,125,
1482 124, 0, 0, 0, 81,226, 0,125,124, 0, 0, 0,229,108, 0, 2, 0, 0,
1483 229,108, 0,125,124, 0, 0, 0, 0,125,124, 0,108, 0, 0,125,124, 0,
1484 229, 0, 81,226,205, 0,229, 81, 0,195,185, 0, 0, 0, 0, 0,186,196,
1485 0, 0, 0,199,197, 0, 0,188, 0,190,191, 0, 0, 97,192, 0,189, 0,
1486 0, 0,229,108, 0,206,209, 0,205,208, 0, 0, 0, 0, 0,229,108, 0,
1487 0,226, 0,226, 0,229,108, 0,125,124, 0, 0, 0,205, 0,169,168,167,
1488 166,159,160,161,162,163,164,165,173, 0, 0, 0,125,124, 0, 0,205, 0,
1489 206,209, 0,205,208, 0,108, 0, 0, 0, 0, 0, 2, 0,206,209, 0,205,
1490 208, 0, 0,108,207, 0, 0, 0,206,209, 0,205,208, 0, 0,108,207, 0,
1491 0, 0, 0,108,207, 0,206,209, 0,205,208, 0, 0, 0, 0,206,209, 0,
1492 0, 0,205,208, 0, 0, 0,205, 0, 0, 0, 2, 0,229,108, 0,206,209,
1493 0,205,208, 0, 0, 0,207, 0, 0, 0,229,198, 0,229,200, 0,125,124,
1494 0,229, 0, 0,125,124, 0, 0, 81, 0,229,226, 0,229,108, 0,206,209,
1495 0,205,208, 0, 0, 0,207, 0, 0, 0
1496 };
1497
1498 static const unsigned short ag_key_jmp[] = {
1499 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0,
1500 0, 12, 15, 0, 19, 25, 0, 22, 0, 25, 0, 43, 45, 0, 29, 0, 57, 61,
1501 0, 34, 66, 0, 70, 75, 0, 84, 87, 0, 4, 11, 13, 16, 6, 8, 19, 27,
1502 33, 37, 32, 49, 37, 40, 43, 0, 91, 0, 0, 0, 0, 93, 99, 0, 67, 0,
1503 70, 0,117,119, 0, 74, 0,131,135, 0, 79,140, 0,144,149, 0, 64, 72,
1504 107,111, 77,123, 82, 85, 0, 0, 0, 0, 0, 0, 0, 97,100,158, 0, 0,
1505 0, 0,171,174, 0,178,181, 0,160,162,107,165,167,110,113, 0,185, 0,
1506 187,189, 0, 0, 0, 0, 0, 0, 0,129,132,191,193,195, 0,199, 0,201,
1507 203, 0,207,213, 0,146, 0,149, 0,231,233, 0,153, 0,245,249, 0,158,
1508 254, 0,258,263, 0,205,151,221,225,156,237,161,164, 0, 0, 0, 0, 0,
1509 0, 0,176,179,272,274, 0, 0, 0, 0,187, 0, 0, 0, 0,276,192, 0,
1510 0, 0, 0, 0, 0, 0,198,201, 0, 0, 0, 0,278,207, 0, 0, 0, 0,
1511 280,213,282,284,286, 0,290,292, 0,294,300, 0,225, 0,228, 0,318,320,
1512 0,232, 0,332,336, 0,237,341, 0,345,350, 0,230,308,312,235,324,240,
1513 243, 0, 0, 0, 0,359,362, 0,366,369, 0,254,257,260, 0, 0, 0, 0,
1514 267,373, 0,375, 0, 0, 0, 0, 0, 0, 0,275,278,377, 0, 0, 0, 0,
1515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,285, 0, 0, 0, 0,300,381, 0,
1516 387,390, 0,394,397, 0,385,306,309, 0, 0, 0,316, 0,407,410, 0,414,
1517 417, 0,318,401,403,320,323, 0,430,433, 0,437,440, 0,421,424,426,332,
1518 335, 0,444,447,449, 0,453,456, 0,460,463, 0,348,351, 0,467,470, 0,
1519 357, 0,474,477, 0,362, 0,481, 0, 0, 0,369, 0, 0, 0, 0,489,492,
1520 0,496,499, 0,371,373,485,376,379, 0,503,505, 0,513,515, 0, 0, 0,
1521 0,520,394, 0, 0, 0, 0,400,522, 0,524,526, 0, 0, 0, 0,535,538,
1522 0,542,545, 0,528,409,531,412,415, 0
1523 };
1524
1525 static const unsigned short ag_key_index[] = {
1526 4, 6, 46, 62, 0, 0, 0, 88, 0, 0, 0, 0, 0,103, 4,116, 0,124,
1527 88, 4,126, 0,126,126, 62, 62, 0, 0, 0, 0, 0,135, 0, 4,116,141,
1528 143, 0,167, 0, 0, 0, 0, 0, 0, 4, 0,182,190,195,126,126,204, 0,
1529 204,210, 4,195, 62, 62,216,141,141, 0,222,124, 62, 4,246,263, 0, 0,
1530 0, 0, 0, 4,263,270,273,204,281,298,190,303,312,204,204,190, 0,298,
1531 204,190,326,190,338,344,338,190,312, 62,273, 62,204,190, 62,216, 0,141,
1532 4, 62, 0, 62, 0,141,141,141,141,141, 62, 62,141,141,141,141,141,141,
1533 4, 0,141, 0, 62, 62, 0, 0, 0, 4,273, 0, 0, 0,298,298,298,298,
1534 298,354,360,365,367,367,263, 0,382,382,382,382, 0, 0,204,204,263,263,
1535 263,190,190,312, 4, 0, 0, 0,222, 4,388,391,388,141,397, 0, 0,190,
1536 0, 4, 0,141,403, 88, 0, 4, 0, 0,406,263,298,263,263,263,190,263,
1537 263,382,382,298,418,418,190,190,338,338, 0,263,141,141,141,190, 62, 62,
1538 0, 0, 0,263,141,141, 62,190,190,141,190,298, 62,141, 0, 62
1539 };
1540
1541 static const unsigned char ag_key_ends[] = {
1542 47,0, 42,0, 62,0, 58,0, 46,46,46,0, 46,46,0, 46,46,46,0,
1543 101,103,97,114,100,0, 105,110,103,117,105,115,104,0, 110,117,109,0,
1544 105,100,100,101,110,0, 116,0, 101,109,101,0,
1545 111,110,97,115,115,111,99,0, 97,109,101,0, 101,114,118,101,0,
1546 103,104,116,0, 105,99,107,121,0, 98,103,114,97,109,109,97,114,0,
1547 46,46,0, 46,46,46,0, 47,0, 101,103,97,114,100,0,
1548 105,110,103,117,105,115,104,0, 110,117,109,0, 105,100,100,101,110,0,
1549 116,0, 101,109,101,0, 111,110,97,115,115,111,99,0, 97,109,101,0,
1550 101,114,118,101,0, 103,104,116,0, 105,99,107,121,0,
1551 98,103,114,97,109,109,97,114,0, 58,0, 62,0, 46,46,0, 58,0,
1552 46,46,46,0, 46,46,0, 46,46,46,0, 46,46,0, 46,46,46,0, 58,0,
1553 62,0, 47,0, 58,0, 10,0, 46,46,46,0, 42,0, 47,0, 58,0, 47,0,
1554 101,103,97,114,100,0, 105,110,103,117,105,115,104,0, 110,117,109,0,
1555 105,100,100,101,110,0, 116,0, 101,109,101,0,
1556 111,110,97,115,115,111,99,0, 97,109,101,0, 101,114,118,101,0,
1557 103,104,116,0, 105,99,107,121,0, 98,103,114,97,109,109,97,114,0,
1558 58,0, 10,0, 62,0, 47,0, 42,0, 58,0, 10,0, 46,46,46,0, 42,0,
1559 58,0, 101,103,97,114,100,0, 105,110,103,117,105,115,104,0,
1560 110,117,109,0, 105,100,100,101,110,0, 116,0, 101,109,101,0,
1561 111,110,97,115,115,111,99,0, 97,109,101,0, 101,114,118,101,0,
1562 103,104,116,0, 105,99,107,121,0, 98,103,114,97,109,109,97,114,0,
1563 46,46,0, 46,46,46,0, 46,46,0, 46,46,46,0, 10,0, 10,0,
1564 46,46,46,0, 46,46,46,0, 47,0, 46,46,0, 46,46,46,0, 46,46,0,
1565 46,46,46,0, 47,0, 46,46,46,0, 46,46,0, 46,46,46,0, 46,46,0,
1566 46,46,46,0, 46,46,0, 47,0, 46,46,46,0, 46,46,0, 46,46,46,0,
1567 46,46,0, 46,46,46,0, 46,46,0, 47,0, 46,46,46,0, 46,46,0,
1568 46,46,46,0, 46,46,0, 46,46,46,0, 46,46,0, 46,46,46,0, 46,46,0,
1569 46,46,46,0, 46,46,46,0, 46,46,46,0, 46,46,0, 46,46,46,0,
1570 46,46,0, 46,46,46,0, 42,0, 101,121,119,111,114,100,115,0, 42,0,
1571 97,99,114,111,0, 42,0, 58,0, 42,0, 10,0, 46,46,0, 46,46,46,0,
1572 46,46,0, 46,46,46,0, 46,46,0, 46,46,46,0,
1573 };
1574
1575 #define AG_TCV(x) ag_tcv[(x)]
1576
1577 static const unsigned char ag_tcv[] = {
1578 46,242,242,242,242,242,242,242,242, 98,105,107,107,103,242,242,242,242,
1579 242,242,242,242,242,242,242,242, 46,242,242,242,242,242, 98, 15,153,243,
1580 61,243,139, 33, 21, 31, 91, 25, 7, 23,243,243,122,240,240,240,240,240,
1581 240,240,241,241,176, 76, 88, 13, 87,204,243,132,132,132,132,132,132,239,
1582 239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,
1583 239, 19,171, 27,114,239,243,132,132,132,132,132,132,239,239,239,239,239,
1584 239,239,239,239,239,239,239,239,239,239,239,239,239,239,239, 17, 37, 29,
1585 35,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,
1586 242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,
1587 242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,
1588 242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,
1589 242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,
1590 242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,
1591 242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,
1592 242,242,242,242
1593 };
1594
1595 #ifndef SYNTAX_ERROR
1596 #define SYNTAX_ERROR fprintf(stderr,"%s, line %d, column %d\n", \
1597 (PCB).error_message, (PCB).line, (PCB).column)
1598 #endif
1599
1600 #ifndef FIRST_LINE
1601 #define FIRST_LINE 1
1602 #endif
1603
1604 #ifndef FIRST_COLUMN
1605 #define FIRST_COLUMN 1
1606 #endif
1607
1608 #ifndef PARSER_STACK_OVERFLOW
1609 #define PARSER_STACK_OVERFLOW {fprintf(stderr, \
1610 "\nParser stack overflow, line %d, column %d\n",\
1611 (PCB).line, (PCB).column);}
1612 #endif
1613
1614 #ifndef REDUCTION_TOKEN_ERROR
1615 #define REDUCTION_TOKEN_ERROR {fprintf(stderr, \
1616 "\nReduction token error, line %d, column %d\n", \
1617 (PCB).line, (PCB).column);}
1618 #endif
1619
1620
1621 #ifndef INPUT_CODE
1622 #define INPUT_CODE(T) (T)
1623 #endif
1624
1625 typedef enum
1626 {ag_accept_key, ag_set_key, ag_jmp_key, ag_end_key, ag_no_match_key,
1627 ag_cf_accept_key, ag_cf_set_key, ag_cf_end_key} key_words;
1628
1629 static void ag_get_key_word(int ag_k) {
1630 int ag_save = (int) ((PCB).la_ptr - (PCB).pointer);
1631 const unsigned char *ag_p;
1632 int ag_ch;
1633 while (1) {
1634 switch (ag_key_act[ag_k]) {
1635 case ag_cf_end_key: {
1636 const unsigned char *sp = ag_key_ends + ag_key_jmp[ag_k];
1637 do {
1638 if ((ag_ch = *sp++) == 0) {
1639 int ag_k1 = ag_key_parm[ag_k];
1640 int ag_k2 = ag_key_pt[ag_k1];
1641 if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)]) goto ag_fail;
1642 (PCB).token_number = (pgg_token_type) ag_key_pt[ag_k1 + 1];
1643 return;
1644 }
1645 } while (CONVERT_CASE(*(PCB).la_ptr++) == ag_ch);
1646 goto ag_fail;
1647 }
1648 case ag_end_key: {
1649 const unsigned char *sp = ag_key_ends + ag_key_jmp[ag_k];
1650 do {
1651 if ((ag_ch = *sp++) == 0) {
1652 (PCB).token_number = (pgg_token_type) ag_key_parm[ag_k];
1653 return;
1654 }
1655 } while (CONVERT_CASE(*(PCB).la_ptr++) == ag_ch);
1656 }
1657 case ag_no_match_key:
1658 ag_fail:
1659 (PCB).la_ptr = (PCB).pointer + ag_save;
1660 return;
1661 case ag_cf_set_key: {
1662 int ag_k1 = ag_key_parm[ag_k];
1663 int ag_k2 = ag_key_pt[ag_k1];
1664 ag_k = ag_key_jmp[ag_k];
1665 if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)]) break;
1666 ag_save = (int) ((PCB).la_ptr - (PCB).pointer);
1667 (PCB).token_number = (pgg_token_type) ag_key_pt[ag_k1+1];
1668 break;
1669 }
1670 case ag_set_key:
1671 ag_save = (int) ((PCB).la_ptr - (PCB).pointer);
1672 (PCB).token_number = (pgg_token_type) ag_key_parm[ag_k];
1673 case ag_jmp_key:
1674 ag_k = ag_key_jmp[ag_k];
1675 break;
1676 case ag_accept_key:
1677 (PCB).token_number = (pgg_token_type) ag_key_parm[ag_k];
1678 return;
1679 case ag_cf_accept_key: {
1680 int ag_k1 = ag_key_parm[ag_k];
1681 int ag_k2 = ag_key_pt[ag_k1];
1682 if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)])
1683 (PCB).la_ptr = (PCB).pointer + ag_save;
1684 else (PCB).token_number = (pgg_token_type) ag_key_pt[ag_k1+1];
1685 return;
1686 }
1687 }
1688 ag_ch = CONVERT_CASE(*(PCB).la_ptr++);
1689 ag_p = &ag_key_ch[ag_k];
1690 if (ag_ch <= 255) while (*ag_p < ag_ch) ag_p++;
1691 if (ag_ch > 255 || *ag_p != ag_ch) {
1692 (PCB).la_ptr = (PCB).pointer + ag_save;
1693 return;
1694 }
1695 ag_k = (int) (ag_p - ag_key_ch);
1696 }
1697 }
1698
1699
1700 #ifndef AG_NEWLINE
1701 #define AG_NEWLINE 10
1702 #endif
1703
1704 #ifndef AG_RETURN
1705 #define AG_RETURN 13
1706 #endif
1707
1708 #ifndef AG_FORMFEED
1709 #define AG_FORMFEED 12
1710 #endif
1711
1712 #ifndef AG_TABCHAR
1713 #define AG_TABCHAR 9
1714 #endif
1715
1716 static void ag_track(void) {
1717 int ag_k = (int) ((PCB).la_ptr - (PCB).pointer);
1718 while (ag_k--) {
1719 switch (*(PCB).pointer++) {
1720 case AG_NEWLINE:
1721 (PCB).column = 1, (PCB).line++;
1722 case AG_RETURN:
1723 case AG_FORMFEED:
1724 break;
1725 case AG_TABCHAR:
1726 (PCB).column += (TAB_SPACING) - ((PCB).column - 1) % (TAB_SPACING);
1727 break;
1728 default:
1729 (PCB).column++;
1730 }
1731 }
1732 }
1733
1734
1735 static void ag_prot(void) {
1736 int ag_k;
1737 ag_k = 128 - ++(PCB).btsx;
1738 if (ag_k <= (PCB).ssx) {
1739 (PCB).exit_flag = AG_STACK_ERROR_CODE;
1740 PARSER_STACK_OVERFLOW;
1741 return;
1742 }
1743 (PCB).bts[(PCB).btsx] = (PCB).sn;
1744 (PCB).bts[ag_k] = (PCB).ssx;
1745 (PCB).vs[ag_k] = (PCB).vs[(PCB).ssx];
1746 (PCB).ss[ag_k] = (PCB).ss[(PCB).ssx];
1747 (PCB).cs[ag_k] = (PCB).cs[(PCB).ssx];
1748 }
1749
1750 static void ag_undo(void) {
1751 if ((PCB).drt == -1) return;
1752 while ((PCB).btsx) {
1753 int ag_k = 128 - (PCB).btsx;
1754 (PCB).sn = (PCB).bts[(PCB).btsx--];
1755 (PCB).ssx = (PCB).bts[ag_k];
1756 (PCB).vs[(PCB).ssx] = (PCB).vs[ag_k];
1757 (PCB).ss[(PCB).ssx] = (PCB).ss[ag_k];
1758 (PCB).cs[(PCB).ssx] = (PCB).cs[ag_k];
1759 }
1760 (PCB).token_number = (pgg_token_type) (PCB).drt;
1761 (PCB).ssx = (PCB).dssx;
1762 (PCB).sn = (PCB).dsn;
1763 (PCB).drt = -1;
1764 }
1765
1766
1767
1768 static const int ag_rtt[] = {
1769 99,227, 0
1770 };
1771
1772 static const unsigned char ag_tstt[] = {
1773 239,229,132,108,105,103,98,46,21,19,17,0,3,4,5,38,99,227,
1774 243,242,241,240,239,229,228,204,176,171,153,139,132,122,114,107,105,103,98,
1775 91,88,87,76,61,37,35,33,31,29,27,25,23,21,19,17,15,13,7,0,99,227,
1776 229,98,0,3,99,227,
1777 239,132,108,105,103,46,21,19,17,0,39,40,101,104,
1778 243,242,241,240,239,204,176,171,153,139,132,122,114,107,105,103,98,91,88,87,
1779 76,61,37,35,33,31,29,27,25,23,21,19,17,15,13,7,0,110,111,
1780 105,0,
1781 105,103,0,104,
1782 239,229,199,197,196,195,192,191,190,189,188,186,185,132,108,107,105,103,98,
1783 97,46,35,27,21,19,17,0,3,99,101,104,106,227,
1784 239,132,63,46,21,19,17,0,20,41,42,45,47,48,49,54,55,56,57,58,59,60,93,210,
1785 243,242,241,240,239,204,176,171,153,139,132,122,114,107,98,91,88,87,76,61,
1786 37,35,33,31,29,27,25,23,21,19,17,15,13,7,0,
1787 105,0,
1788 105,103,0,104,
1789 105,0,
1790 241,240,239,229,132,125,124,122,114,108,105,103,98,91,81,35,33,25,23,21,0,3,
1791 4,8,9,99,100,101,102,104,227,
1792 243,242,241,240,239,229,204,176,171,153,139,132,122,114,108,107,105,103,98,
1793 91,88,87,76,61,37,35,33,31,29,27,25,23,21,19,15,13,7,0,104,212,213,214,
1794 241,240,239,229,209,208,207,206,205,204,176,139,132,122,108,105,103,98,91,
1795 88,87,81,61,46,37,31,29,27,25,23,21,13,11,7,2,0,3,4,5,99,227,
1796 31,0,
1797 239,132,81,0,60,62,77,93,
1798 239,229,199,197,196,195,192,191,190,189,188,186,185,132,108,105,103,98,97,
1799 35,27,0,3,4,5,99,179,227,
1800 243,242,241,240,239,229,204,176,171,153,139,132,122,114,108,107,98,91,88,87,
1801 76,61,37,35,33,31,29,27,25,23,21,19,15,13,7,0,99,101,211,215,218,219,
1802 227,
1803 108,105,103,61,46,13,7,2,0,12,
1804 239,132,0,57,59,60,93,
1805 108,105,103,46,7,2,0,6,
1806 108,105,103,46,2,0,1,50,
1807 108,105,103,0,39,101,104,
1808 108,105,103,0,39,101,104,
1809 239,132,63,46,21,19,17,0,20,41,43,44,47,48,49,54,55,56,57,58,59,60,93,210,
1810 46,0,
1811 105,0,
1812 105,0,
1813 105,103,0,102,104,
1814 243,242,241,240,239,229,226,205,204,176,171,153,139,132,125,124,122,114,108,
1815 107,105,103,98,91,88,87,81,61,37,35,33,31,29,27,25,23,21,19,17,15,13,7,
1816 0,3,99,100,101,102,104,227,
1817 105,0,
1818 243,242,241,240,239,229,204,176,171,153,139,132,122,114,108,107,105,103,98,
1819 91,88,87,76,61,37,35,33,31,29,27,25,23,21,19,15,13,7,0,104,212,
1820 241,240,239,229,132,122,98,0,3,99,227,
1821 239,229,132,98,0,82,
1822 108,105,103,91,88,87,81,31,27,21,7,0,78,79,86,
1823 31,0,
1824 239,199,197,196,195,192,191,190,189,188,186,185,132,108,105,103,97,35,27,0,
1825 39,40,101,104,
1826 27,0,26,
1827 243,242,241,240,239,204,176,171,153,139,132,122,114,107,98,91,88,87,76,61,
1828 37,35,33,31,29,27,25,23,21,19,17,15,13,7,0,233,234,235,
1829 243,242,241,240,239,204,176,171,153,139,132,122,114,107,98,91,88,87,76,61,
1830 37,35,33,31,29,27,25,23,21,19,17,15,13,7,0,236,237,238,
1831 153,0,
1832 33,0,
1833 105,103,0,104,
1834 243,242,241,240,239,229,204,176,171,153,139,132,122,114,108,107,105,103,98,
1835 91,88,87,76,61,37,35,33,31,29,27,25,23,21,19,17,15,13,7,0,216,
1836 29,0,28,
1837 243,242,241,240,239,229,226,204,176,171,153,139,132,125,124,122,114,108,107,
1838 105,103,98,91,88,87,81,61,37,35,33,31,27,25,23,21,19,17,15,13,7,0,3,4,8,
1839 9,99,100,101,102,104,227,
1840 241,240,239,153,132,125,124,122,114,35,33,25,23,21,19,17,15,0,14,16,18,20,
1841 22,24,34,60,93,112,113,116,118,120,134,135,136,137,138,140,146,150,151,
1842 229,108,105,103,98,46,7,2,0,3,4,5,99,227,
1843 108,105,103,61,46,7,2,0,
1844 108,105,103,46,7,2,0,6,
1845 241,240,239,229,153,132,125,124,122,114,108,105,103,98,35,33,29,25,23,21,19,
1846 17,15,0,3,4,8,9,99,100,101,102,104,227,
1847 239,132,0,59,60,93,
1848 241,240,239,229,153,132,125,124,122,114,108,105,103,98,46,37,35,33,25,23,21,
1849 19,17,15,13,0,3,4,5,99,227,
1850 241,240,239,153,132,125,124,122,114,108,105,103,46,37,35,33,25,23,21,19,17,
1851 15,13,0,12,14,16,18,20,22,24,34,53,60,68,70,71,72,74,93,112,113,116,118,
1852 120,133,134,135,136,137,138,140,146,150,151,
1853 239,229,132,108,107,105,103,98,46,21,19,17,0,3,99,101,104,106,227,
1854 239,229,132,108,107,105,103,98,46,37,21,19,17,2,0,1,3,36,50,51,52,99,101,
1855 104,106,227,
1856 108,105,103,46,0,39,101,104,
1857 108,105,103,46,0,39,101,104,
1858 229,98,0,3,4,99,227,
1859 239,229,132,98,0,3,4,5,99,227,
1860 239,229,132,98,0,83,
1861 91,21,0,20,80,84,85,89,90,92,
1862 239,229,132,98,81,0,3,4,5,99,227,
1863 239,132,81,0,60,62,77,93,
1864 108,105,103,91,87,31,27,21,7,0,
1865 239,229,132,108,105,103,98,0,3,4,8,9,99,100,101,102,104,227,
1866 239,199,197,196,195,192,191,190,189,188,186,185,132,97,35,27,0,34,60,93,96,
1867 149,180,181,182,183,184,193,
1868 229,209,208,206,205,176,108,105,103,98,46,37,29,27,13,7,0,3,4,5,99,227,
1869 243,242,241,240,239,204,176,171,153,139,132,122,114,107,105,103,98,91,88,87,
1870 76,61,37,35,33,31,29,27,25,23,21,19,17,15,13,7,0,232,
1871 243,242,241,240,239,204,176,171,139,132,122,114,107,98,91,88,87,76,61,37,35,
1872 33,31,29,27,25,23,21,19,17,15,13,7,0,233,
1873 243,242,241,240,239,204,176,171,153,139,132,122,114,107,105,103,98,91,88,87,
1874 76,61,37,35,33,31,29,27,25,23,21,19,17,15,13,7,0,232,
1875 243,242,241,240,239,204,176,171,153,139,132,122,114,107,98,91,88,87,76,61,
1876 37,35,31,29,27,25,23,21,19,17,15,13,7,0,236,
1877 105,0,
1878 243,242,241,240,239,229,204,176,171,153,139,132,122,114,108,107,105,103,98,
1879 91,88,87,76,61,37,35,33,31,29,27,25,23,21,19,17,15,13,7,0,99,101,218,
1880 219,220,227,
1881 229,209,208,206,205,176,108,105,103,98,46,37,29,27,13,7,0,3,4,5,99,227,
1882 243,242,241,240,239,229,226,204,176,171,153,139,132,122,114,108,107,105,103,
1883 98,91,88,87,61,37,35,33,31,27,25,23,21,19,17,15,13,7,0,3,4,8,9,99,100,
1884 101,102,104,227,
1885 243,242,241,240,239,226,204,176,171,153,139,132,122,114,107,91,88,87,61,37,
1886 35,33,31,27,25,23,21,19,17,15,13,7,0,55,75,210,222,
1887 241,240,239,229,153,132,125,124,122,114,108,105,103,98,35,33,25,23,21,19,17,
1888 15,0,3,4,8,9,99,100,101,102,104,227,
1889 241,240,239,229,205,153,132,125,124,122,114,108,105,103,98,37,35,33,29,25,
1890 23,21,19,17,15,13,0,3,4,8,9,99,100,101,102,104,227,
1891 243,242,241,240,239,204,176,173,171,169,168,167,166,165,164,163,162,161,160,
1892 159,139,132,122,114,107,98,91,88,87,76,61,37,35,33,31,29,27,25,23,21,19,
1893 17,15,13,7,0,142,143,144,145,152,154,155,156,157,170,172,
1894 241,240,239,153,132,125,124,122,114,35,33,25,23,21,19,17,15,0,14,16,18,20,
1895 22,24,34,60,64,65,70,72,74,93,112,113,116,118,120,133,134,135,136,137,
1896 138,140,146,150,151,
1897 241,240,239,205,153,132,125,124,122,114,37,35,33,29,25,23,21,19,17,15,13,0,
1898 12,14,16,18,20,22,24,34,60,64,65,67,68,69,70,72,74,93,112,113,116,118,
1899 120,133,134,135,136,137,138,140,146,150,151,
1900 209,208,206,205,204,176,108,105,103,46,37,29,27,13,7,0,
1901 241,240,239,229,132,125,124,122,114,108,105,103,98,35,33,25,23,21,0,3,4,8,9,
1902 99,100,101,102,104,227,
1903 241,240,239,229,132,125,124,122,114,108,105,103,98,35,33,25,23,21,0,3,4,8,9,
1904 99,100,101,102,104,227,
1905 241,240,125,124,122,0,119,121,126,
1906 243,241,240,239,204,176,171,153,139,132,122,114,91,88,87,76,61,37,35,33,31,
1907 29,27,25,23,21,19,17,15,13,7,0,
1908 243,242,241,240,239,204,176,173,171,169,168,167,166,165,164,163,162,161,160,
1909 159,153,139,132,122,114,107,98,91,88,87,76,61,37,35,31,29,27,25,23,21,
1910 19,17,15,13,7,0,117,142,143,144,145,170,172,
1911 241,240,239,229,132,125,124,122,114,108,105,103,98,35,33,25,23,21,0,3,4,8,9,
1912 99,100,101,102,104,227,
1913 241,240,239,132,125,124,122,114,35,33,25,23,21,0,20,22,24,34,60,93,112,113,
1914 116,118,120,135,137,138,140,146,
1915 209,208,207,206,205,204,176,147,139,108,105,103,46,37,31,29,27,25,23,13,11,
1916 7,0,
1917 241,240,239,132,125,124,122,114,35,33,25,23,21,0,20,22,24,34,60,93,112,113,
1918 116,118,120,138,140,146,
1919 139,0,
1920 207,204,108,105,103,46,25,23,11,0,10,22,24,
1921 209,208,207,206,205,204,176,108,105,103,46,37,29,27,25,23,13,11,7,0,10,22,
1922 24,
1923 241,240,239,153,132,125,124,122,114,35,33,25,23,21,19,17,15,0,14,16,18,20,
1924 22,24,34,60,72,93,112,113,116,118,120,133,134,135,136,137,138,140,146,
1925 150,151,
1926 209,208,206,205,176,108,105,103,46,37,29,27,13,7,0,73,
1927 108,105,103,46,37,13,7,0,6,12,68,
1928 243,242,241,240,239,226,204,176,171,153,139,132,122,114,107,91,88,87,61,37,
1929 35,33,31,27,25,23,21,19,17,15,13,7,0,55,75,210,222,
1930 37,0,36,51,
1931 241,240,239,229,153,132,125,124,122,114,108,105,103,98,35,33,25,23,21,19,17,
1932 15,0,3,4,8,9,99,100,101,102,104,227,
1933 241,240,239,153,132,125,124,122,114,35,33,25,23,21,19,17,15,0,14,16,18,20,
1934 22,24,34,60,70,71,72,74,93,112,113,116,118,120,133,134,135,136,137,138,
1935 140,146,150,151,
1936 37,0,36,51,
1937 229,98,0,3,99,227,
1938 239,132,0,60,93,
1939 239,229,132,98,0,3,4,5,99,227,
1940 239,229,132,108,105,103,98,91,87,31,27,21,7,0,3,4,5,99,227,
1941 239,132,0,60,93,
1942 91,21,0,20,80,84,85,89,90,92,
1943 91,21,0,20,85,89,90,92,
1944 87,7,0,
1945 229,98,0,3,4,99,227,
1946 229,98,0,3,4,99,227,
1947 229,98,0,3,4,99,227,
1948 229,98,0,3,4,99,187,227,
1949 229,98,0,3,4,99,227,
1950 108,105,103,29,7,0,6,100,101,102,104,194,202,
1951 108,105,103,29,7,0,6,100,101,102,104,194,202,
1952 229,98,0,3,4,99,187,227,
1953 229,98,0,3,4,99,187,227,
1954 229,98,0,3,4,99,187,227,
1955 229,98,0,3,4,99,187,227,
1956 229,98,0,3,4,99,187,227,
1957 229,98,0,3,4,99,187,227,
1958 229,108,105,103,98,0,3,4,8,99,100,101,102,104,227,
1959 239,132,0,60,93,
1960 241,240,239,229,132,122,98,13,0,3,4,5,99,227,
1961 239,132,0,60,93,
1962 108,105,103,27,13,0,12,
1963 108,105,103,27,0,39,40,101,104,
1964 153,0,
1965 33,0,
1966 105,103,0,104,
1967 243,242,241,240,239,229,204,176,171,153,139,132,122,114,108,107,105,103,98,
1968 91,88,87,76,61,37,35,33,31,29,27,25,23,21,19,17,15,13,7,0,216,
1969 243,242,241,240,239,226,204,176,171,153,139,132,122,114,107,91,88,87,61,37,
1970 35,33,31,27,25,23,21,19,15,13,7,0,218,219,223,224,
1971 76,0,
1972 240,122,0,
1973 241,240,132,122,0,127,131,
1974 240,122,0,
1975 240,122,0,
1976 241,132,0,
1977 241,240,132,122,0,
1978 243,242,239,204,176,173,171,169,168,167,166,165,164,163,162,161,160,159,153,
1979 139,114,107,98,91,88,87,76,61,37,35,33,31,29,27,25,23,21,19,17,15,13,7,
1980 0,142,143,144,145,157,170,172,
1981 209,208,206,205,37,29,27,13,7,0,6,12,68,
1982 209,206,37,27,0,26,36,66,
1983 208,37,0,36,66,
1984 37,0,36,66,
1985 205,29,0,28,
1986 229,209,208,206,205,176,108,105,103,98,46,37,29,27,13,7,0,3,4,5,99,227,
1987 241,240,132,122,0,127,131,
1988 240,229,209,208,207,206,205,204,176,147,139,122,108,105,103,98,46,37,31,29,
1989 27,25,23,13,11,7,0,123,
1990 241,240,122,0,
1991 229,209,208,207,206,205,204,176,147,139,108,105,103,98,46,37,31,29,27,25,23,
1992 13,11,7,0,3,4,5,99,227,
1993 229,209,208,207,206,205,204,176,147,139,108,105,103,98,46,37,31,29,27,25,23,
1994 13,11,7,0,3,4,5,99,227,
1995 33,23,0,32,
1996 31,25,23,0,22,24,30,
1997 241,240,229,125,124,122,114,108,105,103,98,25,23,0,3,4,8,9,99,100,101,102,
1998 104,227,
1999 241,240,239,229,132,125,124,122,114,108,105,103,98,35,33,25,23,21,0,3,4,8,9,
2000 99,100,101,102,104,227,
2001 229,209,208,206,205,176,108,105,103,98,46,37,29,27,13,7,0,3,4,5,99,227,
2002 229,209,208,206,205,176,108,105,103,98,46,37,29,27,13,7,0,3,4,5,99,227,
2003 229,209,208,206,205,176,108,105,103,98,46,37,29,27,13,7,0,3,4,5,99,227,
2004 241,240,239,132,125,124,122,114,35,33,25,23,21,0,20,22,24,34,60,93,112,113,
2005 116,118,120,137,138,140,146,
2006 241,240,239,132,125,124,122,114,35,33,25,23,21,0,20,22,24,34,60,93,112,113,
2007 116,118,120,137,138,140,146,
2008 209,208,206,205,176,108,105,103,46,37,29,27,13,7,0,73,
2009 239,229,132,108,105,103,98,0,3,4,8,9,99,100,101,102,104,227,
2010 76,0,
2011 239,132,0,60,93,
2012 31,0,30,
2013 239,229,132,98,81,0,3,4,5,99,227,
2014 229,108,105,103,98,91,87,31,27,21,7,0,3,4,5,99,227,
2015 239,229,198,132,98,0,3,99,227,
2016 229,200,98,0,3,99,227,
2017 229,198,98,0,3,99,227,
2018 229,98,17,0,3,16,99,227,
2019 241,240,239,229,153,132,125,124,122,114,98,35,33,25,23,21,19,17,0,3,16,18,
2020 20,22,24,34,60,93,99,112,113,116,118,120,133,135,136,137,138,140,146,
2021 150,151,227,
2022 29,0,28,
2023 239,132,0,60,93,148,
2024 241,240,239,132,125,124,122,114,35,33,29,25,23,21,0,20,22,24,34,60,93,112,
2025 113,116,118,120,135,137,138,140,146,
2026 17,0,16,
2027 241,240,239,229,132,122,108,105,103,98,17,0,3,99,100,101,102,104,227,
2028 13,0,12,
2029 241,240,239,229,132,122,98,0,3,99,227,
2030 241,240,239,153,132,125,124,122,81,25,23,0,22,24,60,62,77,93,113,118,120,
2031 150,151,
2032 239,229,199,197,196,195,192,191,190,189,188,186,185,132,108,107,105,103,98,
2033 97,35,27,0,3,34,60,93,96,99,101,104,106,149,182,183,184,193,227,
2034 105,0,
2035 243,242,241,240,239,229,204,176,171,153,139,132,122,114,108,107,105,103,98,
2036 91,88,87,76,61,37,35,33,31,29,27,25,23,21,19,17,15,13,7,0,99,101,218,
2037 219,220,227,
2038 153,0,
2039 33,0,
2040 243,242,241,240,239,229,226,204,176,171,153,139,132,122,114,107,98,91,88,87,
2041 76,61,37,35,33,31,27,25,23,21,19,15,13,7,0,3,99,218,219,224,227,
2042 229,209,208,206,205,176,108,105,103,98,46,37,29,27,13,7,0,3,4,5,99,227,
2043 243,242,241,240,239,204,176,173,171,169,168,167,166,165,164,163,162,161,160,
2044 159,153,139,132,122,114,107,98,91,88,87,76,61,37,35,33,31,29,27,25,23,
2045 21,19,17,15,13,7,0,131,
2046 229,209,208,206,205,204,176,108,105,103,98,46,37,29,27,13,7,0,3,4,5,99,227,
2047 229,209,208,206,205,176,108,105,103,98,46,37,29,27,13,7,0,3,4,5,99,227,
2048 229,209,208,206,205,176,108,105,103,98,46,37,29,27,13,7,0,3,4,5,99,227,
2049 241,240,239,153,132,125,124,122,114,35,33,25,23,21,19,17,15,0,14,16,18,20,
2050 22,24,34,60,65,70,72,74,93,112,113,116,118,120,133,134,135,136,137,138,
2051 140,146,150,151,
2052 229,209,208,206,205,176,108,105,103,98,46,37,29,27,13,7,0,3,4,5,99,227,
2053 229,209,208,206,205,176,108,105,103,98,46,37,29,27,13,7,0,3,4,5,99,227,
2054 241,240,229,209,208,207,206,205,204,176,147,139,132,122,108,105,103,98,46,
2055 37,31,29,27,25,23,13,11,7,0,131,
2056 240,229,209,208,207,206,205,204,176,147,139,122,108,105,103,98,46,37,31,29,
2057 27,25,23,13,11,7,0,
2058 243,242,241,240,239,204,176,173,171,169,168,167,166,165,164,163,162,161,160,
2059 159,153,139,132,122,114,107,98,91,88,87,76,61,37,35,31,29,27,25,23,21,
2060 19,17,15,13,7,0,117,142,143,144,145,170,172,
2061 229,209,208,207,206,205,204,176,139,108,105,103,98,46,37,31,29,27,25,23,13,
2062 11,7,0,3,4,5,99,227,
2063 229,209,208,207,206,205,204,176,139,108,105,103,98,87,46,37,31,29,27,25,23,
2064 13,11,7,0,3,4,5,99,227,
2065 241,240,125,124,122,114,25,23,0,22,24,112,113,118,120,
2066 241,240,239,132,125,124,122,114,35,33,25,23,21,0,20,22,24,34,60,93,112,113,
2067 116,118,120,138,140,146,
2068 209,208,207,206,205,204,176,139,108,105,103,46,37,31,29,27,25,23,13,11,7,0,
2069 209,208,207,206,205,204,176,139,108,105,103,46,37,31,29,27,25,23,13,11,7,0,
2070 239,132,0,177,178,
2071 229,209,208,206,205,108,105,103,98,46,37,29,27,0,3,4,5,99,227,
2072 229,98,0,3,4,99,227,
2073 229,98,0,3,4,99,227,
2074 229,98,0,3,4,99,187,227,
2075 241,240,239,153,132,125,124,122,114,35,33,25,23,21,19,17,0,16,18,20,22,24,
2076 34,60,93,112,113,116,118,120,133,135,136,137,138,140,146,150,151,203,
2077 108,105,103,29,13,7,0,12,
2078 108,105,103,29,25,23,7,0,22,24,
2079 239,132,0,60,93,148,
2080 153,0,150,151,
2081 33,0,32,
2082 241,240,239,229,209,208,206,205,132,122,108,105,103,98,46,37,29,27,13,7,0,3,
2083 4,5,99,227,
2084 229,98,17,0,3,16,99,227,
2085 239,229,132,98,0,3,99,201,227,
2086 108,105,103,29,7,0,6,100,101,102,104,194,202,
2087 241,240,125,124,122,114,33,25,23,0,22,24,112,113,116,118,120,
2088 241,240,239,132,125,124,122,114,35,33,25,23,21,0,20,22,24,34,60,93,112,113,
2089 116,118,120,135,137,138,140,146,
2090 241,240,239,229,132,122,98,0,3,4,99,227,
2091 241,240,239,153,132,125,124,122,114,35,33,29,25,23,21,19,17,0,16,18,20,22,
2092 24,34,60,93,112,113,116,118,120,133,135,136,137,138,140,146,150,151,
2093 243,242,241,240,239,204,176,173,171,169,168,167,166,165,164,163,162,161,160,
2094 159,153,139,132,122,114,107,98,91,88,87,76,61,37,35,31,29,27,25,23,21,
2095 19,17,15,13,7,0,117,142,143,144,145,170,172,
2096 108,105,103,29,25,23,7,0,22,24,
2097 239,229,132,98,0,3,99,201,227,
2098 33,0,32,
2099 241,240,239,132,122,108,105,103,27,0,
2100
2101 };
2102
2103
2104 static unsigned const char ag_astt[4209] = {
2105 5,1,5,8,8,8,1,5,5,5,5,7,1,1,1,0,1,1,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,
2106 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,2,1,1,9,5,3,3,1,8,8,1,8,1,5,8,8,8,
2107 7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2108 1,1,1,1,7,1,3,3,7,8,1,7,1,5,1,5,5,5,5,5,5,5,5,5,5,5,5,1,9,8,1,9,5,5,5,5,5,
2109 5,5,7,3,3,1,1,3,1,2,2,1,8,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,9,9,9,9,
2110 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,5,3,7,8,1,7,1,
2111 3,7,5,5,5,1,5,5,5,5,5,1,8,1,1,5,5,5,5,5,5,5,7,1,1,3,3,1,3,1,3,1,1,5,5,5,5,
2112 5,5,5,5,5,5,5,5,5,5,5,5,8,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,1,1,1,
2113 2,10,10,10,1,5,5,5,5,5,5,5,5,10,10,5,5,5,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2114 5,7,1,1,3,1,1,3,7,2,2,1,7,1,1,1,1,5,1,5,5,5,5,5,5,5,5,5,5,5,5,8,8,8,1,5,5,
2115 5,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,
2116 1,1,1,1,1,1,7,1,1,1,1,1,1,1,4,4,4,1,4,1,4,4,7,1,2,2,7,1,2,1,1,4,4,4,4,1,4,
2117 7,1,4,4,4,4,1,7,1,3,1,8,1,7,1,1,1,1,8,1,7,1,1,1,2,2,1,5,1,1,1,7,1,3,3,3,1,
2118 1,1,1,1,1,1,1,2,1,1,1,3,7,3,7,1,7,8,1,7,3,1,5,5,5,5,5,1,5,5,5,5,5,5,5,5,5,
2119 5,5,5,1,5,8,1,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,3,3,3,1,3,1,1,3,7,
2120 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,8,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2121 7,1,3,2,2,2,1,2,2,9,5,3,3,1,4,4,4,4,7,1,5,5,5,8,1,5,1,5,5,8,5,7,1,1,1,1,7,
2122 8,8,8,8,8,8,8,8,8,8,8,8,8,1,8,1,8,8,5,7,1,1,1,1,1,7,3,1,1,1,1,1,1,1,1,5,1,
2123 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,3,1,1,1,1,1,1,1,1,1,
2124 1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,7,1,1,3,3,7,3,7,8,1,7,1,
2125 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,5,8,8,8,8,8,8,8,8,
2126 8,7,1,1,7,3,5,5,5,5,5,1,5,5,5,5,5,5,5,5,5,5,5,1,5,8,1,1,5,5,5,5,5,5,5,5,5,
2127 5,5,5,5,5,5,5,5,5,7,1,1,2,2,1,2,1,2,1,1,5,5,2,2,2,5,5,5,1,1,1,1,1,1,1,1,1,
2128 7,1,1,1,1,2,2,1,2,1,1,1,2,1,2,2,1,2,1,1,1,1,1,1,1,5,5,5,1,5,5,5,7,1,1,2,1,
2129 1,4,4,4,1,4,4,4,7,4,4,4,4,1,4,7,1,5,5,5,1,5,5,5,5,5,5,1,8,1,1,5,5,5,5,5,5,
2130 5,5,5,7,1,1,3,3,1,3,1,3,1,1,2,2,7,2,1,1,5,5,5,1,5,5,5,5,5,5,5,5,5,1,5,5,5,
2131 5,5,5,5,5,5,5,5,7,1,1,3,1,1,5,5,2,2,2,5,5,5,1,4,4,4,4,4,1,1,1,1,1,1,1,1,1,
2132 7,1,1,1,1,1,2,2,1,1,2,2,1,2,1,1,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,4,1,4,1,9,
2133 8,1,9,4,4,4,4,7,3,3,1,1,3,1,4,1,4,1,9,8,1,9,4,1,4,4,4,1,7,1,3,1,2,1,1,3,1,
2134 1,3,1,1,8,1,4,7,1,1,1,1,8,1,4,7,1,1,1,1,1,5,1,1,1,1,8,1,8,1,7,1,1,1,1,1,4,
2135 4,4,4,7,1,1,1,7,2,2,1,2,1,1,1,5,1,5,1,5,7,1,1,2,1,1,2,2,1,7,1,1,1,1,5,5,5,
2136 5,5,5,5,5,5,7,5,1,5,1,8,1,1,7,1,1,2,2,1,2,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,
2137 2,1,1,5,7,1,1,1,1,1,1,3,1,1,1,1,1,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,7,1,1,3,1,
2138 1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
2139 7,3,9,9,9,9,9,9,9,1,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,5,3,
2140 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,
2141 3,9,9,9,9,9,9,9,1,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,5,3,3,
2142 7,9,9,9,9,9,1,9,9,9,1,9,9,9,9,1,9,9,9,9,9,9,9,9,9,9,9,1,9,4,9,9,9,9,9,1,9,
2143 9,9,7,3,1,1,1,3,1,1,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,7,1,1,3,1,1,5,5,5,5,5,1,
2144 5,5,5,5,5,5,5,5,5,1,5,8,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,1,1,2,2,1,
2145 2,1,2,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,
2146 7,2,1,1,1,5,5,5,1,5,5,5,5,5,5,1,8,1,1,5,5,5,5,5,5,5,5,7,1,1,3,3,1,3,1,3,1,
2147 1,5,5,5,1,5,5,5,5,5,5,5,1,8,1,1,5,5,5,5,5,5,5,5,5,5,5,7,1,1,3,3,1,3,1,3,1,
2148 1,2,2,2,2,2,2,2,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,2,2,2,2,
2149 2,2,2,2,2,2,2,2,2,7,2,2,2,2,1,1,1,1,2,1,1,5,5,2,2,2,5,5,5,1,1,1,1,1,1,1,1,
2150 1,7,1,1,1,1,2,2,1,2,1,2,1,1,1,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,5,5,2,4,2,2,
2151 5,5,5,1,4,1,1,4,1,1,1,1,1,1,1,7,1,1,1,1,1,2,2,1,2,1,2,1,2,1,1,1,1,1,1,1,2,
2152 1,2,1,2,1,1,1,1,1,1,1,1,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,7,5,5,5,1,5,5,5,5,5,
2153 1,8,1,1,5,5,5,5,5,7,1,1,3,3,1,3,1,3,1,1,5,5,5,1,5,5,5,5,5,1,8,1,1,5,5,5,5,
2154 5,7,1,1,3,3,1,3,1,3,1,1,2,2,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2155 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,
2156 2,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,1,5,5,5,1,5,
2157 5,5,5,5,1,8,1,1,5,5,5,5,5,7,1,1,3,3,1,3,1,3,1,1,5,5,2,2,5,5,5,1,1,1,1,1,1,
2158 7,1,2,2,1,2,1,1,1,2,1,2,1,1,1,1,1,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,
2159 4,4,7,5,5,2,2,5,5,5,1,1,1,1,1,1,7,1,2,2,1,2,1,1,1,2,1,2,2,2,2,1,5,1,1,4,4,
2160 4,4,1,1,1,7,2,1,1,4,4,1,4,4,1,4,4,4,4,4,4,4,4,1,1,4,1,4,7,2,1,1,5,5,2,2,2,
2161 5,5,5,1,1,1,1,1,1,1,1,1,7,1,1,1,1,2,2,1,2,1,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,
2162 1,4,4,4,4,1,4,4,4,4,4,4,4,4,4,7,2,4,4,4,4,4,1,1,7,3,1,2,4,4,4,4,4,4,4,4,4,
2163 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,7,2,1,1,1,1,5,1,3,5,5,5,1,5,
2164 5,5,5,5,5,1,8,1,1,5,5,5,5,5,5,5,5,7,1,1,3,3,1,3,1,3,1,1,5,5,2,2,2,5,5,5,1,
2165 1,1,1,1,1,1,1,1,7,1,1,1,1,2,2,1,2,1,2,1,1,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,
2166 1,5,1,3,1,9,5,3,3,1,2,2,7,2,1,8,1,8,1,7,1,1,1,1,1,5,1,5,5,5,5,1,5,5,5,5,5,
2167 5,7,1,1,2,1,1,2,2,5,2,1,1,1,7,2,1,1,1,1,1,1,1,1,5,2,2,1,1,2,1,1,7,1,1,7,1,
2168 1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,2,1,1,1,7,1,1,1,1,1,8,1,8,1,
2169 7,1,1,1,1,1,3,1,1,8,1,8,1,7,1,1,1,1,1,3,1,1,1,7,1,1,1,2,1,1,1,7,1,1,1,2,1,
2170 1,1,7,1,1,1,2,1,1,1,7,1,1,1,2,1,1,1,7,1,1,1,2,1,1,1,7,1,1,1,2,1,1,1,8,1,1,
2171 7,1,1,1,1,1,1,1,1,1,2,2,7,2,1,10,10,10,1,10,10,1,8,7,1,1,1,1,1,2,2,7,2,1,4,
2172 4,4,4,1,7,1,1,8,1,5,7,1,3,1,1,3,7,3,7,8,1,7,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
2173 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,1,1,1,1,1,1,1,1,1,1,1,1,
2174 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,7,2,2,7,2,2,2,2,7,1,2,
2175 2,2,5,2,2,5,2,2,5,10,10,10,10,5,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,
2176 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,2,2,2,2,2,1,1,4,4,4,4,4,4,4,1,
2177 1,7,3,1,2,1,1,1,1,7,2,1,3,1,1,5,1,3,1,5,1,3,1,1,7,2,1,5,5,5,5,5,5,5,5,1,5,
2178 5,5,5,5,5,7,1,1,2,1,1,2,2,2,2,7,1,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
2179 4,4,4,4,4,4,4,7,1,10,10,10,5,1,5,5,5,5,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,5,5,5,
2180 5,7,1,1,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,5,5,5,5,7,1,1,2,1,1,
2181 1,1,7,2,1,1,1,7,1,1,2,8,8,1,8,8,8,8,1,8,1,1,8,8,7,1,1,1,1,1,1,1,1,1,1,8,8,
2182 8,1,8,8,8,8,8,1,8,1,1,8,8,8,8,8,7,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,1,
2183 5,5,5,5,5,5,7,1,1,3,1,1,1,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,7,1,1,2,1,1,1,5,5,
2184 5,5,5,5,5,5,1,5,5,5,5,5,5,7,1,1,2,1,1,5,5,2,2,5,5,5,1,1,1,1,1,1,7,1,2,2,1,
2185 2,1,1,1,2,1,2,1,1,1,1,5,5,2,2,5,5,5,1,1,1,1,1,1,7,1,2,2,1,2,1,1,1,2,1,2,1,
2186 1,1,1,4,4,4,4,1,4,4,4,4,4,4,4,4,4,7,2,8,1,8,1,8,1,1,7,1,1,1,1,1,1,1,1,1,1,
2187 1,7,2,2,7,2,1,1,7,2,5,1,5,1,5,7,1,1,2,1,1,1,5,5,5,1,5,5,5,5,5,5,7,1,1,2,1,
2188 1,4,1,1,4,9,7,3,3,1,1,1,9,7,3,3,1,1,1,9,7,3,3,1,1,9,1,7,3,1,3,1,5,5,2,1,2,
2189 2,5,5,5,1,9,1,1,1,1,1,1,1,7,3,1,1,1,2,2,1,2,1,3,1,1,2,1,2,2,1,2,1,1,1,1,1,
2190 1,1,1,7,3,2,2,5,1,1,3,5,5,2,2,5,5,5,1,1,1,5,1,1,1,7,1,2,2,1,2,1,1,1,2,1,2,
2191 1,1,1,1,1,1,7,1,2,2,2,1,2,2,1,8,1,9,5,7,3,3,3,1,3,1,1,1,7,1,2,2,2,1,2,2,9,
2192 5,3,3,1,5,5,2,2,2,5,5,5,1,1,1,7,2,2,1,2,1,1,2,1,2,2,1,2,1,1,1,1,1,1,1,1,1,
2193 1,1,1,2,1,9,8,1,9,1,1,5,7,3,1,1,1,1,3,1,1,3,1,3,3,1,1,1,3,7,9,9,9,9,9,1,9,
2194 9,9,1,9,9,9,9,1,9,9,9,9,9,9,9,9,9,9,9,1,9,3,9,9,9,9,9,1,9,9,9,7,3,1,1,1,3,
2195 1,3,7,3,7,9,9,9,9,9,1,9,9,9,9,1,9,9,9,9,9,9,9,9,9,4,9,9,9,1,9,9,9,9,9,9,9,
2196 9,9,7,3,3,1,1,3,1,1,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,7,1,1,2,1,1,4,4,2,2,4,4,
2197 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
2198 4,4,4,7,2,1,5,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,7,1,1,3,1,1,1,5,5,5,5,5,5,5,5,
2199 1,5,5,5,5,5,5,7,1,1,2,1,1,1,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,7,1,1,2,1,1,5,5,
2200 2,2,2,5,5,5,1,1,1,1,1,1,1,1,1,7,1,1,1,1,2,2,1,2,2,1,1,1,1,1,1,2,1,2,1,2,1,
2201 1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,7,1,1,2,1,1,1,5,5,5,5,5,5,5,
2202 5,1,5,5,5,5,5,5,7,1,1,2,1,1,2,2,4,4,4,4,4,4,4,4,4,4,2,2,4,4,4,4,4,4,4,4,4,
2203 4,4,4,4,4,7,2,10,4,4,4,4,4,4,4,4,4,4,10,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,2,2,
2204 2,2,2,2,2,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,2,2,2,2,2,2,2,
2205 2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,5,5,5,5,
2206 7,1,1,3,1,1,1,5,5,5,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,5,5,5,5,5,7,1,1,3,1,1,5,
2207 5,5,5,5,1,1,1,7,2,2,2,2,1,2,5,5,2,2,5,5,5,1,1,1,1,1,1,7,1,2,2,1,2,1,1,1,2,
2208 1,2,2,2,2,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,1,4,4,
2209 4,4,4,4,4,4,4,4,4,4,4,7,2,2,7,2,1,1,5,5,5,5,5,5,5,1,5,5,5,5,7,1,1,2,1,1,1,
2210 1,7,1,1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,2,1,5,5,2,2,2,5,5,5,1,1,1,1,1,1,1,1,
2211 7,1,1,1,2,2,1,2,1,1,1,2,1,2,2,1,2,1,1,1,1,1,1,1,4,4,4,4,1,4,7,1,4,4,4,4,1,
2212 1,4,7,1,1,2,2,7,1,1,3,2,7,2,1,1,7,2,10,10,10,1,5,5,5,5,10,10,5,5,5,1,5,5,5,
2213 5,5,5,7,1,1,3,1,1,1,9,1,7,3,1,3,1,2,1,2,9,7,3,3,1,1,1,8,1,8,1,7,1,1,1,1,1,
2214 3,1,5,5,5,5,5,1,1,1,1,7,2,2,2,2,2,1,2,5,5,2,2,5,5,5,1,1,1,1,1,1,7,1,2,2,1,
2215 2,1,1,1,2,1,2,1,1,1,1,1,9,9,9,1,9,9,1,7,1,1,1,1,5,5,2,2,2,5,5,5,1,1,1,5,1,
2216 1,1,1,1,7,1,1,1,2,2,1,2,1,1,1,2,1,2,2,1,2,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,2,
2217 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,7,1,
2218 1,1,1,1,1,1,4,4,4,4,1,1,4,7,1,1,2,1,2,9,7,3,3,1,1,1,7,2,9,9,9,9,9,4,4,4,4,
2219 7
2220 };
2221
2222
2223 static const unsigned short ag_pstt[] = {
2224 3,1,3,3,3,3,2,3,3,3,3,0,2,2,3,0,2,1,
2225 301,301,301,301,301,1,299,301,301,301,301,301,301,301,301,301,301,301,301,
2226 301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,
2227 301,1,302,1,
2228 1,2,4,2,2,1,
2229 8,8,4,5,5,23,8,8,8,3,7,8,6,5,
2230 9,9,9,9,9,9,9,9,9,9,9,9,9,9,123,123,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
2231 4,9,125,
2232 118,5,
2233 10,10,6,10,
2234 24,1,24,24,24,24,24,24,24,24,24,24,24,24,4,120,12,12,119,24,24,24,24,24,24,
2235 24,7,119,119,11,12,119,1,
2236 96,96,16,27,13,18,14,8,17,26,26,27,25,24,23,24,24,24,22,21,48,20,15,19,
2237 122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,
2238 122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,124,
2239 117,10,
2240 28,28,11,28,
2241 115,12,
2242 6,6,6,1,6,6,6,6,6,4,29,29,31,6,6,6,6,6,6,6,13,31,31,14,14,31,14,30,14,29,1,
2243 272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,32,32,272,
2244 272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,
2245 14,32,33,33,274,
2246 97,97,97,1,3,3,3,3,3,3,3,3,97,97,3,3,3,34,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
2247 15,34,34,102,34,1,
2248 53,16,
2249 96,96,35,17,36,37,36,15,
2250 3,1,3,3,3,3,3,3,3,3,3,3,3,3,38,38,38,2,3,3,3,18,2,2,38,2,39,1,
2251 45,45,45,45,45,1,45,45,45,40,45,45,45,45,4,45,45,45,45,45,45,45,45,45,41,45,
2252 275,45,45,45,45,45,45,45,45,19,45,44,46,45,43,42,1,
2253 50,50,50,49,50,47,50,50,20,48,
2254 96,96,21,51,48,50,15,
2255 46,46,46,46,52,46,22,53,
2256 36,36,36,36,54,23,55,37,
2257 4,5,5,24,56,6,5,
2258 4,5,5,25,57,6,5,
2259 96,96,16,27,13,18,14,26,17,26,30,30,59,58,23,58,58,58,22,21,48,20,15,19,
2260 31,27,
2261 116,28,
2262 60,29,
2263 29,29,30,108,29,
2264 105,105,105,105,105,1,105,105,105,105,105,105,105,105,105,105,105,105,4,105,
2265 29,29,2,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,
2266 105,105,105,31,2,2,106,30,106,29,1,
2267 269,32,
2268 273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,32,32,273,
2269 273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,
2270 33,32,271,
2271 98,98,98,1,98,98,2,4,2,2,1,
2272 79,79,79,79,35,61,
2273 73,73,73,63,64,73,62,73,73,63,73,36,66,63,65,
2274 67,37,
2275 68,68,68,68,68,68,68,68,68,68,68,68,68,4,5,5,68,68,23,38,7,68,6,5,
2276 69,39,217,
2277 71,71,71,71,71,71,71,70,308,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,
2278 71,71,71,71,71,71,71,71,71,40,71,71,310,
2279 73,73,73,73,73,73,73,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,316,73,73,
2280 73,73,73,73,73,73,73,73,73,41,73,73,318,
2281 281,42,
2282 280,43,
2283 74,74,44,74,
2284 75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,
2285 75,75,75,282,75,75,75,75,75,75,75,75,75,45,75,
2286 76,46,268,
2287 6,6,6,6,6,1,6,6,6,6,6,6,6,6,6,6,6,4,6,29,29,31,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
2288 6,6,6,6,47,31,31,10,10,31,10,30,10,29,1,
2289 130,130,96,182,96,130,130,130,88,90,89,85,86,13,79,80,77,48,78,83,82,91,133,
2290 132,93,166,15,92,92,165,87,132,172,95,171,94,94,94,94,84,81,
2291 1,3,3,3,2,3,3,3,49,2,2,51,2,1,
2292 50,50,50,49,50,50,50,50,
2293 47,47,47,47,52,47,51,53,
2294 6,6,6,1,6,6,6,6,6,6,4,29,29,31,6,6,6,6,6,6,6,6,6,52,31,31,8,8,31,8,30,8,29,
2295 1,
2296 96,96,53,49,50,15,
2297 3,3,3,1,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,54,2,2,5,2,1,
2298 130,130,96,182,96,130,130,130,88,70,70,70,70,70,90,89,85,86,13,79,80,77,47,
2299 55,100,78,83,82,91,133,132,93,101,166,62,99,63,98,97,15,92,92,165,87,
2300 132,98,148,96,98,94,94,94,94,84,81,
2301 33,1,33,4,120,12,12,119,33,33,33,33,56,119,119,11,12,119,1,
2302 32,1,32,4,120,12,12,119,32,102,32,32,32,54,57,55,119,103,38,104,104,119,11,
2303 12,119,1,
2304 4,5,5,35,58,56,6,5,
2305 4,5,5,34,59,57,6,5,
2306 1,105,112,105,105,105,1,
2307 106,1,106,2,61,2,2,106,2,1,
2308 81,81,81,81,62,107,
2309 108,13,63,89,77,111,77,110,109,111,
2310 3,1,3,2,3,64,2,2,87,2,1,
2311 96,96,35,65,36,112,36,15,
2312 74,74,74,76,74,74,74,76,74,66,
2313 6,1,6,4,29,29,31,67,31,31,52,52,31,52,30,52,29,1,
2314 96,114,115,116,117,120,121,122,123,124,125,113,96,126,90,218,68,129,130,15,
2315 128,118,131,220,131,131,127,119,
2316 1,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,69,2,2,17,2,1,
2317 305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,
2318 305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,70,
2319 305,
2320 307,307,307,307,307,307,307,70,307,307,307,307,307,307,307,307,307,307,307,
2321 307,307,307,307,307,307,307,307,307,307,307,307,307,307,309,307,
2322 313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,
2323 313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,72,
2324 313,
2325 315,315,315,315,315,315,315,72,315,315,315,315,315,315,315,315,315,315,315,
2326 315,315,315,315,315,315,315,315,315,315,315,315,315,315,317,315,
2327 279,74,
2328 283,283,283,283,283,1,283,283,283,40,283,283,283,283,4,283,283,283,283,283,
2329 283,283,283,283,283,283,41,283,276,283,283,283,283,283,135,283,283,283,
2330 75,283,134,133,132,283,1,
2331 1,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,76,2,2,18,2,1,
2332 6,6,6,6,6,1,6,6,6,6,6,6,6,6,6,4,6,29,29,31,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
2333 6,77,31,31,11,11,31,11,30,11,29,1,
2334 290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,
2335 290,290,290,290,290,290,290,290,290,14,290,290,290,78,266,137,19,136,
2336 6,6,6,1,6,6,6,6,6,6,4,29,29,31,6,6,6,6,6,6,6,6,79,31,31,13,13,31,13,30,13,
2337 29,1,
2338 6,6,6,1,6,6,6,6,6,6,6,4,29,29,31,6,6,6,6,6,6,6,6,6,6,6,80,31,31,12,12,31,12,
2339 30,12,29,1,
2340 203,203,204,204,203,203,203,139,138,196,195,194,193,192,191,190,189,188,187,
2341 186,203,204,204,203,203,203,203,203,203,203,203,203,203,203,203,203,203,
2342 203,203,203,203,203,203,203,203,81,203,208,185,210,144,143,142,144,203,
2343 141,140,
2344 130,130,96,182,96,130,130,130,88,90,89,85,86,13,79,80,77,82,78,83,82,91,133,
2345 132,93,166,146,54,145,98,97,15,92,92,165,87,132,98,148,96,98,94,94,94,
2346 94,84,81,
2347 130,130,96,70,182,96,130,130,130,88,70,90,89,70,85,86,13,79,80,77,47,83,100,
2348 78,83,82,91,133,132,93,166,147,54,148,57,149,145,98,97,15,92,92,165,87,
2349 132,98,148,96,98,94,94,94,94,84,81,
2350 255,255,255,255,150,255,255,255,255,255,255,255,255,255,255,84,
2351 6,6,6,1,6,6,6,6,6,4,29,29,31,6,6,6,6,6,85,31,31,16,16,31,16,30,16,29,1,
2352 6,6,6,1,6,6,6,6,6,4,29,29,31,6,6,6,6,6,86,31,31,15,15,31,15,30,15,29,1,
2353 139,139,151,151,152,87,154,153,151,
2354 155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,
2355 155,155,155,155,155,155,155,155,155,155,155,155,88,
2356 158,158,158,158,158,158,158,139,138,196,195,194,193,192,191,190,189,188,187,
2357 186,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,
2358 158,158,158,158,158,158,158,158,89,156,156,156,156,156,141,140,
2359 6,6,6,1,6,6,6,6,6,4,29,29,31,6,6,6,6,6,90,31,31,21,21,31,21,30,21,29,1,
2360 130,130,96,96,130,130,130,88,90,89,85,86,13,91,91,133,132,93,166,15,92,92,
2361 165,87,132,157,94,94,94,94,
2362 164,164,164,164,164,164,164,158,164,164,164,164,164,164,164,164,164,164,164,
2363 164,164,164,92,
2364 130,130,96,96,130,130,130,88,90,89,85,86,13,93,91,133,132,93,166,15,92,92,
2365 165,87,132,157,157,157,
2366 159,151,
2367 161,162,170,170,170,170,85,86,160,95,263,163,164,
2368 149,149,161,149,149,162,149,149,149,149,149,149,149,149,85,86,149,160,149,
2369 96,263,163,164,
2370 130,130,96,182,96,130,130,130,88,90,89,85,86,13,79,80,77,97,78,83,82,91,133,
2371 132,93,166,165,15,92,92,165,87,132,165,148,96,165,94,94,94,94,84,81,
2372 212,212,212,212,166,212,212,212,212,212,212,212,212,212,98,67,
2373 70,70,70,70,70,47,52,99,69,100,66,
2374 290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,
2375 290,290,290,290,290,290,290,290,290,14,290,290,290,100,71,167,19,136,
2376 102,42,103,64,
2377 6,6,6,1,6,6,6,6,6,6,4,29,29,31,6,6,6,6,6,6,6,6,102,31,31,22,22,31,22,30,22,
2378 29,1,
2379 130,130,96,182,96,130,130,130,88,90,89,85,86,13,79,80,77,103,78,83,82,91,
2380 133,132,93,166,99,65,98,97,15,92,92,165,87,132,98,148,96,98,94,94,94,94,
2381 84,81,
2382 102,41,103,40,
2383 1,2,113,2,2,1,
2384 96,96,106,80,15,
2385 168,1,168,2,107,2,2,168,2,1,
2386 3,1,3,3,3,3,2,3,3,3,3,3,3,108,2,2,91,2,1,
2387 96,96,92,93,15,
2388 108,13,110,89,169,111,169,110,109,111,
2389 108,13,83,89,85,110,109,95,
2390 171,170,112,
2391 1,172,113,172,172,172,1,
2392 1,173,114,173,173,173,1,
2393 1,174,115,174,174,174,1,
2394 1,175,116,175,175,175,241,1,
2395 1,176,117,176,176,176,1,
2396 4,29,29,177,52,118,178,177,30,177,29,239,177,
2397 4,29,29,177,52,119,179,177,30,177,29,238,177,
2398 1,175,120,175,175,175,237,1,
2399 1,175,121,175,175,175,236,1,
2400 1,175,122,175,175,175,235,1,
2401 1,175,123,175,175,175,234,1,
2402 1,175,124,175,175,175,233,1,
2403 1,175,125,175,175,175,232,1,
2404 1,4,29,29,181,126,181,181,180,181,180,30,180,29,1,
2405 96,96,127,230,15,
2406 100,100,100,1,100,100,183,182,128,183,183,182,183,1,
2407 96,96,129,224,15,
2408 223,223,223,223,47,130,184,
2409 4,5,5,23,131,185,219,6,5,
2410 289,132,
2411 288,133,
2412 186,186,134,186,
2413 187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,
2414 187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,
2415 187,135,187,
2416 190,190,190,190,190,190,190,190,190,40,190,190,190,190,190,190,190,190,190,
2417 190,190,41,190,190,190,190,190,190,190,190,190,136,189,188,190,190,
2418 191,137,
2419 197,197,138,
2420 145,145,146,145,139,192,143,
2421 199,199,201,
2422 198,198,200,
2423 207,207,180,
2424 206,206,206,206,179,
2425 205,205,205,205,205,139,138,196,195,194,193,192,191,190,189,188,187,186,193,
2426 205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,
2427 205,205,205,205,205,144,205,209,185,211,205,141,140,
2428 70,70,70,70,70,70,70,47,52,145,69,100,61,
2429 194,195,102,69,146,259,196,55,
2430 197,102,60,196,55,
2431 102,59,196,58,
2432 198,76,149,257,
2433 1,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,150,2,2,256,2,1,
2434 145,145,146,145,151,199,143,
2435 141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,
2436 141,141,141,141,141,141,141,152,200,
2437 140,140,140,134,
2438 1,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,154,2,2,129,2,1,
2439 1,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,155,2,2,127,2,1,
2440 202,201,156,128,
2441 203,85,86,157,163,164,167,
2442 204,204,1,204,204,204,204,4,29,29,31,204,204,158,31,31,204,204,31,204,30,
2443 204,29,1,
2444 205,205,205,1,205,205,205,205,205,4,29,29,31,205,205,205,205,205,159,31,31,
2445 205,205,31,205,30,205,29,1,
2446 1,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,160,2,2,9,2,1,
2447 1,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,161,2,2,262,2,1,
2448 1,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,162,2,2,261,2,1,
2449 130,130,96,96,130,130,130,88,90,89,85,86,13,163,91,133,132,93,166,15,92,92,
2450 165,87,132,206,206,206,206,
2451 130,130,96,96,130,130,130,88,90,89,85,86,13,164,91,133,132,93,166,15,92,92,
2452 165,87,132,207,207,207,207,
2453 212,212,212,212,166,212,212,212,212,212,212,212,212,212,165,68,
2454 208,1,208,4,29,29,31,166,31,31,208,208,31,208,30,208,29,1,
2455 209,167,
2456 96,96,168,82,15,
2457 203,169,90,
2458 3,1,3,2,3,170,2,2,88,2,1,
2459 1,3,3,3,2,3,3,3,3,3,3,171,2,2,86,2,1,
2460 231,1,210,231,2,172,2,2,1,
2461 1,211,2,173,2,2,1,
2462 1,212,2,174,2,2,1,
2463 1,2,80,175,2,213,2,1,
2464 130,130,96,1,182,96,130,130,130,88,2,90,89,85,86,13,79,80,176,2,83,82,91,
2465 133,132,93,166,15,2,92,92,165,87,132,240,96,240,94,94,94,94,84,81,1,
2466 76,177,249,
2467 96,96,247,214,15,177,
2468 130,130,96,96,130,130,130,88,90,89,247,85,86,13,179,91,133,132,93,166,15,92,
2469 92,165,87,132,215,94,94,94,94,
2470 80,180,216,
2471 99,99,99,1,99,99,4,29,29,2,105,181,2,2,106,30,106,29,1,
2472 47,182,217,
2473 101,101,101,1,101,101,2,4,2,2,1,
2474 130,130,96,182,96,130,130,130,35,85,86,184,133,132,36,225,36,15,228,87,132,
2475 226,81,
2476 96,1,114,115,116,117,120,121,122,123,124,125,113,96,4,120,12,12,119,126,90,
2477 24,185,119,129,130,15,128,119,11,12,119,118,222,222,127,119,1,
2478 287,186,
2479 283,283,283,283,283,1,283,283,283,40,283,283,283,283,4,283,283,283,283,283,
2480 283,283,283,283,283,283,41,283,285,283,283,283,283,283,135,283,283,283,
2481 187,283,134,133,132,283,1,
2482 298,188,
2483 297,189,
2484 293,293,293,293,293,1,293,293,293,293,40,293,293,293,293,293,294,293,293,
2485 293,291,293,293,293,41,293,293,293,293,293,293,293,293,293,190,294,294,
2486 189,188,293,1,
2487 1,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,191,2,2,267,2,1,
2488 202,202,145,145,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,
2489 202,202,202,146,145,202,202,202,202,202,202,202,202,202,202,202,202,202,
2490 202,202,202,202,202,202,202,202,202,192,144,
2491 1,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,193,2,2,178,2,1,
2492 1,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,194,2,2,265,2,1,
2493 1,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,195,2,2,260,2,1,
2494 130,130,96,182,96,130,130,130,88,90,89,85,86,13,79,80,77,196,78,83,82,91,
2495 133,132,93,166,56,145,98,97,15,92,92,165,87,132,98,148,96,98,94,94,94,
2496 94,84,81,
2497 1,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,197,2,2,264,2,1,
2498 1,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,198,2,2,258,2,1,
2499 145,145,138,138,138,138,138,138,138,138,138,138,146,145,138,138,138,138,138,
2500 138,138,138,138,138,138,138,138,138,199,144,
2501 142,135,135,135,135,135,135,135,135,135,135,142,135,135,135,135,135,135,135,
2502 135,135,135,135,135,135,135,200,
2503 158,158,158,158,158,158,158,139,138,196,195,194,193,192,191,190,189,188,187,
2504 186,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,
2505 158,158,158,158,158,158,158,158,201,218,218,218,218,218,141,140,
2506 1,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,202,2,2,20,2,1,
2507 1,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,203,2,2,19,2,1,
2508 130,130,130,130,130,88,85,86,204,133,132,169,169,87,132,
2509 130,130,96,96,130,130,130,88,90,89,85,86,13,205,91,133,132,93,166,15,92,92,
2510 165,87,132,155,155,155,
2511 153,153,153,153,153,153,153,159,153,153,153,153,153,153,153,153,153,153,153,
2512 153,153,206,
2513 152,152,152,152,152,152,152,159,152,152,152,152,152,152,152,152,152,152,152,
2514 152,152,207,
2515 214,214,208,213,219,
2516 1,3,3,3,3,3,3,3,2,3,3,3,3,209,2,2,72,2,1,
2517 1,220,210,220,220,220,1,
2518 1,221,211,221,221,221,1,
2519 1,175,212,175,175,175,242,1,
2520 130,130,96,182,96,130,130,130,88,90,89,85,86,13,79,80,213,83,82,91,133,132,
2521 93,166,15,92,92,165,87,132,253,96,253,94,94,94,94,84,81,222,
2522 173,173,173,173,47,173,214,223,
2523 251,251,251,251,85,86,251,215,163,164,
2524 96,96,216,214,15,176,
2525 182,217,227,81,
2526 202,218,168,
2527 215,215,215,1,3,3,3,3,215,215,3,3,3,2,3,3,3,3,3,3,219,2,2,216,2,1,
2528 1,2,80,220,2,224,2,1,
2529 244,1,244,2,221,2,2,225,1,
2530 4,29,29,177,52,222,226,177,30,177,29,252,177,
2531 130,130,130,130,130,88,227,85,86,223,133,132,174,174,175,87,132,
2532 130,130,96,96,130,130,130,88,90,89,85,86,13,224,91,133,132,93,166,15,92,92,
2533 165,87,132,228,94,94,94,94,
2534 245,245,245,1,245,245,229,225,229,229,229,1,
2535 130,130,96,182,96,130,130,130,88,90,89,247,85,86,13,79,80,226,83,82,91,133,
2536 132,93,166,15,92,92,165,87,132,254,96,254,94,94,94,94,84,81,
2537 158,158,158,158,158,158,158,139,138,196,195,194,193,192,191,190,189,188,187,
2538 186,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,
2539 158,158,158,158,158,158,158,158,227,230,230,230,230,230,141,140,
2540 250,250,250,250,85,86,250,228,163,164,
2541 244,1,244,2,229,2,2,231,1,
2542 202,230,128,
2543 245,245,245,245,245,243,243,243,243,231,
2544
2545 };
2546
2547
2548 static const unsigned short ag_sbt[] = {
2549 0, 18, 59, 65, 79, 118, 120, 124, 157, 181, 216, 218, 222, 224,
2550 255, 297, 338, 340, 348, 376, 419, 429, 436, 444, 452, 459, 466, 490,
2551 492, 494, 496, 501, 551, 553, 593, 604, 610, 625, 627, 651, 654, 692,
2552 730, 732, 734, 738, 778, 781, 832, 873, 887, 895, 903, 937, 943, 974,
2553 1029,1048,1074,1082,1090,1097,1107,1113,1123,1134,1142,1152,1170,1198,
2554 1220,1258,1293,1331,1366,1368,1413,1435,1483,1520,1553,1590,1647,1694,
2555 1749,1765,1794,1823,1832,1864,1917,1946,1976,1999,2027,2029,2042,2065,
2556 2108,2124,2135,2172,2176,2209,2255,2259,2265,2270,2280,2299,2304,2314,
2557 2322,2325,2332,2339,2346,2354,2361,2374,2387,2395,2403,2411,2419,2427,
2558 2435,2450,2455,2469,2474,2481,2490,2492,2494,2498,2538,2574,2576,2579,
2559 2586,2589,2592,2595,2600,2650,2663,2671,2676,2680,2684,2706,2713,2741,
2560 2745,2775,2805,2809,2816,2840,2869,2891,2913,2935,2964,2993,3009,3027,
2561 3029,3034,3037,3048,3065,3074,3081,3088,3096,3140,3143,3149,3180,3183,
2562 3202,3205,3216,3239,3277,3279,3324,3326,3328,3369,3391,3439,3462,3484,
2563 3506,3552,3574,3596,3626,3653,3706,3735,3765,3780,3808,3830,3852,3857,
2564 3876,3883,3890,3898,3938,3946,3956,3962,3966,3969,3995,4003,4012,4025,
2565 4042,4072,4084,4124,4177,4187,4196,4199,4209
2566 };
2567
2568
2569 static const unsigned short ag_sbe[] = {
2570 11, 56, 61, 74, 115, 119, 122, 150, 164, 215, 217, 220, 223, 244,
2571 292, 332, 339, 343, 369, 411, 427, 431, 442, 449, 455, 462, 473, 491,
2572 493, 495, 498, 543, 552, 590, 600, 608, 621, 626, 646, 652, 688, 726,
2573 731, 733, 736, 776, 779, 821, 849, 881, 894, 901, 926, 939, 968, 997,
2574 1041,1062,1078,1086,1092,1101,1111,1115,1128,1137,1151,1159,1186,1214,
2575 1256,1291,1329,1364,1367,1406,1429,1472,1515,1542,1579,1635,1664,1715,
2576 1764,1783,1812,1828,1863,1909,1935,1959,1998,2012,2028,2038,2061,2082,
2577 2122,2131,2167,2173,2198,2226,2256,2261,2267,2274,2293,2301,2306,2316,
2578 2324,2327,2334,2341,2348,2356,2366,2379,2389,2397,2405,2413,2421,2429,
2579 2440,2452,2463,2471,2479,2485,2491,2493,2496,2536,2569,2575,2578,2583,
2580 2588,2591,2594,2599,2642,2659,2667,2673,2677,2682,2700,2710,2739,2744,
2581 2769,2799,2807,2812,2829,2858,2885,2907,2929,2948,2977,3007,3016,3028,
2582 3031,3035,3042,3059,3070,3077,3084,3091,3114,3141,3145,3163,3181,3194,
2583 3203,3212,3227,3261,3278,3317,3325,3327,3362,3385,3437,3456,3478,3500,
2584 3523,3568,3590,3624,3652,3698,3729,3759,3773,3793,3829,3851,3854,3870,
2585 3878,3885,3892,3914,3944,3953,3958,3963,3967,3989,3998,4007,4017,4034,
2586 4055,4079,4101,4169,4184,4191,4197,4208,4209
2587 };
2588
2589
2590 static const unsigned char ag_fl[] = {
2591 1,1,2,0,1,2,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,2,0,1,0,2,4,2,2,1,
2592 1,1,2,3,1,2,3,2,1,1,1,1,2,1,3,1,3,4,2,1,2,2,1,2,1,1,2,1,1,2,2,2,2,3,2,
2593 0,2,4,1,2,0,1,3,1,0,4,0,5,1,1,2,4,2,4,1,3,2,1,2,1,2,1,2,3,3,2,3,2,1,1,
2594 1,2,1,2,1,0,1,2,3,1,2,3,3,2,2,2,1,2,0,1,2,1,3,3,3,0,1,1,1,1,2,1,1,2,1,
2595 2,0,2,1,2,1,1,1,1,1,1,1,3,3,1,4,1,2,1,1,1,1,1,1,1,1,1,3,5,4,3,3,3,1,3,
2596 3,4,3,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,2,1,1,2,2,2,1,2,
2597 1,2,0,3,1,2,2,3,0,2,3,1,3,1,2,3,3,4,3,1,2,2,2,2,2,2,2,2,2,2,3,2,4,7,1,
2598 2,0,1,1,2,6,3,4,1,3,1,3,3,4,3,4,3,3,2,4,4,2,4,3,2,1,2,0,1,2,0,2,1,1,3,
2599 2,2,0,2,1,3,1,3,2,2,0,2,1,2,2,1,1,2,2,2,1,2,2,1,1,2,1,2,0,1,2,1,1,2,1,
2600 2,0,1,2,1
2601 };
2602
2603 static const unsigned char ag_ptt[] = {
2604 0, 4, 4, 5, 5, 1, 9, 9, 6, 10, 12, 14, 16, 18, 20, 22, 24, 26,
2605 28, 30, 32, 34, 36, 40, 40, 42, 42, 44, 44, 45, 45, 38, 41, 41, 43, 43,
2606 47, 47, 47, 52, 52, 47, 50, 48, 48, 48, 49, 49, 57, 57, 59, 59, 58, 58,
2607 64, 64, 66, 67, 67, 69, 69, 65, 53, 53, 53, 51, 71, 70, 70, 74, 68, 68,
2608 68, 62, 62, 79, 79, 62, 77, 82, 77, 83, 77, 80, 80, 80, 78, 86, 86, 89,
2609 85, 90, 92, 92, 84, 84, 93, 93, 93, 96, 96, 96, 60, 3, 3, 8, 8, 8,
2610 100,100,104,104,102,102,106,106,106, 39, 39, 39, 39,110,110,111,111,101,
2611 112,112,116,113,120,120,118,118,119,119,126,126,119,121,121,123,123,127,
2612 127,131,131, 72, 72,133,133,135,135,135,137,137,138,138,117,117,117,117,
2613 117,140,140,140,140,140,146,146, 54, 54, 54,148,148,148,149,149,150,152,
2614 152,152,151,157,157,157,142,142,142,142,142,142,142,142,142,142,142,170,
2615 172,144,143,143,145,154,154,154,154,154,155,155,156,156, 73, 73,178,178,
2616 177, 56,181,181,179,180,180,182,182,182,182,182,182,182,182,184,183,183,
2617 183,183,183,183,183,183,183,183,183,183,201,201,202,202,202,194,193,193,
2618 187,203,203,136,136,136,136,136,136,136,136,136,136,136,134,134, 55,212,
2619 213,213,214,214,210,211,211,215,215,215,215,215,216,216,220,220,220,220,
2620 220,220,222, 75,223,223,223,224,224,224,224, 99,227,227, 99,233,233,233,
2621 234,234,235,235,219,236,236,236,237,237,238,238,218,232
2622 };
2623
2624 static const unsigned char *ag_valid(int ag_k) {
2625 const unsigned char *ag_tp = &ag_tstt[ag_sbt[(PCB).sn+1]];
2626 while (*--ag_tp != (unsigned char) ag_k) if (*ag_tp == 0) return NULL;
2627 return ag_tp;
2628 }
2629
2630 int pgg_change_reduction(pgg_token_type ag_k) {
2631 if (!ag_valid(ag_k)) return 0;
2632 (PCB).reduction_token = ag_k;
2633 return 1;
2634 }
2635
2636 static void ag_default(const int *ag_tp) {
2637 (PCB).ag_dsn = (PCB).sn;
2638 (PCB).ag_dtl = ag_tp;
2639 while (!ag_valid((pgg_token_type) *ag_tp)) ag_tp++;
2640 (PCB).reduction_token = (pgg_token_type) *ag_tp;
2641 }
2642
2643
2644
2645 static void ag_ra(void)
2646 {
2647 switch(ag_rpx[(PCB).ag_ap]) {
2648 case 1: ag_rp_1(); break;
2649 case 2: ag_rp_2(); break;
2650 case 3: ag_rp_3(V(0,(int *))); break;
2651 case 4: ag_rp_4(); break;
2652 case 5: ag_rp_5(V(0,(int *))); break;
2653 case 6: ag_rp_6(); break;
2654 case 7: V(0,(int *)) = ag_rp_7(V(0,(int *))); break;
2655 case 8: V(0,(int *)) = ag_rp_8(V(0,(int *))); break;
2656 case 9: V(0,(int *)) = ag_rp_9(); break;
2657 case 10: V(0,(int *)) = ag_rp_10(V(0,(int *))); break;
2658 case 11: ag_rp_11(V(0,(int *))); break;
2659 case 12: ag_rp_12(V(2,(int *))); break;
2660 case 13: V(0,(int *)) = ag_rp_13(); break;
2661 case 14: V(0,(int *)) = ag_rp_14(); break;
2662 case 15: V(0,(int *)) = ag_rp_15(); break;
2663 case 16: ag_rp_16(V(0,(int *))); break;
2664 case 17: ag_rp_17(V(1,(int *))); break;
2665 case 18: ag_rp_18(V(0,(int *))); break;
2666 case 19: V(0,(int *)) = ag_rp_19(V(1,(int *))); break;
2667 case 20: ag_rp_20(V(0,(int *))); break;
2668 case 21: ag_rp_21(V(0,(int *))); break;
2669 case 22: ag_rp_22(V(1,(int *))); break;
2670 case 23: V(0,(int *)) = ag_rp_23(V(1,(int *))); break;
2671 case 24: ag_rp_24(V(0,(int *)), V(1,(int *))); break;
2672 case 25: ag_rp_25(V(1,(int *)), V(2,(int *))); break;
2673 case 26: V(0,(int *)) = ag_rp_26(); break;
2674 case 27: V(0,(int *)) = ag_rp_27(); break;
2675 case 28: V(0,(int *)) = ag_rp_28(); break;
2676 case 29: ag_rp_29(); break;
2677 case 30: ag_rp_30(); break;
2678 case 31: ag_rp_31(); break;
2679 case 32: ag_rp_32(); break;
2680 case 33: ag_rp_33(); break;
2681 case 34: ag_rp_34(); break;
2682 case 35: ag_rp_35(); break;
2683 case 36: ag_rp_36(); break;
2684 case 37: ag_rp_37(); break;
2685 case 38: ag_rp_38(); break;
2686 case 39: ag_rp_39(); break;
2687 case 40: ag_rp_40(); break;
2688 case 41: ag_rp_41(); break;
2689 case 42: ag_rp_42(); break;
2690 case 43: ag_rp_43(V(0,(int *))); break;
2691 case 44: ag_rp_44(V(1,(int *))); break;
2692 case 45: ag_rp_45(V(2,(int *))); break;
2693 case 46: ag_rp_46(V(2,(int *))); break;
2694 case 47: ag_rp_47(V(1,(int *))); break;
2695 case 48: ag_rp_48(V(2,(int *))); break;
2696 case 49: V(0,(int *)) = ag_rp_49(V(1,(int *))); break;
2697 case 50: V(0,(int *)) = ag_rp_50(V(1,(int *))); break;
2698 case 51: V(0,(int *)) = ag_rp_51(V(0,(int *)), V(1,(int *))); break;
2699 case 52: V(0,(int *)) = ag_rp_52(); break;
2700 case 53: V(0,(int *)) = ag_rp_53(); break;
2701 case 54: V(0,(int *)) = ag_rp_54(V(1,(int *))); break;
2702 case 55: V(0,(int *)) = ag_rp_55(V(1,(int *))); break;
2703 case 56: V(0,(int *)) = ag_rp_56(V(0,(int *))); break;
2704 case 57: V(0,(int *)) = ag_rp_57(V(0,(int *)), V(1,(int *))); break;
2705 case 58: V(0,(int *)) = ag_rp_58(); break;
2706 case 59: V(0,(int *)) = ag_rp_59(V(0,(int *)), V(1,(int *))); break;
2707 case 60: V(0,(int *)) = ag_rp_60(V(0,(int *))); break;
2708 case 61: V(0,(int *)) = ag_rp_61(V(0,(int *)), V(1,(int *))); break;
2709 case 62: V(0,(int *)) = ag_rp_62(V(0,(int *))); break;
2710 case 63: V(0,(int *)) = ag_rp_63(V(0,(int *))); break;
2711 case 64: V(0,(int *)) = ag_rp_64(V(0,(int *))); break;
2712 case 65: V(0,(int *)) = ag_rp_65(V(0,(CharSetExpression * *))); break;
2713 case 66: V(0,(CharSetExpression * *)) = ag_rp_66(V(0,(CharSetExpression * *)), V(2,(CharSetExpression * *))); break;
2714 case 67: V(0,(CharSetExpression * *)) = ag_rp_67(V(0,(CharSetExpression * *)), V(2,(CharSetExpression * *))); break;
2715 case 68: V(0,(CharSetExpression * *)) = ag_rp_68(V(0,(CharSetExpression * *)), V(3,(CharSetExpression * *))); break;
2716 case 69: V(0,(CharSetExpression * *)) = ag_rp_69(V(1,(CharSetExpression * *))); break;
2717 case 70: V(0,(int *)) = ag_rp_70(V(0,(int *))); break;
2718 case 71: V(0,(CharSetExpression * *)) = ag_rp_71(V(0,(int *))); break;
2719 case 72: V(0,(CharSetExpression * *)) = ag_rp_72(V(0,(int *))); break;
2720 case 73: V(0,(CharSetExpression * *)) = ag_rp_73(); break;
2721 case 74: V(0,(CharSetExpression * *)) = ag_rp_74(V(1,(CharSetExpression * *))); break;
2722 case 75: V(0,(CharSetExpression * *)) = ag_rp_75(V(1,(int *)), V(3,(int *))); break;
2723 case 76: V(0,(CharSetExpression * *)) = ag_rp_76(V(0,(int *)), V(3,(int *))); break;
2724 case 77: ag_rp_77(V(2,(CharSetExpression * *))); break;
2725 case 78: ag_rp_78(V(2,(int *))); break;
2726 case 79: ag_rp_79(V(2,(int *))); break;
2727 case 80: ag_rp_80(); break;
2728 case 81: ag_rp_81(V(2,(int *))); break;
2729 case 82: ag_rp_82(V(2,(int *))); break;
2730 case 83: ag_rp_83(); break;
2731 case 84: V(0,(int *)) = ag_rp_84(V(0,(int *))); break;
2732 case 85: V(0,(int *)) = ag_rp_85(); break;
2733 case 86: V(0,(int *)) = ag_rp_86(); break;
2734 case 87: V(0,(int *)) = ag_rp_87(); break;
2735 case 88: V(0,(int *)) = ag_rp_88(); break;
2736 case 89: V(0,(int *)) = ag_rp_89(); break;
2737 case 90: V(0,(int *)) = ag_rp_90(); break;
2738 case 91: V(0,(int *)) = ag_rp_91(); break;
2739 case 92: V(0,(int *)) = ag_rp_92(); break;
2740 case 93: V(0,(int *)) = ag_rp_93(); break;
2741 case 94: V(0,(int *)) = ag_rp_94(); break;
2742 case 95: V(0,(int *)) = ag_rp_95(); break;
2743 case 96: V(0,(int *)) = ag_rp_96(V(1,(int *))); break;
2744 case 97: V(0,(int *)) = ag_rp_97(V(0,(int *)), V(1,(int *))); break;
2745 case 98: V(0,(int *)) = ag_rp_98(V(0,(int *)), V(1,(int *))); break;
2746 case 99: V(0,(int *)) = ag_rp_99(V(1,(int *))); break;
2747 case 100: ag_rp_100(V(0,(int *))); break;
2748 case 101: ag_rp_101(V(0,(int *))); break;
2749 case 102: ag_rp_102(V(1,(int *))); break;
2750 case 103: ag_rp_103(V(1,(int *))); break;
2751 case 104: ag_rp_104(V(1,(int *))); break;
2752 case 105: ag_rp_105(V(0,(int *))); break;
2753 case 106: ag_rp_106(V(1,(int *))); break;
2754 case 107: ag_rp_107(V(0,(int *))); break;
2755 case 108: ag_rp_108(V(1,(int *))); break;
2756 case 109: V(0,(int *)) = ag_rp_109(); break;
2757 case 110: V(0,(int *)) = ag_rp_110(); break;
2758 case 111: ag_rp_111(V(0,(int *))); break;
2759 case 112: ag_rp_112(V(1,(int *))); break;
2760 case 113: ag_rp_113(); break;
2761 case 114: ag_rp_114(); break;
2762 case 115: ag_rp_115(); break;
2763 case 116: ag_rp_116(); break;
2764 case 117: ag_rp_117(); break;
2765 case 118: ag_rp_118(V(2,(int *))); break;
2766 case 119: ag_rp_119(); break;
2767 case 120: ag_rp_120(); break;
2768 case 121: ag_rp_121(); break;
2769 case 122: ag_rp_122(); break;
2770 case 123: ag_rp_123(); break;
2771 case 124: ag_rp_124(); break;
2772 case 125: ag_rp_125(); break;
2773 case 126: ag_rp_126(); break;
2774 case 127: ag_rp_127(V(2,(int *))); break;
2775 case 128: ag_rp_128(); break;
2776 case 129: ag_rp_129(); break;
2777 case 130: ag_rp_130(V(4,(int *)), V(6,(int *))); break;
2778 case 131: V(0,(int *)) = ag_rp_131(); break;
2779 case 132: ag_rp_132(V(5,(CharSetExpression * *))); break;
2780 case 133: ag_rp_133(V(2,(CharSetExpression * *))); break;
2781 case 134: ag_rp_134(V(0,(int *))); break;
2782 case 135: ag_rp_135(V(2,(int *))); break;
2783 case 136: V(0,(int *)) = ag_rp_136(); break;
2784 case 137: V(0,(int *)) = ag_rp_137(); break;
2785 case 138: V(0,(int *)) = ag_rp_138(); break;
2786 case 139: V(0,(int *)) = ag_rp_139(); break;
2787 case 140: V(0,(int *)) = ag_rp_140(); break;
2788 case 141: V(0,(int *)) = ag_rp_141(); break;
2789 case 142: V(0,(int *)) = ag_rp_142(V(0,(CharSetExpression * *))); break;
2790 case 143: V(0,(int *)) = ag_rp_143(V(0,(CharSetExpression * *))); break;
2791 case 144: V(0,(int *)) = ag_rp_144(V(0,(CharSetExpression * *))); break;
2792 case 145: V(0,(int *)) = ag_rp_145(); break;
2793 case 146: V(0,(int *)) = ag_rp_146(); break;
2794 case 147: V(0,(int *)) = ag_rp_147(); break;
2795 case 148: V(0,(int *)) = ag_rp_148(); break;
2796 case 149: ag_rp_149(); break;
2797 case 150: ag_rp_150(); break;
2798 case 151: ag_rp_151(); break;
2799 case 152: ag_rp_152(); break;
2800 case 153: ag_rp_153(); break;
2801 case 154: ag_default(&ag_rtt[0]); ag_rp_154(); break;
2802 }
2803 (PCB).la_ptr = (PCB).pointer;
2804 }
2805
2806
2807 static const unsigned char ag_ctn[] = {
2808 0,0, 99,1, 0,0, 0,0,101,1, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
2809 0,0, 0,0,210,1, 60,1, 58,1, 58,1, 56,1, 55,1, 0,0, 49,1, 57,1, 47,1,
2810 0,0, 0,0, 0,0, 0,0, 0,0, 0,0,100,1, 0,0, 0,0, 0,0, 0,0, 77,1,
2811 0,0, 58,2,179,1, 56,2,219,1,218,1,215,1,215,1,215,1, 0,0, 55,2, 0,0,
2812 54,2, 0,0, 0,0, 57,1, 0,0, 57,2, 50,1, 50,1, 0,0, 0,0, 0,0, 0,0,
2813 0,0, 77,2, 77,2, 0,0, 86,1, 0,0, 0,0, 58,3,179,2, 0,0, 0,0, 0,0,
2814 0,0, 0,0,215,2, 0,0, 0,0,134,1,134,1,136,1, 0,0,150,1,136,1,136,1,
2815 136,1, 0,0, 0,0,113,1,112,1, 0,0, 0,0, 0,0,146,1, 0,0, 0,0,136,1,
2816 136,1, 70,1, 70,1, 0,0, 68,1, 0,0, 0,0, 0,0, 0,0, 0,0, 77,3, 77,3,
2817 0,0, 0,0, 0,0, 0,0, 0,0,182,1,183,1,183,1,183,1,183,1,183,1,183,1,
2818 183,1,183,1,183,1,183,1,183,1,183,1,182,1,182,1,182,1,182,1,182,1, 0,0,
2819 0,0, 0,0, 0,0, 0,0, 75,1,134,2,143,1,145,1, 0,0,143,1,152,1,152,1,
2820 152,1, 65,1, 0,0, 69,1, 69,1,136,2,136,2, 0,0, 0,0,121,1,113,2,112,2,
2821 0,0, 0,0,146,2, 0,0, 0,0,136,2,136,2, 0,0, 0,0, 70,2, 73,1, 68,2,
2822 77,4, 0,0, 86,3, 0,0, 0,0, 0,0, 0,0,187,1, 0,0, 0,0,149,2,183,2,
2823 149,2, 0,0,182,2, 0,0,182,2, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0,134,3,
2824 127,1,150,3,136,3,136,3, 0,0,136,3,136,3,127,1,123,1,146,3, 0,0, 0,0,
2825 146,3, 0,0, 0,0, 0,0, 73,2, 68,3,183,3,183,3,183,3,187,2,148,1, 0,0,
2826 149,3,182,3,146,4, 0,0, 0,0, 0,0,203,1,148,2,183,5,201,1,203,2,116,1,
2827 0,0, 0,0,116,2,201,1
2828 };
2829
2830 #ifndef MISSING_FORMAT
2831 #define MISSING_FORMAT "Missing %s"
2832 #endif
2833 #ifndef UNEXPECTED_FORMAT
2834 #define UNEXPECTED_FORMAT "Unexpected %s"
2835 #endif
2836 #ifndef UNNAMED_TOKEN
2837 #define UNNAMED_TOKEN "input"
2838 #endif
2839
2840
2841 static void ag_diagnose(void) {
2842 int ag_snd = (PCB).sn;
2843 int ag_k = ag_sbt[ag_snd];
2844
2845 if (*TOKEN_NAMES[ag_tstt[ag_k]] && ag_astt[ag_k + 1] == ag_action_8) {
2846 sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
2847 }
2848 else if (ag_astt[ag_sbe[(PCB).sn]] == ag_action_8
2849 && (ag_k = (int) ag_sbe[(PCB).sn] + 1) == (int) ag_sbt[(PCB).sn+1] - 1
2850 && *TOKEN_NAMES[ag_tstt[ag_k]]) {
2851 sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
2852 }
2853 else if ((PCB).token_number && *TOKEN_NAMES[(PCB).token_number]) {
2854 sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, TOKEN_NAMES[(PCB).token_number]);
2855 }
2856 else if (isprint(INPUT_CODE((*(PCB).pointer))) && INPUT_CODE((*(PCB).pointer)) != '\\') {
2857 char buf[20];
2858 sprintf(buf, "\'%c\'", (char) INPUT_CODE((*(PCB).pointer)));
2859 sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, buf);
2860 }
2861 else sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, UNNAMED_TOKEN);
2862 (PCB).error_message = (PCB).ag_msg;
2863
2864
2865 {
2866 int ag_sx, ag_t;
2867
2868 ag_sx = (PCB).ssx;
2869 (PCB).ss[ag_sx] = (PCB).sn;
2870 do {
2871 while (ag_sx && ag_ctn[2*(ag_snd = (PCB).ss[ag_sx])] == 0) ag_sx--;
2872 if (ag_sx) {
2873 ag_t = ag_ctn[2*ag_snd];
2874 ag_sx -= ag_ctn[2*ag_snd +1];
2875 ag_snd = (PCB).ss[ag_sx];
2876 }
2877 else {
2878 ag_snd = 0;
2879 ag_t = ag_ptt[0];
2880 }
2881 } while (ag_sx && *TOKEN_NAMES[ag_t]==0);
2882 if (*TOKEN_NAMES[ag_t] == 0) ag_t = 0;
2883 (PCB).error_frame_ssx = ag_sx;
2884 (PCB).error_frame_token = (pgg_token_type) ag_t;
2885 }
2886
2887
2888 }
2889 static int ag_action_1_r_proc(void);
2890 static int ag_action_2_r_proc(void);
2891 static int ag_action_3_r_proc(void);
2892 static int ag_action_4_r_proc(void);
2893 static int ag_action_1_s_proc(void);
2894 static int ag_action_3_s_proc(void);
2895 static int ag_action_1_proc(void);
2896 static int ag_action_2_proc(void);
2897 static int ag_action_3_proc(void);
2898 static int ag_action_4_proc(void);
2899 static int ag_action_5_proc(void);
2900 static int ag_action_6_proc(void);
2901 static int ag_action_7_proc(void);
2902 static int ag_action_8_proc(void);
2903 static int ag_action_9_proc(void);
2904 static int ag_action_10_proc(void);
2905 static int ag_action_11_proc(void);
2906 static int ag_action_8_proc(void);
2907
2908
2909 static int (*const ag_r_procs_scan[])(void) = {
2910 ag_action_1_r_proc,
2911 ag_action_2_r_proc,
2912 ag_action_3_r_proc,
2913 ag_action_4_r_proc
2914 };
2915
2916 static int (*const ag_s_procs_scan[])(void) = {
2917 ag_action_1_s_proc,
2918 ag_action_2_r_proc,
2919 ag_action_3_s_proc,
2920 ag_action_4_r_proc
2921 };
2922
2923 static int (*const ag_gt_procs_scan[])(void) = {
2924 ag_action_1_proc,
2925 ag_action_2_proc,
2926 ag_action_3_proc,
2927 ag_action_4_proc,
2928 ag_action_5_proc,
2929 ag_action_6_proc,
2930 ag_action_7_proc,
2931 ag_action_8_proc,
2932 ag_action_9_proc,
2933 ag_action_10_proc,
2934 ag_action_11_proc,
2935 ag_action_8_proc
2936 };
2937
2938
2939 static int ag_action_1_er_proc(void);
2940 static int ag_action_2_er_proc(void);
2941 static int ag_action_3_er_proc(void);
2942 static int ag_action_4_er_proc(void);
2943
2944 static int (*const ag_er_procs_scan[])(void) = {
2945 ag_action_1_er_proc,
2946 ag_action_2_er_proc,
2947 ag_action_3_er_proc,
2948 ag_action_4_er_proc
2949 };
2950
2951
2952 static void ag_error_resynch(void) {
2953 int ag_k;
2954 int ag_ssx = (PCB).ssx;
2955
2956 ag_diagnose();
2957 SYNTAX_ERROR;
2958 if ((PCB).exit_flag != AG_RUNNING_CODE) return;
2959 while (1) {
2960 ag_k = ag_sbt[(PCB).sn];
2961 while (ag_tstt[ag_k] != 63 && ag_tstt[ag_k]) ag_k++;
2962 if (ag_tstt[ag_k] || (PCB).ssx == 0) break;
2963 (PCB).sn = (PCB).ss[--(PCB).ssx];
2964 }
2965 if (ag_tstt[ag_k] == 0) {
2966 (PCB).sn = PCB.ss[(PCB).ssx = ag_ssx];
2967 (PCB).exit_flag = AG_SYNTAX_ERROR_CODE;
2968 return;
2969 }
2970 ag_k = ag_sbt[(PCB).sn];
2971 while (ag_tstt[ag_k] != 63 && ag_tstt[ag_k]) ag_k++;
2972 (PCB).ag_ap = ag_pstt[ag_k];
2973 (ag_er_procs_scan[ag_astt[ag_k]])();
2974 while (1) {
2975 ag_k = ag_sbt[(PCB).sn];
2976 while (ag_tstt[ag_k] != (unsigned char) (PCB).token_number && ag_tstt[ag_k])
2977 ag_k++;
2978 if (ag_tstt[ag_k] && ag_astt[ag_k] != ag_action_10) break;
2979 if ((PCB).token_number == 46)
2980 {(PCB).exit_flag = AG_SYNTAX_ERROR_CODE; return;}
2981 {(PCB).la_ptr = (PCB).pointer + 1; ag_track();}
2982 (PCB).token_number = (pgg_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
2983 (PCB).la_ptr++;
2984 if (ag_key_index[(PCB).sn]) {
2985 unsigned ag_k = ag_key_index[(PCB).sn];
2986 int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
2987 if (ag_ch <= 255) {
2988 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
2989 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
2990 }
2991 }
2992 }
2993 (PCB).la_ptr = (PCB).pointer;
2994 }
2995
2996
2997 static int ag_action_10_proc(void) {
2998 int ag_t = (PCB).token_number;
2999 (PCB).btsx = 0, (PCB).drt = -1;
3000 do {
3001 ag_track();
3002 (PCB).token_number = (pgg_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
3003 (PCB).la_ptr++;
3004 if (ag_key_index[(PCB).sn]) {
3005 unsigned ag_k = ag_key_index[(PCB).sn];
3006 int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
3007 if (ag_ch <= 255) {
3008 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
3009 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
3010 }
3011 }
3012 } while ((PCB).token_number == (pgg_token_type) ag_t);
3013 (PCB).la_ptr = (PCB).pointer;
3014 return 1;
3015 }
3016
3017 static int ag_action_11_proc(void) {
3018 int ag_t = (PCB).token_number;
3019
3020 (PCB).btsx = 0, (PCB).drt = -1;
3021 do {
3022 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
3023 (PCB).ssx--;
3024 ag_track();
3025 ag_ra();
3026 if ((PCB).exit_flag != AG_RUNNING_CODE) return 0;
3027 (PCB).ssx++;
3028 (PCB).token_number = (pgg_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
3029 (PCB).la_ptr++;
3030 if (ag_key_index[(PCB).sn]) {
3031 unsigned ag_k = ag_key_index[(PCB).sn];
3032 int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
3033 if (ag_ch <= 255) {
3034 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
3035 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
3036 }
3037 }
3038 }
3039 while ((PCB).token_number == (pgg_token_type) ag_t);
3040 (PCB).la_ptr = (PCB).pointer;
3041 return 1;
3042 }
3043
3044 static int ag_action_3_r_proc(void) {
3045 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3046 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3047 (PCB).btsx = 0, (PCB).drt = -1;
3048 (PCB).reduction_token = (pgg_token_type) ag_ptt[(PCB).ag_ap];
3049 ag_ra();
3050 return (PCB).exit_flag == AG_RUNNING_CODE;
3051 }
3052
3053 static int ag_action_3_s_proc(void) {
3054 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3055 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3056 (PCB).btsx = 0, (PCB).drt = -1;
3057 (PCB).reduction_token = (pgg_token_type) ag_ptt[(PCB).ag_ap];
3058 ag_ra();
3059 return (PCB).exit_flag == AG_RUNNING_CODE;
3060 }
3061
3062 static int ag_action_4_r_proc(void) {
3063 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3064 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3065 (PCB).reduction_token = (pgg_token_type) ag_ptt[(PCB).ag_ap];
3066 return 1;
3067 }
3068
3069 static int ag_action_2_proc(void) {
3070 (PCB).btsx = 0, (PCB).drt = -1;
3071 if ((PCB).ssx >= 128) {
3072 (PCB).exit_flag = AG_STACK_ERROR_CODE;
3073 PARSER_STACK_OVERFLOW;
3074 }
3075 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
3076 GET_CONTEXT;
3077 (PCB).ss[(PCB).ssx] = (PCB).sn;
3078 (PCB).ssx++;
3079 (PCB).sn = (PCB).ag_ap;
3080 ag_track();
3081 return 0;
3082 }
3083
3084 static int ag_action_9_proc(void) {
3085 if ((PCB).drt == -1) {
3086 (PCB).drt=(PCB).token_number;
3087 (PCB).dssx=(PCB).ssx;
3088 (PCB).dsn=(PCB).sn;
3089 }
3090 ag_prot();
3091 (PCB).vs[(PCB).ssx] = ag_null_value;
3092 GET_CONTEXT;
3093 (PCB).ss[(PCB).ssx] = (PCB).sn;
3094 (PCB).ssx++;
3095 (PCB).sn = (PCB).ag_ap;
3096 (PCB).la_ptr = (PCB).pointer;
3097 return (PCB).exit_flag == AG_RUNNING_CODE;
3098 }
3099
3100 static int ag_action_2_r_proc(void) {
3101 (PCB).ssx++;
3102 (PCB).sn = (PCB).ag_ap;
3103 return 0;
3104 }
3105
3106 static int ag_action_7_proc(void) {
3107 --(PCB).ssx;
3108 (PCB).la_ptr = (PCB).pointer;
3109 (PCB).exit_flag = AG_SUCCESS_CODE;
3110 return 0;
3111 }
3112
3113 static int ag_action_1_proc(void) {
3114 ag_track();
3115 (PCB).exit_flag = AG_SUCCESS_CODE;
3116 return 0;
3117 }
3118
3119 static int ag_action_1_r_proc(void) {
3120 (PCB).exit_flag = AG_SUCCESS_CODE;
3121 return 0;
3122 }
3123
3124 static int ag_action_1_s_proc(void) {
3125 (PCB).exit_flag = AG_SUCCESS_CODE;
3126 return 0;
3127 }
3128
3129 static int ag_action_4_proc(void) {
3130 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3131 (PCB).reduction_token = (pgg_token_type) ag_ptt[(PCB).ag_ap];
3132 (PCB).btsx = 0, (PCB).drt = -1;
3133 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
3134 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3135 else GET_CONTEXT;
3136 (PCB).ss[(PCB).ssx] = (PCB).sn;
3137 ag_track();
3138 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3139 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
3140 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
3141 do {
3142 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3143 if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
3144 else ag_t2 = ag_tx;
3145 } while (ag_t1 < ag_t2);
3146 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
3147 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
3148 REDUCTION_TOKEN_ERROR; break;}
3149 (PCB).ag_ap = ag_pstt[ag_t1];
3150 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
3151 }
3152 return 0;
3153 }
3154
3155 static int ag_action_3_proc(void) {
3156 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3157 (PCB).btsx = 0, (PCB).drt = -1;
3158 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
3159 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3160 else GET_CONTEXT;
3161 (PCB).ss[(PCB).ssx] = (PCB).sn;
3162 ag_track();
3163 (PCB).reduction_token = (pgg_token_type) ag_ptt[(PCB).ag_ap];
3164 ag_ra();
3165 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3166 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
3167 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
3168 do {
3169 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3170 if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
3171 else ag_t2 = ag_tx;
3172 } while (ag_t1 < ag_t2);
3173 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
3174 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
3175 REDUCTION_TOKEN_ERROR; break;}
3176 (PCB).ag_ap = ag_pstt[ag_t1];
3177 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
3178 }
3179 return 0;
3180 }
3181
3182 static int ag_action_8_proc(void) {
3183 int ag_k = ag_sbt[(PCB).sn];
3184 while (ag_tstt[ag_k] != 63 && ag_tstt[ag_k]) ag_k++;
3185 if (ag_tstt[ag_k] == 0) ag_undo();
3186 (PCB).la_ptr = (PCB).pointer;
3187 ag_error_resynch();
3188 return (PCB).exit_flag == AG_RUNNING_CODE;
3189 }
3190
3191 static int ag_action_5_proc(void) {
3192 int ag_sd = ag_fl[(PCB).ag_ap];
3193 (PCB).btsx = 0, (PCB).drt = -1;
3194 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3195 else {
3196 GET_CONTEXT;
3197 (PCB).ss[(PCB).ssx] = (PCB).sn;
3198 }
3199 (PCB).la_ptr = (PCB).pointer;
3200 (PCB).reduction_token = (pgg_token_type) ag_ptt[(PCB).ag_ap];
3201 ag_ra();
3202 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3203 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
3204 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
3205 do {
3206 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3207 if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
3208 else ag_t2 = ag_tx;
3209 } while (ag_t1 < ag_t2);
3210 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
3211 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
3212 REDUCTION_TOKEN_ERROR; break;}
3213 (PCB).ag_ap = ag_pstt[ag_t1];
3214 if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
3215 }
3216 return (PCB).exit_flag == AG_RUNNING_CODE;
3217 }
3218
3219 static int ag_action_6_proc(void) {
3220 int ag_sd = ag_fl[(PCB).ag_ap];
3221 (PCB).reduction_token = (pgg_token_type) ag_ptt[(PCB).ag_ap];
3222 if ((PCB).drt == -1) {
3223 (PCB).drt=(PCB).token_number;
3224 (PCB).dssx=(PCB).ssx;
3225 (PCB).dsn=(PCB).sn;
3226 }
3227 if (ag_sd) {
3228 (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3229 }
3230 else {
3231 ag_prot();
3232 (PCB).vs[(PCB).ssx] = ag_null_value;
3233 GET_CONTEXT;
3234 (PCB).ss[(PCB).ssx] = (PCB).sn;
3235 }
3236 (PCB).la_ptr = (PCB).pointer;
3237 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3238 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
3239 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
3240 do {
3241 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3242 if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
3243 else ag_t2 = ag_tx;
3244 } while (ag_t1 < ag_t2);
3245 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
3246 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
3247 REDUCTION_TOKEN_ERROR; break;}
3248 (PCB).ag_ap = ag_pstt[ag_t1];
3249 if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
3250 }
3251 return (PCB).exit_flag == AG_RUNNING_CODE;
3252 }
3253
3254
3255 static int ag_action_2_er_proc(void) {
3256 (PCB).btsx = 0, (PCB).drt = -1;
3257 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
3258 (PCB).ssx++;
3259 (PCB).sn = (PCB).ag_ap;
3260 return 0;
3261 }
3262
3263 static int ag_action_1_er_proc(void) {
3264 (PCB).btsx = 0, (PCB).drt = -1;
3265 (PCB).exit_flag = AG_SUCCESS_CODE;
3266 return 0;
3267 }
3268
3269 static int ag_action_4_er_proc(void) {
3270 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3271 (PCB).btsx = 0, (PCB).drt = -1;
3272 (PCB).reduction_token = (pgg_token_type) ag_ptt[(PCB).ag_ap];
3273 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3274 else (PCB).ss[(PCB).ssx] = (PCB).sn;
3275 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3276 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
3277 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
3278 do {
3279 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3280 if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
3281 else ag_t2 = ag_tx;
3282 } while (ag_t1 < ag_t2);
3283 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
3284 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
3285 REDUCTION_TOKEN_ERROR; break;}
3286 (PCB).ag_ap = ag_pstt[ag_t1];
3287 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
3288 }
3289 return 0;
3290 }
3291
3292 static int ag_action_3_er_proc(void) {
3293 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3294 (PCB).btsx = 0, (PCB).drt = -1;
3295 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3296 else (PCB).ss[(PCB).ssx] = (PCB).sn;
3297 (PCB).reduction_token = (pgg_token_type) ag_ptt[(PCB).ag_ap];
3298 ag_ra();
3299 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3300 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
3301 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
3302 do {
3303 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3304 if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
3305 else ag_t2 = ag_tx;
3306 } while (ag_t1 < ag_t2);
3307 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
3308 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
3309 REDUCTION_TOKEN_ERROR; break;}
3310 (PCB).ag_ap = ag_pstt[ag_t1];
3311 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
3312 }
3313 return 0;
3314 }
3315
3316
3317 void init_pgg(void) {
3318 (PCB).la_ptr = (PCB).pointer;
3319 (PCB).ss[0] = (PCB).sn = (PCB).ssx = 0;
3320 (PCB).exit_flag = AG_RUNNING_CODE;
3321 (PCB).line = FIRST_LINE;
3322 (PCB).column = FIRST_COLUMN;
3323 (PCB).btsx = 0, (PCB).drt = -1;
3324 }
3325
3326 void pgg(void) {
3327 init_pgg();
3328 (PCB).exit_flag = AG_RUNNING_CODE;
3329 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3330 unsigned ag_t1 = ag_sbt[(PCB).sn];
3331 if (ag_tstt[ag_t1]) {
3332 unsigned ag_t2 = ag_sbe[(PCB).sn] - 1;
3333 (PCB).token_number = (pgg_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
3334 (PCB).la_ptr++;
3335 if (ag_key_index[(PCB).sn]) {
3336 unsigned ag_k = ag_key_index[(PCB).sn];
3337 int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
3338 if (ag_ch <= 255) {
3339 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
3340 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
3341 }
3342 }
3343 do {
3344 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3345 if (ag_tstt[ag_tx] > (unsigned char)(PCB).token_number)
3346 ag_t1 = ag_tx + 1;
3347 else ag_t2 = ag_tx;
3348 } while (ag_t1 < ag_t2);
3349 if (ag_tstt[ag_t1] != (unsigned char)(PCB).token_number)
3350 ag_t1 = ag_sbe[(PCB).sn];
3351 }
3352 (PCB).ag_ap = ag_pstt[ag_t1];
3353 (ag_gt_procs_scan[ag_astt[ag_t1]])();
3354 }
3355 }
3356
3357