Mercurial > ~dholland > hg > ag > index.cgi
view tests/agcl/bugs/good/manykw.c @ 11:3aa0f5a02342
Remove unused variable; fix what it was supposed to be doing.
(and document it a bit for the next time through here)
author | David A. Holland |
---|---|
date | Tue, 31 May 2022 00:54:12 -0400 |
parents | 13d2b8934445 |
children |
line wrap: on
line source
/* * 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; }