Mercurial > ~dholland > hg > ag > index.cgi
diff tests/agcl/bugs/good/manykw.c @ 0:13d2b8934445
Import AnaGram (near-)release tree into Mercurial.
author | David A. Holland |
---|---|
date | Sat, 22 Dec 2007 17:52:45 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/agcl/bugs/good/manykw.c Sat Dec 22 17:52:45 2007 -0500 @@ -0,0 +1,1455 @@ + +/* + * AnaGram, A System for Syntax Directed Programming + * File generated by: ... + * + * AnaGram Parsing Engine + * Copyright 1993-2002 Parsifal Software. All Rights Reserved. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ + +#ifndef MANYKW_H +#include "manykw.h" +#endif + +#ifndef MANYKW_H +#error Mismatched header file +#endif + +#include <ctype.h> +#include <stdio.h> + +#define RULE_CONTEXT (&((PCB).cs[(PCB).ssx])) +#define ERROR_CONTEXT ((PCB).cs[(PCB).error_frame_ssx]) +#define CONTEXT ((PCB).cs[(PCB).ssx]) + + + +manykw_pcb_type manykw_pcb; +#define PCB manykw_pcb + +#ifndef CONVERT_CASE +#define CONVERT_CASE(c) (c) +#endif +#ifndef TAB_SPACING +#define TAB_SPACING 8 +#endif + + +#define READ_COUNTS +#define WRITE_COUNTS +#undef V +#define V(i,t) (*t (&(PCB).vs[(PCB).ssx + i])) +#undef VS +#define VS(i) (PCB).vs[(PCB).ssx + i] + +#ifndef GET_CONTEXT +#define GET_CONTEXT CONTEXT = (PCB).input_context +#endif + +typedef enum { + ag_action_1, + ag_action_2, + ag_action_3, + ag_action_4, + ag_action_5, + ag_action_6, + ag_action_7, + ag_action_8, + ag_action_9, + ag_action_10, + ag_action_11, + ag_action_12 +} ag_parser_action; + + +#ifndef NULL_VALUE_INITIALIZER +#define NULL_VALUE_INITIALIZER = 0 +#endif + +static int const ag_null_value NULL_VALUE_INITIALIZER; + +static const unsigned char ag_rpx[] = { + 0 +}; + +static const unsigned char ag_key_itt[] = { + 0 +}; + +static const unsigned short ag_key_pt[] = { +0 +}; + +static const unsigned char ag_key_ch[] = { + 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, + 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, + 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, + 100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100, + 101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101, + 102,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102, + 255, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255,100,255,114,255,111,255, + 119,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102, + 255, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, + 54, 55,255, 49,255,100,255,114,255,111,255,119,255, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, + 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, + 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55,255, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 97, 98, 99,100,101,102,255, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, + 98, 99,100,101,102,255, 49, 56, 57, 97, 98, 99,100,101,102,255,100,255, + 114,255,111,255,119,255 +}; + +static const unsigned char ag_key_act[] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,4,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,4,2,4,2,4,2,4,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,4,2,2,2,2,2,2,2,2,4,2,4,2,4,2,4,2,4,2,4,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,2,2,2,2,2,2,2,4,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,2,2,2,2, + 2,2,2,2,4,2,4,2,4,2,4,2,4 +}; + +static const unsigned short ag_key_parm[] = { + 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, + 262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277, 0,278, + 279,280,281,282,283,284,285,286,287,288,289,290,291,292,293, 0,294,295, + 296,297,298,299,300,301,302,303,304,305,306,307,308,309, 0,310,311,312, + 313,314,315,316,317,318,319,320,321,322,323,324,325, 0,326,327,328,329, + 330,331,332,333,334,335,336,337,338,339,340,341, 0,342,343,344,345,346, + 347,348,349,350,351,352,353,354,355,356,357, 0,358,359,360,361,362,363, + 364,365,366,367,368,369,370,371,372,373, 0,374,375,376,377,378,379,380, + 381,382,383,384,385,386,387,388,389, 0, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 0, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 0, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99,100,101, 0,102,103,104,105,106,107,108,109,110,111,112,113,114, + 115,116,117, 0,118,119,120,121,122,123,124,125,126,127,128,129,130,131, + 132,133, 0,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148, + 149, 0,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165, + 0,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181, 0, + 182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197, 0,198, + 199,200,201,202,203,204,205,206,207,208,209,210,211,212,213, 0,214,215, + 216,217,218,219,220,221,222,223,224,225,226,227,228,229, 0,230,231,232, + 233,234,235,236,237,238,239,240,241,242,243,244,245, 0,246,247,248,249, + 250,251,252,253,254,255,256,257,258,259,260,261, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277, + 0,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293, 0, + 294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309, 0,310, + 311,312,313,314,315,316,317,318,319,320,321,322,323,324,325, 0,326,327, + 328,329,330,331,332,333,334,335,336,337,338,339,340,341, 0,342,343,344, + 345,346,347,348,349,350,351,352,353,354,355,356,357, 0,358,359,360,361, + 362,363,364,365,366,367,368,369,370,371,372,373, 0,374,375,376,377,378, + 379,380,381,382,383,384,385,386,387,388,389, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,262,263,264,265,266, + 267,268,269,270,271,272,273,274,275,276,277, 0,278,279,280,281,282,283, + 284,285,286,287,288,289,290,291,292,293, 0,294,295,296,297,298,299,300, + 301,302,303,304,305,306,307,308,309, 0,310,311,312,313,314,315,316,317, + 318,319,320,321,322,323,324,325, 0,326,327,328,329,330,331,332,333,334, + 335,336,337,338,339,340,341, 0,342,343,344,345,346,347,348,349,350,351, + 352,353,354,355,356,357, 0,358,359,360,361,362,363,364,365,366,367,368, + 369,370,371,372,373, 0,374,375,376,377,378,379,380,381,382,383,384,385, + 386,387,388,389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,134,135,136,137, + 138,139,140,141,142,143,144,145,146,147,148,149, 0,150,151,152,153,154, + 155,156,157,158,159,160,161,162,163,164,165, 0,166,167,168,169,170,171, + 172,173,174,175,176,177,178,179,180,181, 0,182,183,184,185,186,187,188, + 189,190,191,192,193,194,195,196,197, 0,198,199,200,201,202,203,204,205, + 206,207,208,209,210,211,212,213, 0,214,215,216,217,218,219,220,221,222, + 223,224,225,226,227,228,229, 0,230,231,232,233,234,235,236,237,238,239, + 240,241,242,243,244,245, 0,246,247,248,249,250,251,252,253,254,255,256, + 257,258,259,260,261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 +}; + +static const unsigned short ag_key_jmp[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 35, 52, 69, 86,103,120,137, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,154,171,188,205, + 222,239,256,273,290,307,324,341,358,375,392, 0,409, 0,426, 0,428, 0, + 430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,434,451,468,485,502,519, + 536,553, 0,570, 0,579, 0,581, 0,583, 0,585, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,589,606,623,640,657,674,691,708, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,725,734,751,768,785,802,819,836,853, 0,870, 0, + 880, 0,882, 0,884, 0 +}; + +static const unsigned short ag_key_index[] = { + 432, 0,587,886, 0, 0, 0 +}; + +static const unsigned char ag_key_ends[] = { + 0 +}; +#define AG_TCV(x) (((int)(x) >= 0 && (int)(x) <= 255) ? ag_tcv[(x)] : 0) + +static const unsigned short ag_tcv[] = { + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 +}; + +#ifndef SYNTAX_ERROR +#define SYNTAX_ERROR fprintf(stderr,"%s, line %d, column %d\n", \ + (PCB).error_message, (PCB).line, (PCB).column) +#endif + +#ifndef FIRST_LINE +#define FIRST_LINE 1 +#endif + +#ifndef FIRST_COLUMN +#define FIRST_COLUMN 1 +#endif + +#ifndef PARSER_STACK_OVERFLOW +#define PARSER_STACK_OVERFLOW {fprintf(stderr, \ + "\nParser stack overflow, line %d, column %d\n",\ + (PCB).line, (PCB).column);} +#endif + +#ifndef REDUCTION_TOKEN_ERROR +#define REDUCTION_TOKEN_ERROR {fprintf(stderr, \ + "\nReduction token error, line %d, column %d\n", \ + (PCB).line, (PCB).column);} +#endif + + +typedef enum + {ag_accept_key, ag_set_key, ag_jmp_key, ag_end_key, ag_no_match_key, + ag_cf_accept_key, ag_cf_set_key, ag_cf_end_key} key_words; + +#ifndef GET_INPUT +#define GET_INPUT ((PCB).input_code = getchar()) +#endif + + +static int ag_look_ahead(void) { + if ((PCB).rx < (PCB).fx) { + return CONVERT_CASE((PCB).lab[(PCB).rx++]); + } + GET_INPUT; + (PCB).fx++; + return CONVERT_CASE((PCB).lab[(PCB).rx++] = (PCB).input_code); +} + +static void ag_get_key_word(int ag_k) { + int save_index = (PCB).rx; + const unsigned char *sp; + int ag_ch; + while (1) { + switch (ag_key_act[ag_k]) { + case ag_cf_end_key: + sp = ag_key_ends + ag_key_jmp[ag_k]; + do { + if ((ag_ch = *sp++) == 0) { + int ag_k1 = ag_key_parm[ag_k]; + int ag_k2 = ag_key_pt[ag_k1]; + if (ag_key_itt[ag_k2 + ag_look_ahead()]) goto ag_fail; + (PCB).rx--; + (PCB).token_number = (manykw_token_type) ag_key_pt[ag_k1 + 1]; + return; + } + } while (ag_look_ahead() == ag_ch); + goto ag_fail; + case ag_end_key: + sp = ag_key_ends + ag_key_jmp[ag_k]; + do { + if ((ag_ch = *sp++) == 0) { + (PCB).token_number = (manykw_token_type) ag_key_parm[ag_k]; + return; + } + } while (ag_look_ahead() == ag_ch); + case ag_no_match_key: +ag_fail: + (PCB).rx = save_index; + return; + case ag_cf_set_key: { + int ag_k1 = ag_key_parm[ag_k]; + int ag_k2 = ag_key_pt[ag_k1]; + ag_k = ag_key_jmp[ag_k]; + if (ag_key_itt[ag_k2 + (ag_ch = ag_look_ahead())]) break; + save_index = --(PCB).rx; + (PCB).token_number = (manykw_token_type) ag_key_pt[ag_k1+1]; + break; + } + case ag_set_key: + save_index = (PCB).rx; + (PCB).token_number = (manykw_token_type) ag_key_parm[ag_k]; + case ag_jmp_key: + ag_k = ag_key_jmp[ag_k]; + ag_ch = ag_look_ahead(); + break; + case ag_accept_key: + (PCB).token_number = (manykw_token_type) ag_key_parm[ag_k]; + return; + case ag_cf_accept_key: { + int ag_k1 = ag_key_parm[ag_k]; + int ag_k2 = ag_key_pt[ag_k1]; + if (ag_key_itt[ag_k2 + ag_look_ahead()]) (PCB).rx = save_index; + else { + (PCB).rx--; + (PCB).token_number = (manykw_token_type) ag_key_pt[ag_k1+1]; + } + return; + } + default: + /* not reachable; here to suppress compiler warnings */ + goto ag_fail; + } + if (ag_ch <= 255) while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_ch > 255 || ag_key_ch[ag_k] != ag_ch) { + (PCB).rx = save_index; + return; + } + } +} + + +#ifndef AG_NEWLINE +#define AG_NEWLINE 10 +#endif + +#ifndef AG_RETURN +#define AG_RETURN 13 +#endif + +#ifndef AG_FORMFEED +#define AG_FORMFEED 12 +#endif + +#ifndef AG_TABCHAR +#define AG_TABCHAR 9 +#endif + +static void ag_track(void) { + int ag_k = 0; + while (ag_k < (PCB).rx) { + int ag_ch = (PCB).lab[ag_k++]; + switch (ag_ch) { + case AG_NEWLINE: + (PCB).column = 1, (PCB).line++; + case AG_RETURN: + case AG_FORMFEED: + break; + case AG_TABCHAR: + (PCB).column += (TAB_SPACING) - ((PCB).column - 1) % (TAB_SPACING); + break; + default: + (PCB).column++; + } + } + ag_k = 0; + while ((PCB).rx < (PCB).fx) (PCB).lab[ag_k++] = (PCB).lab[(PCB).rx++]; + (PCB).fx = ag_k; + (PCB).rx = 0; +} + + +static void ag_prot(void) { + int ag_k; + ag_k = 128 - ++(PCB).btsx; + if (ag_k <= (PCB).ssx) { + (PCB).exit_flag = AG_STACK_ERROR_CODE; + PARSER_STACK_OVERFLOW; + return; + } + (PCB).bts[(PCB).btsx] = (PCB).sn; + (PCB).bts[ag_k] = (PCB).ssx; + (PCB).vs[ag_k] = (PCB).vs[(PCB).ssx]; + (PCB).ss[ag_k] = (PCB).ss[(PCB).ssx]; +} + +static void ag_undo(void) { + if ((PCB).drt == -1) return; + while ((PCB).btsx) { + int ag_k = 128 - (PCB).btsx; + (PCB).sn = (PCB).bts[(PCB).btsx--]; + (PCB).ssx = (PCB).bts[ag_k]; + (PCB).vs[(PCB).ssx] = (PCB).vs[ag_k]; + (PCB).ss[(PCB).ssx] = (PCB).ss[ag_k]; + } + (PCB).token_number = (manykw_token_type) (PCB).drt; + (PCB).ssx = (PCB).dssx; + (PCB).sn = (PCB).dsn; + (PCB).drt = -1; +} + + +static const unsigned short ag_tstt[] = { +389,388,387,386,385,384,383,382,381,380,379,378,377,376,375,374,373,372,371, + 370,369,368,367,366,365,364,363,362,361,360,359,358,357,356,355,354,353, + 352,351,350,349,348,347,346,345,344,343,342,341,340,339,338,337,336,335, + 334,333,332,331,330,329,328,327,326,325,324,323,322,321,320,319,318,317, + 316,315,314,313,312,311,310,309,308,307,306,305,304,303,302,301,300,299, + 298,297,296,295,294,293,292,291,290,289,288,287,286,285,284,283,282,281, + 280,279,278,277,276,275,274,273,272,271,270,269,268,267,266,265,264,263, + 262,261,260,259,258,257,256,255,254,253,252,251,250,249,248,247,246,245, + 244,243,242,241,240,239,238,237,236,235,234,233,232,231,230,229,228,227, + 226,225,224,223,222,221,220,219,218,217,216,215,214,213,212,211,210,209, + 208,207,206,205,204,203,202,201,200,199,198,197,196,195,194,193,192,191, + 190,189,188,187,186,185,184,183,182,181,180,179,178,177,176,175,174,173, + 172,171,170,169,168,167,166,165,164,163,162,161,160,159,158,157,156,155, + 154,153,152,151,150,149,148,147,146,145,144,143,142,141,140,139,138,137, + 136,135,134,133,132,131,130,129,128,127,126,125,124,123,122,121,120,119, + 118,117,116,115,114,113,112,111,110,109,108,107,106,105,104,103,102,101, + 100,99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,79,78, + 77,76,75,74,73,72,71,70,69,68,67,66,65,64,63,62,61,60,59,58,57,56,55,54, + 53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30, + 29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,0,1, + 2,4,5, +3,0, +389,388,387,386,385,384,383,382,381,380,379,378,377,376,375,374,373,372,371, + 370,369,368,367,366,365,364,363,362,361,360,359,358,357,356,355,354,353, + 352,351,350,349,348,347,346,345,344,343,342,341,340,339,338,337,336,335, + 334,333,332,331,330,329,328,327,326,325,324,323,322,321,320,319,318,317, + 316,315,314,313,312,311,310,309,308,307,306,305,304,303,302,301,300,299, + 298,297,296,295,294,293,292,291,290,289,288,287,286,285,284,283,282,281, + 280,279,278,277,276,275,274,273,272,271,270,269,268,267,266,265,264,263, + 262,3,0,5, +389,388,387,386,385,384,383,382,381,380,379,378,377,376,375,374,373,372,371, + 370,369,368,367,366,365,364,363,362,361,360,359,358,357,356,355,354,353, + 352,351,350,349,348,347,346,345,344,343,342,341,340,339,338,337,336,335, + 334,333,332,331,330,329,328,327,326,325,324,323,322,321,320,319,318,317, + 316,315,314,313,312,311,310,309,308,307,306,305,304,303,302,301,300,299, + 298,297,296,295,294,293,292,291,290,289,288,287,286,285,284,283,282,281, + 280,279,278,277,276,275,274,273,272,271,270,269,268,267,266,265,264,263, + 262,261,260,259,258,257,256,255,254,253,252,251,250,249,248,247,246,245, + 244,243,242,241,240,239,238,237,236,235,234,233,232,231,230,229,228,227, + 226,225,224,223,222,221,220,219,218,217,216,215,214,213,212,211,210,209, + 208,207,206,205,204,203,202,201,200,199,198,197,196,195,194,193,192,191, + 190,189,188,187,186,185,184,183,182,181,180,179,178,177,176,175,174,173, + 172,171,170,169,168,167,166,165,164,163,162,161,160,159,158,157,156,155, + 154,153,152,151,150,149,148,147,146,145,144,143,142,141,140,139,138,137, + 136,135,134,3,0,4,5, +3,0, +3,0, +3,0, + +}; + + +static unsigned const char ag_astt[788] = { + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,0,1,1,1,3,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,3,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,3,7,1,1,3,7,3,7,3,7 +}; + + +static const unsigned char ag_pstt[] = { +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,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,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,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,2,2,2,2,2,2,2,2,2,2, + 2,2,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,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,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,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,2,1, +3,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,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,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,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,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,2,4, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,1,3,6,5, +6,4, +5,5, +4,6, + +}; + + +static const unsigned short ag_sbt[] = { + 0, 389, 391, 522, 782, 784, 786, 788 +}; + + +static const unsigned short ag_sbe[] = { + 384, 390, 520, 779, 783, 785, 787, 788 +}; + + +static const unsigned char ag_fl[] = { + 1,2,2,2,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,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 +}; + +static const unsigned short ag_ptt[] = { + 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 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, 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, 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, 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, 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, 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, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 +}; + + +static void ag_ra(void) +{ +} + +#define TOKEN_NAMES manykw_token_names +const char *const manykw_token_names[390] = { + "grammar", + "grammar", + "word1", + "eof", + "word2", + "word3", + "\"word00\"", + "\"word01\"", + "\"word02\"", + "\"word03\"", + "\"word04\"", + "\"word05\"", + "\"word06\"", + "\"word07\"", + "\"word08\"", + "\"word09\"", + "\"word0a\"", + "\"word0b\"", + "\"word0c\"", + "\"word0d\"", + "\"word0e\"", + "\"word0f\"", + "\"word10\"", + "\"word11\"", + "\"word12\"", + "\"word13\"", + "\"word14\"", + "\"word15\"", + "\"word16\"", + "\"word17\"", + "\"word18\"", + "\"word19\"", + "\"word1a\"", + "\"word1b\"", + "\"word1c\"", + "\"word1d\"", + "\"word1e\"", + "\"word1f\"", + "\"word20\"", + "\"word21\"", + "\"word22\"", + "\"word23\"", + "\"word24\"", + "\"word25\"", + "\"word26\"", + "\"word27\"", + "\"word28\"", + "\"word29\"", + "\"word2a\"", + "\"word2b\"", + "\"word2c\"", + "\"word2d\"", + "\"word2e\"", + "\"word2f\"", + "\"word30\"", + "\"word31\"", + "\"word32\"", + "\"word33\"", + "\"word34\"", + "\"word35\"", + "\"word36\"", + "\"word37\"", + "\"word38\"", + "\"word39\"", + "\"word3a\"", + "\"word3b\"", + "\"word3c\"", + "\"word3d\"", + "\"word3e\"", + "\"word3f\"", + "\"word40\"", + "\"word41\"", + "\"word42\"", + "\"word43\"", + "\"word44\"", + "\"word45\"", + "\"word46\"", + "\"word47\"", + "\"word48\"", + "\"word49\"", + "\"word4a\"", + "\"word4b\"", + "\"word4c\"", + "\"word4d\"", + "\"word4e\"", + "\"word4f\"", + "\"word50\"", + "\"word51\"", + "\"word52\"", + "\"word53\"", + "\"word54\"", + "\"word55\"", + "\"word56\"", + "\"word57\"", + "\"word58\"", + "\"word59\"", + "\"word5a\"", + "\"word5b\"", + "\"word5c\"", + "\"word5d\"", + "\"word5e\"", + "\"word5f\"", + "\"word60\"", + "\"word61\"", + "\"word62\"", + "\"word63\"", + "\"word64\"", + "\"word65\"", + "\"word66\"", + "\"word67\"", + "\"word68\"", + "\"word69\"", + "\"word6a\"", + "\"word6b\"", + "\"word6c\"", + "\"word6d\"", + "\"word6e\"", + "\"word6f\"", + "\"word70\"", + "\"word71\"", + "\"word72\"", + "\"word73\"", + "\"word74\"", + "\"word75\"", + "\"word76\"", + "\"word77\"", + "\"word78\"", + "\"word79\"", + "\"word7a\"", + "\"word7b\"", + "\"word7c\"", + "\"word7d\"", + "\"word7e\"", + "\"word7f\"", + "\"word80\"", + "\"word81\"", + "\"word82\"", + "\"word83\"", + "\"word84\"", + "\"word85\"", + "\"word86\"", + "\"word87\"", + "\"word88\"", + "\"word89\"", + "\"word8a\"", + "\"word8b\"", + "\"word8c\"", + "\"word8d\"", + "\"word8e\"", + "\"word8f\"", + "\"word90\"", + "\"word91\"", + "\"word92\"", + "\"word93\"", + "\"word94\"", + "\"word95\"", + "\"word96\"", + "\"word97\"", + "\"word98\"", + "\"word99\"", + "\"word9a\"", + "\"word9b\"", + "\"word9c\"", + "\"word9d\"", + "\"word9e\"", + "\"word9f\"", + "\"worda0\"", + "\"worda1\"", + "\"worda2\"", + "\"worda3\"", + "\"worda4\"", + "\"worda5\"", + "\"worda6\"", + "\"worda7\"", + "\"worda8\"", + "\"worda9\"", + "\"wordaa\"", + "\"wordab\"", + "\"wordac\"", + "\"wordad\"", + "\"wordae\"", + "\"wordaf\"", + "\"wordb0\"", + "\"wordb1\"", + "\"wordb2\"", + "\"wordb3\"", + "\"wordb4\"", + "\"wordb5\"", + "\"wordb6\"", + "\"wordb7\"", + "\"wordb8\"", + "\"wordb9\"", + "\"wordba\"", + "\"wordbb\"", + "\"wordbc\"", + "\"wordbd\"", + "\"wordbe\"", + "\"wordbf\"", + "\"wordc0\"", + "\"wordc1\"", + "\"wordc2\"", + "\"wordc3\"", + "\"wordc4\"", + "\"wordc5\"", + "\"wordc6\"", + "\"wordc7\"", + "\"wordc8\"", + "\"wordc9\"", + "\"wordca\"", + "\"wordcb\"", + "\"wordcc\"", + "\"wordcd\"", + "\"wordce\"", + "\"wordcf\"", + "\"wordd0\"", + "\"wordd1\"", + "\"wordd2\"", + "\"wordd3\"", + "\"wordd4\"", + "\"wordd5\"", + "\"wordd6\"", + "\"wordd7\"", + "\"wordd8\"", + "\"wordd9\"", + "\"wordda\"", + "\"worddb\"", + "\"worddc\"", + "\"worddd\"", + "\"wordde\"", + "\"worddf\"", + "\"worde0\"", + "\"worde1\"", + "\"worde2\"", + "\"worde3\"", + "\"worde4\"", + "\"worde5\"", + "\"worde6\"", + "\"worde7\"", + "\"worde8\"", + "\"worde9\"", + "\"wordea\"", + "\"wordeb\"", + "\"wordec\"", + "\"worded\"", + "\"wordee\"", + "\"wordef\"", + "\"wordf0\"", + "\"wordf1\"", + "\"wordf2\"", + "\"wordf3\"", + "\"wordf4\"", + "\"wordf5\"", + "\"wordf6\"", + "\"wordf7\"", + "\"wordf8\"", + "\"wordf9\"", + "\"wordfa\"", + "\"wordfb\"", + "\"wordfc\"", + "\"wordfd\"", + "\"wordfe\"", + "\"wordff\"", + "\"word100\"", + "\"word101\"", + "\"word102\"", + "\"word103\"", + "\"word104\"", + "\"word105\"", + "\"word106\"", + "\"word107\"", + "\"word108\"", + "\"word109\"", + "\"word10a\"", + "\"word10b\"", + "\"word10c\"", + "\"word10d\"", + "\"word10e\"", + "\"word10f\"", + "\"word110\"", + "\"word111\"", + "\"word112\"", + "\"word113\"", + "\"word114\"", + "\"word115\"", + "\"word116\"", + "\"word117\"", + "\"word118\"", + "\"word119\"", + "\"word11a\"", + "\"word11b\"", + "\"word11c\"", + "\"word11d\"", + "\"word11e\"", + "\"word11f\"", + "\"word120\"", + "\"word121\"", + "\"word122\"", + "\"word123\"", + "\"word124\"", + "\"word125\"", + "\"word126\"", + "\"word127\"", + "\"word128\"", + "\"word129\"", + "\"word12a\"", + "\"word12b\"", + "\"word12c\"", + "\"word12d\"", + "\"word12e\"", + "\"word12f\"", + "\"word130\"", + "\"word131\"", + "\"word132\"", + "\"word133\"", + "\"word134\"", + "\"word135\"", + "\"word136\"", + "\"word137\"", + "\"word138\"", + "\"word139\"", + "\"word13a\"", + "\"word13b\"", + "\"word13c\"", + "\"word13d\"", + "\"word13e\"", + "\"word13f\"", + "\"word140\"", + "\"word141\"", + "\"word142\"", + "\"word143\"", + "\"word144\"", + "\"word145\"", + "\"word146\"", + "\"word147\"", + "\"word148\"", + "\"word149\"", + "\"word14a\"", + "\"word14b\"", + "\"word14c\"", + "\"word14d\"", + "\"word14e\"", + "\"word14f\"", + "\"word150\"", + "\"word151\"", + "\"word152\"", + "\"word153\"", + "\"word154\"", + "\"word155\"", + "\"word156\"", + "\"word157\"", + "\"word158\"", + "\"word159\"", + "\"word15a\"", + "\"word15b\"", + "\"word15c\"", + "\"word15d\"", + "\"word15e\"", + "\"word15f\"", + "\"word160\"", + "\"word161\"", + "\"word162\"", + "\"word163\"", + "\"word164\"", + "\"word165\"", + "\"word166\"", + "\"word167\"", + "\"word168\"", + "\"word169\"", + "\"word16a\"", + "\"word16b\"", + "\"word16c\"", + "\"word16d\"", + "\"word16e\"", + "\"word16f\"", + "\"word170\"", + "\"word171\"", + "\"word172\"", + "\"word173\"", + "\"word174\"", + "\"word175\"", + "\"word176\"", + "\"word177\"", + "\"word178\"", + "\"word179\"", + "\"word17a\"", + "\"word17b\"", + "\"word17c\"", + "\"word17d\"", + "\"word17e\"", + "\"word17f\"", + +}; + +#ifndef MISSING_FORMAT +#define MISSING_FORMAT "Missing %s" +#endif +#ifndef UNEXPECTED_FORMAT +#define UNEXPECTED_FORMAT "Unexpected %s" +#endif +#ifndef UNNAMED_TOKEN +#define UNNAMED_TOKEN "input" +#endif + + +static void ag_diagnose(void) { + int ag_snd = (PCB).sn; + int ag_k = ag_sbt[ag_snd]; + + if (*TOKEN_NAMES[ag_tstt[ag_k]] && ag_astt[ag_k + 1] == ag_action_8) { + sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]); + } + else if (ag_astt[ag_sbe[(PCB).sn]] == ag_action_8 + && (ag_k = (int) ag_sbe[(PCB).sn] + 1) == (int) ag_sbt[(PCB).sn+1] - 1 + && *TOKEN_NAMES[ag_tstt[ag_k]]) { + sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]); + } + else if ((PCB).token_number && *TOKEN_NAMES[(PCB).token_number]) { + sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, TOKEN_NAMES[(PCB).token_number]); + } + else if (isprint((*(PCB).lab)) && (*(PCB).lab) != '\\') { + char buf[20]; + sprintf(buf, "\'%c\'", (char) (*(PCB).lab)); + sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, buf); + } + else sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, UNNAMED_TOKEN); + (PCB).error_message = (PCB).ag_msg; + + +} +static int ag_action_1_r_proc(void); +static int ag_action_2_r_proc(void); +static int ag_action_3_r_proc(void); +static int ag_action_4_r_proc(void); +static int ag_action_1_s_proc(void); +static int ag_action_3_s_proc(void); +static int ag_action_1_proc(void); +static int ag_action_2_proc(void); +static int ag_action_3_proc(void); +static int ag_action_4_proc(void); +static int ag_action_5_proc(void); +static int ag_action_6_proc(void); +static int ag_action_7_proc(void); +static int ag_action_8_proc(void); +static int ag_action_9_proc(void); +static int ag_action_10_proc(void); +static int ag_action_11_proc(void); +static int ag_action_8_proc(void); + + +static int (*const ag_r_procs_scan[])(void) = { + ag_action_1_r_proc, + ag_action_2_r_proc, + ag_action_3_r_proc, + ag_action_4_r_proc +}; + +static int (*const ag_s_procs_scan[])(void) = { + ag_action_1_s_proc, + ag_action_2_r_proc, + ag_action_3_s_proc, + ag_action_4_r_proc +}; + +static int (*const ag_gt_procs_scan[])(void) = { + ag_action_1_proc, + ag_action_2_proc, + ag_action_3_proc, + ag_action_4_proc, + ag_action_5_proc, + ag_action_6_proc, + ag_action_7_proc, + ag_action_8_proc, + ag_action_9_proc, + ag_action_10_proc, + ag_action_11_proc, + ag_action_8_proc +}; + + +static int ag_action_10_proc(void) { + int ag_t = (PCB).token_number; + (PCB).btsx = 0, (PCB).drt = -1; + do { + ag_track(); + if ((PCB).rx < (PCB).fx) { + (PCB).input_code = (PCB).lab[(PCB).rx++]; + (PCB).token_number = (manykw_token_type) AG_TCV((PCB).input_code);} + else { + GET_INPUT; + (PCB).lab[(PCB).fx++] = (PCB).input_code; + (PCB).token_number = (manykw_token_type) AG_TCV((PCB).input_code); + (PCB).rx++; + } + if (ag_key_index[(PCB).sn]) { + unsigned ag_k = ag_key_index[(PCB).sn]; + int ag_ch = CONVERT_CASE((PCB).input_code); + if (ag_ch < 255) { + while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k); + } + } + } while ((PCB).token_number == (manykw_token_type) ag_t); + (PCB).rx = 0; + return 1; +} + +static int ag_action_11_proc(void) { + int ag_t = (PCB).token_number; + + (PCB).btsx = 0, (PCB).drt = -1; + do { + (PCB).vs[(PCB).ssx] = *(PCB).lab; + (PCB).ssx--; + ag_track(); + ag_ra(); + if ((PCB).exit_flag != AG_RUNNING_CODE) return 0; + (PCB).ssx++; + if ((PCB).rx < (PCB).fx) { + (PCB).input_code = (PCB).lab[(PCB).rx++]; + (PCB).token_number = (manykw_token_type) AG_TCV((PCB).input_code);} + else { + GET_INPUT; + (PCB).lab[(PCB).fx++] = (PCB).input_code; + (PCB).token_number = (manykw_token_type) AG_TCV((PCB).input_code); + (PCB).rx++; + } + if (ag_key_index[(PCB).sn]) { + unsigned ag_k = ag_key_index[(PCB).sn]; + int ag_ch = CONVERT_CASE((PCB).input_code); + if (ag_ch < 255) { + while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k); + } + } + } + while ((PCB).token_number == (manykw_token_type) ag_t); + (PCB).rx = 0; + return 1; +} + +static int ag_action_3_r_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + (PCB).btsx = 0, (PCB).drt = -1; + (PCB).reduction_token = (manykw_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_3_s_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + (PCB).btsx = 0, (PCB).drt = -1; + (PCB).reduction_token = (manykw_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_4_r_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + (PCB).reduction_token = (manykw_token_type) ag_ptt[(PCB).ag_ap]; + return 1; +} + +static int ag_action_2_proc(void) { + (PCB).btsx = 0, (PCB).drt = -1; + if ((PCB).ssx >= 128) { + (PCB).exit_flag = AG_STACK_ERROR_CODE; + PARSER_STACK_OVERFLOW; + } + (PCB).vs[(PCB).ssx] = *(PCB).lab; + (PCB).ss[(PCB).ssx] = (PCB).sn; + (PCB).ssx++; + (PCB).sn = (PCB).ag_ap; + ag_track(); + return 0; +} + +static int ag_action_9_proc(void) { + if ((PCB).drt == -1) { + (PCB).drt=(PCB).token_number; + (PCB).dssx=(PCB).ssx; + (PCB).dsn=(PCB).sn; + } + ag_prot(); + (PCB).vs[(PCB).ssx] = ag_null_value; + (PCB).ss[(PCB).ssx] = (PCB).sn; + (PCB).ssx++; + (PCB).sn = (PCB).ag_ap; + (PCB).rx = 0; + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_2_r_proc(void) { + (PCB).ssx++; + (PCB).sn = (PCB).ag_ap; + return 0; +} + +static int ag_action_7_proc(void) { + --(PCB).ssx; + (PCB).rx = 0; + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_1_proc(void) { + ag_track(); + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_1_r_proc(void) { + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_1_s_proc(void) { + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_4_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + (PCB).reduction_token = (manykw_token_type) ag_ptt[(PCB).ag_ap]; + (PCB).btsx = 0, (PCB).drt = -1; + (PCB).vs[(PCB).ssx] = *(PCB).lab; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + else (PCB).ss[(PCB).ssx] = (PCB).sn; + ag_track(); + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return 0; +} + +static int ag_action_3_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + (PCB).btsx = 0, (PCB).drt = -1; + (PCB).vs[(PCB).ssx] = *(PCB).lab; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + else (PCB).ss[(PCB).ssx] = (PCB).sn; + ag_track(); + (PCB).reduction_token = (manykw_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return 0; +} + +static int ag_action_8_proc(void) { + ag_undo(); + (PCB).rx = 0; + (PCB).exit_flag = AG_SYNTAX_ERROR_CODE; + ag_diagnose(); + SYNTAX_ERROR; + {(PCB).rx = 1; ag_track();} + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_5_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap]; + (PCB).btsx = 0, (PCB).drt = -1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + else { + (PCB).ss[(PCB).ssx] = (PCB).sn; + } + (PCB).rx = 0; + (PCB).reduction_token = (manykw_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_6_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap]; + (PCB).reduction_token = (manykw_token_type) ag_ptt[(PCB).ag_ap]; + if ((PCB).drt == -1) { + (PCB).drt=(PCB).token_number; + (PCB).dssx=(PCB).ssx; + (PCB).dsn=(PCB).sn; + } + if (ag_sd) { + (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + } + else { + ag_prot(); + (PCB).vs[(PCB).ssx] = ag_null_value; + (PCB).ss[(PCB).ssx] = (PCB).sn; + } + (PCB).rx = 0; + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return (PCB).exit_flag == AG_RUNNING_CODE; +} + + +void init_manykw(void) { + (PCB).rx = (PCB).fx = 0; + (PCB).ss[0] = (PCB).sn = (PCB).ssx = 0; + (PCB).exit_flag = AG_RUNNING_CODE; + (PCB).line = FIRST_LINE; + (PCB).column = FIRST_COLUMN; + (PCB).btsx = 0, (PCB).drt = -1; +} + +void manykw(void) { + init_manykw(); + (PCB).exit_flag = AG_RUNNING_CODE; + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbt[(PCB).sn]; + if (ag_tstt[ag_t1]) { + unsigned ag_t2 = ag_sbe[(PCB).sn] - 1; + if ((PCB).rx < (PCB).fx) { + (PCB).input_code = (PCB).lab[(PCB).rx++]; + (PCB).token_number = (manykw_token_type) AG_TCV((PCB).input_code);} + else { + GET_INPUT; + (PCB).lab[(PCB).fx++] = (PCB).input_code; + (PCB).token_number = (manykw_token_type) AG_TCV((PCB).input_code); + (PCB).rx++; + } + if (ag_key_index[(PCB).sn]) { + unsigned ag_k = ag_key_index[(PCB).sn]; + int ag_ch = CONVERT_CASE((PCB).input_code); + if (ag_ch < 255) { + while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k); + } + } + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] > (unsigned short)(PCB).token_number) + ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + if (ag_tstt[ag_t1] != (unsigned short)(PCB).token_number) + ag_t1 = ag_sbe[(PCB).sn]; + } + (PCB).ag_ap = ag_pstt[ag_t1]; + (ag_gt_procs_scan[ag_astt[ag_t1]])(); + } +} + + + +int main(void) { + manykw(); + return 0; +}