🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sources.reviewed
Article #26

v02i030: mawk - (Ver. 1.1) An interpreter for the AWK language, Patch02c/4

#26
From: Mike Brennan
Date: Tue, 13 Oct 1992 22:14
1527 lines
63617 bytes
Submitted-by: Mike Brennan <brennan@boeing.com>
Posting-number: Volume 2, Issue 30
Archive-name: mawk/patch02c
Patch-To: mawk: Volume 1, Issue 50-68

#!/bin/sh
# this is part.03 (part 3 of a multipart archive)
# do not concatenate these parts, unpack them in order with /bin/sh
# file Xparse.c continued
#
if test ! -r _shar_seq_.tmp; then
	echo 'Please unpack part 1 first!'
	exit 1
fi
(read Scheck
 if test "$Scheck" != 3; then
	echo Please unpack part "$Scheck" next!
	exit 1
 else
	exit 0
 fi
) < _shar_seq_.tmp || exit 1
if test ! -f _shar_wnt_.tmp; then
	echo 'x - still skipping Xparse.c'
else
echo 'x - continuing file Xparse.c'
sed 's/^X//' << 'SHAR_EOF' >> 'Xparse.c' &&
X 2273, 2273, 2273, -167,  116, 2243, 2243, 2243, 2243, 2243,
X  -65, 2243, 2273,    0,    0, 2273,    0,  -78,    0,    0,
X    0,    0,  -50,    0,    0, 2273, 1820,    0,    0, 2273,
X    0, 2499,    0,    0, 2499,    0, -196,    0,    0,    0,
X    0,  -72,    0, 2511, 2183,    0, 2303,  -61, 2406,   -4,
X  -41,    3,   23, 2273,    6,    0, 2273,    0, 2273,  -13,
X    0, 2333, 2273, 2568, 2589,    0,    0, 2613, 2613, 2613,
X 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613,
X 2613, 2273, 2273, 2273, 2273,    0,  -95,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,  -28,  -28, -211, -211,
X -211,  -26, -120, 2418, 2613,   25,    0,   -9,   29,    0,
X 2433,    0, -276, 2526, 2445,   32,    0,    0,    0,  352,
X    0,    0, 2460,  352, 2213,   31, 2613,    0,   33,    2,
X 2273, 2273, 2273, 2613,    4, 2613, -108,    0, -221, 2120,
X    0,    5,    7, 2273, 2613, 2601, 2622,  198,    0,    0,
X 2273,    0,    8,    0,   10,    0,    0, 2273,    0,    0,
X    0,    0, -218, 2273, -196, 2273, 2273,  -83,  -48,  -31,
X    0,   14,    0,    0,    0,    0,    0,    0,   18, -167,
X    0, 2147,    0,   24,  -17,    6, 2613,    0, 2613, 2472,
X   14,    0,    0,    0,    0,    0, 2273,  -26,    0,    0,
X    0, -196, -196, 2613,   28,    0,    0,    0,
};
short yyrindex[] = {                                      0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,  597,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0, 1583,
X  -98, 1978, 1641,    0,    0,    0,    0,    0,    0,    0,
X    0, 1409,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X  539,  655,  887,  945, 1003,    0,  423,    0,    0,  481,
X    0,    0, 1920,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0, 1061,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0, 1699,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,   30,    0,    0,
X    0,    0,  713,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,  204,    0,    0,    0,    0, -192,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0, 2363,
X    0,    0,   45,    0,    0,    0,    0,   17,   40,  135,
X  209,  283,  357, 2006, 2018, 2026, 2038, 2046, 2058, 2066,
X 2078,    0,    0,    0,    0,    0,  -67,    0,    0,    0,
X    0,    0,    0,    0,    0,    0, 1467, 1525, 1119, 1177,
X 1235, 1351,  771,    0, -185,    0,    0,    0,   50,    0,
X    0,    0, 1786,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,  -10, -205,    0, -223,    0,
X    0,    0,    0, -170,    0, -169,    0,    0, 1874,    0,
X    0,    0,    0,    0,  -59,    0, -236,  -35,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0, 1293,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0, -177,   11,    0,  -46,    0,
X  829,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0, 2086,    0,    0,    0,    0,
};
short yygindex[] = {                                      0,
X   21,    9,    0,  -49,   72,    0,   57,    0,    0,   -7,
X   -1, -188,    1,    0,   44,    0,    0,    0,    0,    0,
X    0,    0,   61,    0,  125, -137,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,  302,    0,    0,    0,    0,
X    0,    0,    0,    0,  103,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,
};
#define YYTABLESIZE 2907
short yytable[] = {                                      78,
X   31,  275,   72,   72,   72,   79,   72,  133,   83,  159,
X   84,   85,  161,  162,    2,  166,    8,    9,   76,  168,
X   26,   85,   48,   48,   48,   31,   72,   48,   48,   48,
X   72,   89,  174,  269,  141,   77,   77,   48,   48,   48,
X  142,  257,   77,  293,  134,   26,  174,   73,   74,   75,
X   93,   81,   94,   78,   78,  152,  137,  155,   78,   78,
X   78,  139,   44,   45,  164,   48,   76,   76,   83,  175,
X  169,   96,   90,   76,  171,  125,   85,  111,   77,  134,
X  294,   87,   87,  306,  131,  132,   87,   88,   87,  184,
X  185,   44,   45,    2,   90,   89,   78,  188,  189,  190,
X  191,  192,  193,  194,  195,  196,  197,  198,  199,  200,
X  201,  186,  187,  288,  289,  290,  134,  207,  208,  209,
X  210,  211,  212,  213,   72,   72,   72,   72,   72,  325,
X   72,   90,   89,  224,   44,   45,  225,  144,  167,  136,
X  305,  138,  170,  146,  214,  145,  231,  234,  172,  147,
X  235,  173,  150,  148,  149,  292,  286,  153,  154,  156,
X   11,   11,   11,  160,  151,  243,  179,  247,  180,  217,
X  218,  219,  220,  221,  254,  223,  132,  256,  183,  247,
X  311,  286,  260,  247,  118,  119,  120,  121,  122,  123,
X  279,   46,   46,   46,  281,  206,   46,   46,   46,   14,
X   14,   14,  265,  266,  267,  268,   46,   46,   46,   46,
X   46,   46,   79,   79,  141,  312,  286,   79,   79,   79,
X  142,  222,  236,   50,   50,   50,  216,  227,   50,   50,
X   50,  140,  313,  286,   46,    8,    9,   76,   50,   50,
X   50,   50,   77,   83,  230,   84,  322,  286,   91,   91,
X  239,  247,  247,  247,  237,   79,  250,  238,  251,  145,
X  176,  128,  129,  130,  225,  252,   50,  131,  132,   92,
X   92,  302,    8,    9,   76,   33,   33,   33,  247,   77,
X   33,   33,   33,  255,  307,  253,  309,  310,  258,  271,
X    1,   33,  272,  273,  278,    2,  284,  286,   34,   34,
X   34,  283,  287,   34,   34,   34,  297,  262,  316,  291,
X  141,  314,  298,  303,   34,  304,  142,  324,   33,  315,
X  214,    3,    4,    5,  299,  321,   95,    6,  163,  328,
X    0,  158,    7,    8,    9,   10,    0,   11,   12,   13,
X   14,   34,   15,   16,   17,    0,   76,   18,   19,   20,
X   21,  159,    0,    0,    0,    3,    4,    5,    0,   22,
X   23,    6,    0,    0,   24,    0,    7,    8,    9,   10,
X    0,   11,   12,   13,   14,    0,   15,   16,   17,    0,
X    0,   18,   19,   20,   21,  157,    0,  308,   44,   45,
X    2,  158,    0,   35,   35,   35,    0,    0,   35,   35,
X   35,    0,  216,  126,  127,  128,  129,  130,    0,   35,
X    0,  131,  132,    0,    0,    0,    3,    4,    5,    0,
X    0,    0,    6,    0,  326,  327,    0,    7,    8,    9,
X   10,    0,   11,   12,   13,   14,   35,   15,   16,   17,
X   46,   47,   18,   19,   20,   21,   48,   49,   50,   51,
X   52,   53,    0,   54,    0,    0,   55,   56,   57,   94,
X    0,    0,   94,   94,   94,   94,    0,   36,   36,   36,
X    0,    0,   36,   36,   36,  116,  117,  118,  119,  120,
X  121,  122,  123,   36,    0,    0,    0,    0,    0,    0,
X   94,   94,   94,    0,    0,    0,   94,    0,    0,    0,
X    0,   94,   94,   94,   94,    0,   94,   94,   94,   94,
X   36,   94,   94,   94,   94,   94,   94,   94,   94,   94,
X   94,   94,   94,   94,   94,   94,    0,   94,    0,    0,
X   94,   94,   94,   43,    0,    0,   44,   45,    2,    0,
X    0,   37,   37,   37,    0,    0,   37,   37,   37,    0,
X   97,   98,   99,  100,  101,  102,  103,   37,    0,    0,
X    0,    0,    0,    0,    3,    4,    5,    0,    0,    0,
X    6,    0,    0,    0,    0,    7,    8,    9,   10,    0,
X   11,   12,   13,   14,   37,   15,   16,   17,   46,   47,
X   18,   19,   20,   21,   48,   49,   50,   51,   52,   53,
X    0,   54,    0,    0,   55,   56,   57,  157,    0,    0,
X   44,   45,    2,    0,    0,   38,   38,   38,    0,    0,
X   38,   38,   38,    0,    0,    0,    0,    0,    0,    0,
X    0,   38,    0,    0,    0,    0,    0,    0,    3,    4,
X    5,    0,    0,    0,    6,    0,    0,    0,    0,    7,
X    8,    9,   10,    0,   11,   12,   13,   14,   38,   15,
X   16,   17,   46,   47,   18,   19,   20,   21,   48,   49,
X   50,   51,   52,   53,    0,   54,    0,    0,   55,   56,
X   57,   75,   75,   75,    0,   82,   75,   75,   75,   75,
X   75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
X   75,   75,   75,   75,   75,   75,   75,   75,    0,   75,
X   75,   75,   75,   75,   75,   75,    0,   75,   75,   75,
X   75,   75,   75,   75,   75,   75,   75,   75,   75,    0,
X   75,   75,   75,    0,    0,   75,   75,   75,   75,  117,
X  117,  117,    0,   82,  117,  117,  117,  117,  117,  117,
X  117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
X  117,  117,  117,  117,  117,  117,    0,  117,  117,  117,
X  117,  117,  117,  117,    0,  117,  117,  117,  117,  117,
X  117,  117,  117,  117,  117,  117,  117,    0,  117,  117,
X  117,    0,    0,  117,  117,  117,  117,   58,   58,   58,
X    0,   82,   58,   58,   58,   58,   58,   58,   58,   58,
X   58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
X   58,   58,   58,   58,    0,   58,   58,   58,   58,   58,
X   58,   58,    0,   58,   58,   58,    0,   58,   58,   58,
X   58,   58,   58,   58,   58,    0,   58,   58,   58,    0,
X    0,   58,   58,   58,   58,   58,   58,   58,    0,   82,
X   58,   58,   58,   75,   75,   75,   75,   75,   75,   75,
X   58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
X   58,   58,    0,   58,   58,   58,   58,   58,   58,   58,
X    0,    0,   58,   58,    0,   58,   58,   58,   58,   58,
X   58,   58,   58,    0,   58,   58,   58,    0,    0,   58,
X   58,   58,   58,  121,  121,  121,    0,    0,  121,  121,
X  121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
X  121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
X    0,  121,  121,  121,  121,  121,  121,  121,    0,  121,
X  121,  121,    0,  121,  121,  121,  121,  121,  121,  121,
X  121,    0,  121,  121,  121,    0,    0,  121,  121,  121,
X  121,  140,  140,  140,    0,    0,  140,  140,  140,  140,
X  140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
X  140,  140,  140,  140,  140,  140,  140,  140,    0,  140,
X  140,  140,  140,  140,  140,  140,    0,    0,  140,  140,
X  140,  140,  140,  140,  140,  140,  140,  140,  140,    0,
X  140,  140,  140,    0,    0,  140,  140,  140,  140,   66,
X   66,   66,    0,    0,   66,   66,   66,   66,   66,   66,
X   66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
X   66,   66,   66,   66,   66,   66,    0,   66,   66,   66,
X   66,   66,   66,   66,    0,   66,   66,    0,   66,   66,
X   66,   66,   66,   66,   66,   66,   66,    0,   66,   66,
X   66,    0,    0,   66,   66,   66,   66,  111,  111,  111,
X    0,    0,  111,  111,  111,  111,  111,  111,  111,  111,
X  111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
X  111,  111,  111,  111,    0,  111,  111,  111,  111,  111,
X  111,  111,    0,  111,  111,  111,    0,  111,  111,  111,
X  111,  111,  111,  111,  111,    0,  111,  111,  111,    0,
X    0,  111,  111,  111,  111,   68,   68,   68,    0,    0,
X   68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
X   68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
X   68,   68,    0,   68,   68,   68,   68,   68,   68,   68,
X    0,   68,    0,    0,   68,   68,   68,   68,   68,   68,
X   68,   68,   68,    0,   68,   68,   68,    0,    0,   68,
X   68,   68,   68,   69,   69,   69,    0,    0,   69,   69,
X   69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
X   69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
X    0,   69,   69,   69,   69,   69,   69,   69,    0,   69,
X    0,    0,   69,   69,   69,   69,   69,   69,   69,   69,
X   69,    0,   69,   69,   69,    0,    0,   69,   69,   69,
X   69,   67,   67,   67,    0,    0,   67,   67,   67,   67,
X   67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
X   67,   67,   67,   67,   67,   67,   67,   67,    0,   67,
X   67,   67,   67,   67,   67,   67,    0,   67,    0,    0,
X   67,   67,   67,   67,   67,   67,   67,   67,   67,    0,
X   67,   67,   67,    0,    0,   67,   67,   67,   67,  141,
X  141,  141,    0,    0,  141,  141,  141,  141,  141,  141,
X  141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
X  141,  141,  141,  141,  141,  141,    0,  141,  141,  141,
X  141,  141,  141,  141,    0,  141,    0,    0,  141,  141,
X  141,  141,  141,  141,  141,  141,  141,    0,  141,  141,
X  141,    0,    0,  141,  141,  141,  141,   63,   63,   63,
X    0,    0,   63,   63,   63,   63,   63,   63,   63,   63,
X   63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
X   63,   63,   63,   63,    0,   63,   63,   63,   63,   63,
X   63,   63,    0,   63,    0,    0,   63,   63,   63,   63,
X   63,   63,   63,   63,   63,    0,   63,   63,   63,    0,
X    0,   63,   63,   63,   63,   64,   64,   64,    0,    0,
X   64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
X   64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
X   64,   64,    0,   64,   64,   64,   64,   64,   64,   64,
X    0,   64,    0,    0,   64,   64,   64,   64,   64,   64,
X   64,   64,   64,    0,   64,   64,   64,    0,    0,   64,
X   64,   64,   64,   65,   65,   65,    0,    0,   65,   65,
X   65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
X   65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
X    0,   65,   65,   65,   65,   65,   65,   65,    0,   65,
X    0,    0,   65,   65,   65,   65,   65,   65,   65,   65,
X   65,    0,   65,   65,   65,    0,    0,   65,   65,   65,
X   65,  111,  111,  111,    0,    0,  111,  111,  111,  110,
X  110,  110,  110,  110,  110,  110,  111,  111,  111,  111,
X  111,  111,  111,  111,  111,  111,  111,  111,    0,  111,
X  111,  111,  111,  111,  111,  111,    0,    0,  111,  111,
X    0,  111,  111,  111,  111,  111,  111,  111,  111,    0,
X  111,  111,  111,    0,    0,  111,  111,  111,  111,  142,
X  142,  142,    0,    0,  142,  142,  142,  142,  142,  142,
X  142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
X  142,  142,  142,  142,  142,  142,    0,  142,  142,  142,
X  142,  142,  142,  142,    0,  142,  142,  142,  142,    0,
X    0,    0,  142,  142,  142,  142,    0,    0,  142,  142,
X  142,    0,    0,  142,  142,  142,  142,  139,  139,  139,
X    0,    0,  139,  139,  139,  139,  139,  139,  139,  139,
X  139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
X  139,  139,  139,  139,    0,  139,  139,  139,  139,  139,
X  139,  139,    0,    0,  139,  139,  139,    0,    0,    0,
X  139,  139,  139,  139,    0,    0,  139,  139,  139,    0,
X    0,  139,  139,  139,  139,   61,   61,   61,    0,    0,
X   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
X   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
X   61,   61,    0,   61,   61,   61,    0,    0,    0,   61,
X    0,   61,    0,    0,   61,   61,   61,   61,   61,   61,
X   61,   61,   61,    0,   61,   61,   61,    0,    0,   61,
X   61,   61,   61,   62,   62,   62,    0,    0,   62,   62,
X   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
X   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
X    0,   62,   62,   62,    0,    0,    0,   62,    0,   62,
X    0,    0,   62,   62,   62,   62,   62,   62,   62,   62,
X   62,    0,   62,   62,   62,    0,    0,   62,   62,   62,
X   62,  121,  121,  121,    0,    0,  121,  121,  121,    0,
X    0,    0,    0,    0,    0,    0,  121,  121,  121,  121,
X  121,  121,  121,  121,  121,  121,  121,  121,    0,  121,
X  121,  121,  121,  121,  121,  121,    0,    0,  121,  121,
X    0,  121,  121,  121,  121,  121,  121,  121,  121,    0,
X  121,  121,  121,    0,    0,  121,  121,  121,  121,   54,
X   54,   54,    0,    0,   54,   54,   54,    0,    0,    0,
X    0,    0,    0,    0,   54,   54,   54,   54,   54,   54,
X   54,   54,   54,   54,   54,   54,    0,   54,    0,    0,
X    0,    0,    0,   54,    0,    0,    0,    0,   54,   54,
X   54,   54,   54,   54,   54,   54,   54,    0,   54,   54,
X   54,    0,    0,   54,   54,   54,   54,   55,   55,   55,
X    0,    0,   55,   55,   55,    0,    0,    0,    0,    0,
X    0,    0,   55,   55,   55,   55,   55,   55,   55,   55,
X   55,   55,   55,   55,    0,   55,    0,   44,   45,    0,
X    0,   55,    0,    0,    0,    0,   55,   55,   55,   55,
X   55,   55,   55,   55,   55,    0,   55,   55,   55,    0,
X    0,   55,   55,   55,   55,    3,    4,    5,    0,    0,
X    0,    6,    0,    0,    0,    0,    7,    8,    9,   10,
X    0,   11,   12,   13,   14,    0,   15,   16,   17,    0,
X    0,   18,   19,   20,   21,   58,    0,    0,   82,    0,
X    0,    0,   75,   75,   75,   75,   75,   75,   75,   58,
X    0,   58,   58,    0,   58,   58,   58,   58,   58,   58,
X   58,    0,   58,   58,   58,   58,   58,   58,   58,  232,
X    0,   58,   58,    0,   58,   58,   58,    0,   58,   58,
X   58,   58,    0,   58,   58,   58,    0,    0,   58,   58,
X   58,   58,    0,    0,    0,    0,    3,    4,    5,    0,
X    0,    0,    6,    0,    0,    0,    0,    7,    8,    9,
X   10,    0,   11,   12,   13,  233,    0,   15,   16,   17,
X    0,    0,   18,   19,   20,   21,   82,    0,    0,    0,
X   75,   75,   75,   75,   75,   75,   75,   58,    0,   58,
X   58,   58,   58,   58,   58,   58,   58,   58,   58,    0,
X   58,   58,   58,   58,   58,   58,   58,    0,    0,   58,
X   58,    0,   58,   58,   58,    0,   58,   58,   58,   58,
X    0,   58,   58,   58,  121,    0,   58,   58,   58,   58,
X    0,    0,    0,  121,    0,  121,  121,  121,  121,  121,
X  121,  121,  121,  121,  121,    0,  121,  121,  121,  121,
X  121,  121,  121,    0,    0,  121,  121,    0,  121,  121,
X  121,    0,  121,  121,  121,  121,    0,  121,  121,  121,
X    0,    0,  121,  121,  121,  121,   32,   32,   32,    0,
X    0,   32,   32,   32,    0,    0,    0,    0,    0,    0,
X    0,   32,   32,   32,   32,   32,   32,   32,   32,   32,
X   32,   32,   32,    0,   39,   39,   39,    0,    0,   39,
X   39,   39,    0,    0,    0,    0,  122,  122,  122,   32,
X   39,  122,  122,  122,  123,  123,  123,    0,    0,  123,
X  123,  123,  122,    0,    0,    0,  124,  124,  124,    0,
X  123,  124,  124,  124,  125,  125,  125,   39,    0,  125,
X  125,  125,  124,    0,    0,    0,  126,  126,  126,  122,
X  125,  126,  126,  126,  127,  127,  127,  123,    0,  127,
X  127,  127,  126,    0,    0,    0,  128,  128,  128,  124,
X  127,  128,  128,  128,   53,   53,   53,  125,    0,   53,
X   53,   53,  128,    0,    0,    0,    0,  177,    0,  126,
X   53,    0,    0,    0,    0,    0,  113,  127,  114,  115,
X  116,  117,  118,  119,  120,  121,  122,  123,    0,  128,
X    0,    0,    0,    0,  295,    0,    0,   53,    0,    0,
X    0,    0,    0,  113,  178,  114,  115,  116,  117,  118,
X  119,  120,  121,  122,  123,    0,    0,    0,    0,    0,
X    0,  318,  104,  105,  106,  107,  108,  109,  110,    0,
X  113,  296,  114,  115,  116,  117,  118,  119,  120,  121,
X  122,  123,  104,  105,  106,  107,  108,  109,  110,    3,
X    4,    5,    0,  111,    0,    6,    0,  176,  319,    0,
X    7,    8,    9,   70,    0,   11,   12,   13,   71,   80,
X   15,   16,   17,  111,    0,   18,   19,   20,   21,    3,
X    4,    5,    0,    0,    0,    6,    0,    0,    0,    0,
X    7,    8,    9,   10,  242,   11,   12,   13,   14,    0,
X   15,   16,   17,    0,    0,   18,   19,   20,   21,    3,
X    4,    5,    0,    0,    0,    6,    0,    0,    0,    0,
X    7,    8,    9,   10,  282,   11,   12,   13,   14,    0,
X   15,   16,   17,    0,    0,   18,   19,   20,   21,    3,
X    4,    5,    0,    0,    0,    6,    0,    0,    0,    0,
X    7,    8,    9,   70,    0,   11,   12,   13,   71,    0,
X   15,   16,   17,    0,    0,   18,   19,   20,   21,    3,
X    4,    5,    0,    0,    0,    6,    0,    0,    0,    0,
X    7,    8,    9,   10,    0,   11,   12,   13,   14,    0,
X   15,   16,   17,    0,    0,   18,   19,   20,   21,    3,
X    4,    5,    0,    0,    0,    6,    0,    0,    0,    0,
X    7,    8,    9,  245,    0,   11,   12,   13,   14,    0,
X   15,   16,   17,    0,    0,   18,   19,   20,   21,    3,
X    4,    5,    0,    0,    0,    6,    0,    0,    0,    0,
X    7,    8,    9,   10,    0,   11,   12,   13,  259,    0,
X   15,   16,   17,    0,    0,   18,   19,   20,   21,  166,
X  166,  166,    0,    0,    0,  166,    0,    0,    0,    0,
X  166,  166,  166,  166,    0,  166,  166,  166,  166,    0,
X  166,  166,  166,    0,    0,  166,  166,  166,  166,  113,
X    0,  114,  115,  116,  117,  118,  119,  120,  121,  122,
X  123,  113,    0,  114,  115,  116,  117,  118,  119,  120,
X  121,  122,  123,    0,    0,    0,  113,  178,  114,  115,
X  116,  117,  118,  119,  120,  121,  122,  123,  113,  270,
X  114,  115,  116,  117,  118,  119,  120,  121,  122,  123,
X    0,    0,    0,  113,  274,  114,  115,  116,  117,  118,
X  119,  120,  121,  122,  123,  113,  277,  114,  115,  116,
X  117,  118,  119,  120,  121,  122,  123,   44,   45,    0,
X    0,  280,    0,    0,    0,    0,    0,    0,    0,    0,
X  241,    0,  113,  323,  114,  115,  116,  117,  118,  119,
X  120,  121,  122,  123,  113,  276,  114,  115,  116,  117,
X  118,  119,  120,  121,  122,  123,    0,    0,    0,  113,
X    0,  114,  115,  116,  117,  118,  119,  120,  121,  122,
X  123,  112,    0,    0,    0,    0,    0,    0,    0,    0,
X  113,    0,  114,  115,  116,  117,  118,  119,  120,  121,
X  122,  123,  263,    0,    0,    0,    0,    0,    0,    0,
X    0,  113,    0,  114,  115,  116,  117,  118,  119,  120,
X  121,  122,  123,  264,    0,    0,    0,    0,    0,    0,
X    0,    0,  113,    0,  114,  115,  116,  117,  118,  119,
X  120,  121,  122,  123,  113,  301,  114,  115,  116,  117,
X  118,  119,  120,  121,  122,  123,  113,    0,  114,  115,
X  116,  117,  118,  119,  120,  121,  122,  123,  115,  116,
X  117,  118,  119,  120,  121,  122,  123,
};
short yycheck[] = {                                       7,
X    0,  278,    4,    5,    6,    7,    8,  265,   10,   59,
X   10,  298,   62,   63,  261,   65,  299,  300,  301,   69,
X    0,  298,  259,  260,  261,   25,   28,  264,  265,  266,
X   32,  301,  265,  222,   42,  259,  260,  274,  275,  276,
X   42,  179,  266,  265,  302,   25,  265,    4,    5,    6,
X  306,    8,  308,  259,  260,   55,   36,   57,  264,  265,
X  266,   41,  259,  260,   64,  302,  259,  260,   70,  302,
X   70,   28,  301,  266,   76,   32,  298,  298,  302,  265,
X  302,  259,  260,  302,  296,  297,   15,   16,  266,   89,
X   90,  259,  260,  261,  265,  265,  302,   97,   98,   99,
X  100,  101,  102,  103,  104,  105,  106,  107,  108,  109,
X  110,   91,   92,  251,  252,  253,  302,  117,  118,  119,
X  120,  121,  122,  123,  126,  127,  128,  129,  130,  318,
X  132,  302,  302,  133,  259,  260,  136,  262,   67,  301,
X  278,  301,   71,  301,  124,   43,  146,  147,   77,  301,
X  150,   80,  301,   51,   52,  264,  265,   55,   56,   57,
X  259,  260,  261,   61,  306,  165,  263,  167,  301,  126,
X  127,  128,  129,  130,  174,  132,  297,  177,  301,  179,
X  264,  265,  182,  183,  280,  281,  282,  283,  284,  285,
X  240,  259,  260,  261,  244,  306,  264,  265,  266,  259,
X  260,  261,  202,  203,  204,  205,  274,  275,  276,  277,
X  278,  279,  259,  260,  222,  264,  265,  264,  265,  266,
X  222,  287,  151,  259,  260,  261,  124,  306,  264,  265,
X  266,  295,  264,  265,  302,  299,  300,  301,  274,  275,
X  276,  277,  306,  245,  295,  245,  264,  265,  259,  260,
X  323,  251,  252,  253,  152,  302,  318,  155,  263,  157,
X  302,  290,  291,  292,  264,  263,  302,  296,  297,  259,
X  260,  271,  299,  300,  301,  259,  260,  261,  278,  306,
X  264,  265,  266,  278,  284,  263,  286,  287,  302,  265,
X  256,  275,  302,  265,  263,  261,  266,  265,  259,  260,
X  261,  245,  301,  264,  265,  266,  302,  183,  300,  306,
X  318,  298,  306,  306,  275,  306,  318,  317,  302,  302,
X  300,  287,  288,  289,  264,  302,   25,  293,  260,  302,
X   -1,  302,  298,  299,  300,  301,   -1,  303,  304,  305,
X  306,  302,  308,  309,  310,   -1,  302,  313,  314,  315,
X  316,  302,   -1,   -1,   -1,  287,  288,  289,   -1,  325,
X  326,  293,   -1,   -1,  330,   -1,  298,  299,  300,  301,
X   -1,  303,  304,  305,  306,   -1,  308,  309,  310,   -1,
X   -1,  313,  314,  315,  316,  256,   -1,  285,  259,  260,
X  261,  262,   -1,  259,  260,  261,   -1,   -1,  264,  265,
X  266,   -1,  300,  288,  289,  290,  291,  292,   -1,  275,
X   -1,  296,  297,   -1,   -1,   -1,  287,  288,  289,   -1,
X   -1,   -1,  293,   -1,  322,  323,   -1,  298,  299,  300,
X  301,   -1,  303,  304,  305,  306,  302,  308,  309,  310,
X  311,  312,  313,  314,  315,  316,  317,  318,  319,  320,
X  321,  322,   -1,  324,   -1,   -1,  327,  328,  329,  256,
X   -1,   -1,  259,  260,  261,  262,   -1,  259,  260,  261,
X   -1,   -1,  264,  265,  266,  278,  279,  280,  281,  282,
X  283,  284,  285,  275,   -1,   -1,   -1,   -1,   -1,   -1,
X  287,  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,
X   -1,  298,  299,  300,  301,   -1,  303,  304,  305,  306,
X  302,  308,  309,  310,  311,  312,  313,  314,  315,  316,
X  317,  318,  319,  320,  321,  322,   -1,  324,   -1,   -1,
X  327,  328,  329,  256,   -1,   -1,  259,  260,  261,   -1,
X   -1,  259,  260,  261,   -1,   -1,  264,  265,  266,   -1,
X  267,  268,  269,  270,  271,  272,  273,  275,   -1,   -1,
X   -1,   -1,   -1,   -1,  287,  288,  289,   -1,   -1,   -1,
X  293,   -1,   -1,   -1,   -1,  298,  299,  300,  301,   -1,
X  303,  304,  305,  306,  302,  308,  309,  310,  311,  312,
X  313,  314,  315,  316,  317,  318,  319,  320,  321,  322,
X   -1,  324,   -1,   -1,  327,  328,  329,  256,   -1,   -1,
X  259,  260,  261,   -1,   -1,  259,  260,  261,   -1,   -1,
X  264,  265,  266,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
X   -1,  275,   -1,   -1,   -1,   -1,   -1,   -1,  287,  288,
X  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,  298,
X  299,  300,  301,   -1,  303,  304,  305,  306,  302,  308,
X  309,  310,  311,  312,  313,  314,  315,  316,  317,  318,
X  319,  320,  321,  322,   -1,  324,   -1,   -1,  327,  328,
X  329,  259,  260,  261,   -1,  263,  264,  265,  266,  267,
X  268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
X  278,  279,  280,  281,  282,  283,  284,  285,   -1,  287,
X  288,  289,  290,  291,  292,  293,   -1,  295,  296,  297,
X  298,  299,  300,  301,  302,  303,  304,  305,  306,   -1,
X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  259,
X  260,  261,   -1,  263,  264,  265,  266,  267,  268,  269,
X  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
X  280,  281,  282,  283,  284,  285,   -1,  287,  288,  289,
X  290,  291,  292,  293,   -1,  295,  296,  297,  298,  299,
X  300,  301,  302,  303,  304,  305,  306,   -1,  308,  309,
X  310,   -1,   -1,  313,  314,  315,  316,  259,  260,  261,
X   -1,  263,  264,  265,  266,  267,  268,  269,  270,  271,
X  272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
X  282,  283,  284,  285,   -1,  287,  288,  289,  290,  291,
X  292,  293,   -1,  295,  296,  297,   -1,  299,  300,  301,
X  302,  303,  304,  305,  306,   -1,  308,  309,  310,   -1,
X   -1,  313,  314,  315,  316,  259,  260,  261,   -1,  263,
X  264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
X  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
X  284,  285,   -1,  287,  288,  289,  290,  291,  292,  293,
X   -1,   -1,  296,  297,   -1,  299,  300,  301,  302,  303,
X  304,  305,  306,   -1,  308,  309,  310,   -1,   -1,  313,
X  314,  315,  316,  259,  260,  261,   -1,   -1,  264,  265,
X  266,  267,  268,  269,  270,  271,  272,  273,  274,  275,
X  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
X   -1,  287,  288,  289,  290,  291,  292,  293,   -1,  295,
X  296,  297,   -1,  299,  300,  301,  302,  303,  304,  305,
X  306,   -1,  308,  309,  310,   -1,   -1,  313,  314,  315,
X  316,  259,  260,  261,   -1,   -1,  264,  265,  266,  267,
X  268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
X  278,  279,  280,  281,  282,  283,  284,  285,   -1,  287,
X  288,  289,  290,  291,  292,  293,   -1,   -1,  296,  297,
X  298,  299,  300,  301,  302,  303,  304,  305,  306,   -1,
X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  259,
X  260,  261,   -1,   -1,  264,  265,  266,  267,  268,  269,
X  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
X  280,  281,  282,  283,  284,  285,   -1,  287,  288,  289,
X  290,  291,  292,  293,   -1,  295,  296,   -1,  298,  299,
X  300,  301,  302,  303,  304,  305,  306,   -1,  308,  309,
X  310,   -1,   -1,  313,  314,  315,  316,  259,  260,  261,
X   -1,   -1,  264,  265,  266,  267,  268,  269,  270,  271,
X  272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
X  282,  283,  284,  285,   -1,  287,  288,  289,  290,  291,
X  292,  293,   -1,  295,  296,  297,   -1,  299,  300,  301,
X  302,  303,  304,  305,  306,   -1,  308,  309,  310,   -1,
X   -1,  313,  314,  315,  316,  259,  260,  261,   -1,   -1,
X  264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
X  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
X  284,  285,   -1,  287,  288,  289,  290,  291,  292,  293,
X   -1,  295,   -1,   -1,  298,  299,  300,  301,  302,  303,
X  304,  305,  306,   -1,  308,  309,  310,   -1,   -1,  313,
X  314,  315,  316,  259,  260,  261,   -1,   -1,  264,  265,
X  266,  267,  268,  269,  270,  271,  272,  273,  274,  275,
X  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
X   -1,  287,  288,  289,  290,  291,  292,  293,   -1,  295,
X   -1,   -1,  298,  299,  300,  301,  302,  303,  304,  305,
X  306,   -1,  308,  309,  310,   -1,   -1,  313,  314,  315,
X  316,  259,  260,  261,   -1,   -1,  264,  265,  266,  267,
X  268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
X  278,  279,  280,  281,  282,  283,  284,  285,   -1,  287,
X  288,  289,  290,  291,  292,  293,   -1,  295,   -1,   -1,
X  298,  299,  300,  301,  302,  303,  304,  305,  306,   -1,
X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  259,
X  260,  261,   -1,   -1,  264,  265,  266,  267,  268,  269,
X  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
X  280,  281,  282,  283,  284,  285,   -1,  287,  288,  289,
X  290,  291,  292,  293,   -1,  295,   -1,   -1,  298,  299,
X  300,  301,  302,  303,  304,  305,  306,   -1,  308,  309,
X  310,   -1,   -1,  313,  314,  315,  316,  259,  260,  261,
X   -1,   -1,  264,  265,  266,  267,  268,  269,  270,  271,
X  272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
X  282,  283,  284,  285,   -1,  287,  288,  289,  290,  291,
X  292,  293,   -1,  295,   -1,   -1,  298,  299,  300,  301,
X  302,  303,  304,  305,  306,   -1,  308,  309,  310,   -1,
X   -1,  313,  314,  315,  316,  259,  260,  261,   -1,   -1,
X  264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
X  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
X  284,  285,   -1,  287,  288,  289,  290,  291,  292,  293,
X   -1,  295,   -1,   -1,  298,  299,  300,  301,  302,  303,
X  304,  305,  306,   -1,  308,  309,  310,   -1,   -1,  313,
X  314,  315,  316,  259,  260,  261,   -1,   -1,  264,  265,
X  266,  267,  268,  269,  270,  271,  272,  273,  274,  275,
X  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
X   -1,  287,  288,  289,  290,  291,  292,  293,   -1,  295,
X   -1,   -1,  298,  299,  300,  301,  302,  303,  304,  305,
X  306,   -1,  308,  309,  310,   -1,   -1,  313,  314,  315,
X  316,  259,  260,  261,   -1,   -1,  264,  265,  266,  267,
X  268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
X  278,  279,  280,  281,  282,  283,  284,  285,   -1,  287,
X  288,  289,  290,  291,  292,  293,   -1,   -1,  296,  297,
X   -1,  299,  300,  301,  302,  303,  304,  305,  306,   -1,
X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  259,
X  260,  261,   -1,   -1,  264,  265,  266,  267,  268,  269,
X  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
X  280,  281,  282,  283,  284,  285,   -1,  287,  288,  289,
X  290,  291,  292,  293,   -1,  295,  296,  297,  298,   -1,
X   -1,   -1,  302,  303,  304,  305,   -1,   -1,  308,  309,
X  310,   -1,   -1,  313,  314,  315,  316,  259,  260,  261,
X   -1,   -1,  264,  265,  266,  267,  268,  269,  270,  271,
X  272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
X  282,  283,  284,  285,   -1,  287,  288,  289,  290,  291,
X  292,  293,   -1,   -1,  296,  297,  298,   -1,   -1,   -1,
X  302,  303,  304,  305,   -1,   -1,  308,  309,  310,   -1,
X   -1,  313,  314,  315,  316,  259,  260,  261,   -1,   -1,
X  264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
X  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
X  284,  285,   -1,  287,  288,  289,   -1,   -1,   -1,  293,
X   -1,  295,   -1,   -1,  298,  299,  300,  301,  302,  303,
X  304,  305,  306,   -1,  308,  309,  310,   -1,   -1,  313,
X  314,  315,  316,  259,  260,  261,   -1,   -1,  264,  265,
X  266,  267,  268,  269,  270,  271,  272,  273,  274,  275,
X  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
X   -1,  287,  288,  289,   -1,   -1,   -1,  293,   -1,  295,
X   -1,   -1,  298,  299,  300,  301,  302,  303,  304,  305,
X  306,   -1,  308,  309,  310,   -1,   -1,  313,  314,  315,
X  316,  259,  260,  261,   -1,   -1,  264,  265,  266,   -1,
X   -1,   -1,   -1,   -1,   -1,   -1,  274,  275,  276,  277,
X  278,  279,  280,  281,  282,  283,  284,  285,   -1,  287,
X  288,  289,  290,  291,  292,  293,   -1,   -1,  296,  297,
X   -1,  299,  300,  301,  302,  303,  304,  305,  306,   -1,
X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  259,
X  260,  261,   -1,   -1,  264,  265,  266,   -1,   -1,   -1,
X   -1,   -1,   -1,   -1,  274,  275,  276,  277,  278,  279,
X  280,  281,  282,  283,  284,  285,   -1,  287,   -1,   -1,
X   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,  298,  299,
X  300,  301,  302,  303,  304,  305,  306,   -1,  308,  309,
X  310,   -1,   -1,  313,  314,  315,  316,  259,  260,  261,
X   -1,   -1,  264,  265,  266,   -1,   -1,   -1,   -1,   -1,
X   -1,   -1,  274,  275,  276,  277,  278,  279,  280,  281,
X  282,  283,  284,  285,   -1,  287,   -1,  259,  260,   -1,
X   -1,  293,   -1,   -1,   -1,   -1,  298,  299,  300,  301,
X  302,  303,  304,  305,  306,   -1,  308,  309,  310,   -1,
X   -1,  313,  314,  315,  316,  287,  288,  289,   -1,   -1,
X   -1,  293,   -1,   -1,   -1,   -1,  298,  299,  300,  301,
X   -1,  303,  304,  305,  306,   -1,  308,  309,  310,   -1,
X   -1,  313,  314,  315,  316,  260,   -1,   -1,  263,   -1,
X   -1,   -1,  267,  268,  269,  270,  271,  272,  273,  274,
X   -1,  276,  277,   -1,  279,  280,  281,  282,  283,  284,
X  285,   -1,  287,  288,  289,  290,  291,  292,  293,  260,
X   -1,  296,  297,   -1,  299,  300,  301,   -1,  303,  304,
X  305,  306,   -1,  308,  309,  310,   -1,   -1,  313,  314,
X  315,  316,   -1,   -1,   -1,   -1,  287,  288,  289,   -1,
X   -1,   -1,  293,   -1,   -1,   -1,   -1,  298,  299,  300,
X  301,   -1,  303,  304,  305,  306,   -1,  308,  309,  310,
X   -1,   -1,  313,  314,  315,  316,  263,   -1,   -1,   -1,
X  267,  268,  269,  270,  271,  272,  273,  274,   -1,  276,
X  277,  278,  279,  280,  281,  282,  283,  284,  285,   -1,
X  287,  288,  289,  290,  291,  292,  293,   -1,   -1,  296,
X  297,   -1,  299,  300,  301,   -1,  303,  304,  305,  306,
X   -1,  308,  309,  310,  265,   -1,  313,  314,  315,  316,
X   -1,   -1,   -1,  274,   -1,  276,  277,  278,  279,  280,
X  281,  282,  283,  284,  285,   -1,  287,  288,  289,  290,
X  291,  292,  293,   -1,   -1,  296,  297,   -1,  299,  300,
X  301,   -1,  303,  304,  305,  306,   -1,  308,  309,  310,
X   -1,   -1,  313,  314,  315,  316,  259,  260,  261,   -1,
X   -1,  264,  265,  266,   -1,   -1,   -1,   -1,   -1,   -1,
X   -1,  274,  275,  276,  277,  278,  279,  280,  281,  282,
X  283,  284,  285,   -1,  259,  260,  261,   -1,   -1,  264,
X  265,  266,   -1,   -1,   -1,   -1,  259,  260,  261,  302,
X  275,  264,  265,  266,  259,  260,  261,   -1,   -1,  264,
X  265,  266,  275,   -1,   -1,   -1,  259,  260,  261,   -1,
X  275,  264,  265,  266,  259,  260,  261,  302,   -1,  264,
X  265,  266,  275,   -1,   -1,   -1,  259,  260,  261,  302,
X  275,  264,  265,  266,  259,  260,  261,  302,   -1,  264,
X  265,  266,  275,   -1,   -1,   -1,  259,  260,  261,  302,
X  275,  264,  265,  266,  259,  260,  261,  302,   -1,  264,
X  265,  266,  275,   -1,   -1,   -1,   -1,  265,   -1,  302,
X  275,   -1,   -1,   -1,   -1,   -1,  274,  302,  276,  277,
X  278,  279,  280,  281,  282,  283,  284,  285,   -1,  302,
X   -1,   -1,   -1,   -1,  265,   -1,   -1,  302,   -1,   -1,
X   -1,   -1,   -1,  274,  302,  276,  277,  278,  279,  280,
X  281,  282,  283,  284,  285,   -1,   -1,   -1,   -1,   -1,
X   -1,  265,  267,  268,  269,  270,  271,  272,  273,   -1,
X  274,  302,  276,  277,  278,  279,  280,  281,  282,  283,
X  284,  285,  267,  268,  269,  270,  271,  272,  273,  287,
X  288,  289,   -1,  298,   -1,  293,   -1,  302,  302,   -1,
X  298,  299,  300,  301,   -1,  303,  304,  305,  306,  307,
X  308,  309,  310,  298,   -1,  313,  314,  315,  316,  287,
X  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,
X  298,  299,  300,  301,  302,  303,  304,  305,  306,   -1,
X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  287,
X  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,
X  298,  299,  300,  301,  302,  303,  304,  305,  306,   -1,
X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  287,
X  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,
X  298,  299,  300,  301,   -1,  303,  304,  305,  306,   -1,
X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  287,
X  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,
X  298,  299,  300,  301,   -1,  303,  304,  305,  306,   -1,
X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  287,
X  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,
X  298,  299,  300,  301,   -1,  303,  304,  305,  306,   -1,
X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  287,
X  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,
X  298,  299,  300,  301,   -1,  303,  304,  305,  306,   -1,
X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  287,
X  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,
X  298,  299,  300,  301,   -1,  303,  304,  305,  306,   -1,
X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  274,
X   -1,  276,  277,  278,  279,  280,  281,  282,  283,  284,
X  285,  274,   -1,  276,  277,  278,  279,  280,  281,  282,
X  283,  284,  285,   -1,   -1,   -1,  274,  302,  276,  277,
X  278,  279,  280,  281,  282,  283,  284,  285,  274,  302,
X  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
X   -1,   -1,   -1,  274,  302,  276,  277,  278,  279,  280,
X  281,  282,  283,  284,  285,  274,  302,  276,  277,  278,
X  279,  280,  281,  282,  283,  284,  285,  259,  260,   -1,
X   -1,  302,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
X  260,   -1,  274,  302,  276,  277,  278,  279,  280,  281,
X  282,  283,  284,  285,  274,  260,  276,  277,  278,  279,
X  280,  281,  282,  283,  284,  285,   -1,   -1,   -1,  274,
X   -1,  276,  277,  278,  279,  280,  281,  282,  283,  284,
X  285,  265,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
X  274,   -1,  276,  277,  278,  279,  280,  281,  282,  283,
X  284,  285,  265,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
X   -1,  274,   -1,  276,  277,  278,  279,  280,  281,  282,
X  283,  284,  285,  265,   -1,   -1,   -1,   -1,   -1,   -1,
X   -1,   -1,  274,   -1,  276,  277,  278,  279,  280,  281,
X  282,  283,  284,  285,  274,  275,  276,  277,  278,  279,
X  280,  281,  282,  283,  284,  285,  274,   -1,  276,  277,
X  278,  279,  280,  281,  282,  283,  284,  285,  277,  278,
X  279,  280,  281,  282,  283,  284,  285,
};
#define YYFINAL 25
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 330
#if YYDEBUG
char *yyname[] = {
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"UNEXPECTED","BAD_DECIMAL","NL",
"SEMI_COLON","LBRACE","RBRACE","LBOX","RBOX","COMMA","IO_OUT","ASSIGN",
"ADD_ASG","SUB_ASG","MUL_ASG","DIV_ASG","MOD_ASG","POW_ASG","QMARK","COLON",
"OR","AND","IN","MATCH","EQ","NEQ","LT","LTE","GT","GTE","CAT","GETLINE","PLUS",
"MINUS","MUL","DIV","MOD","NOT","UMINUS","IO_IN","PIPE","POW","INC_or_DEC",
"DOLLAR","FIELD","LPAREN","RPAREN","DOUBLE","STRING_","RE","ID","D_ID",
"FUNCT_ID","BUILTIN","LENGTH","PRINT","PRINTF","SPLIT","MATCH_FUNC","SUB",
"GSUB","DO","WHILE","FOR","BREAK","CONTINUE","IF","ELSE","DELETE","BEGIN","END",
"EXIT","NEXT","RETURN","FUNCTION",
};
char *yyrule[] = {
"$accept : program",
"program : program_block",
"program : program program_block",
"program_block : PA_block",
"program_block : function_def",
"program_block : outside_error block",
"PA_block : block",
"$$1 :",
"PA_block : BEGIN $$1 block",
"$$2 :",
"PA_block : END $$2 block",
"$$3 :",
"PA_block : expr $$3 block_or_separator",
"$$4 :",
"$$5 :",
"PA_block : expr COMMA $$4 expr $$5 block_or_separator",
"block : LBRACE statement_list RBRACE",
"block : LBRACE error RBRACE",
"block_or_separator : block",
"block_or_separator : separator",
"statement_list : statement",
"statement_list : statement_list statement",
"statement : block",
"statement : expr separator",
"statement : separator",
"statement : error separator",
"statement : BREAK separator",
"statement : CONTINUE separator",
"statement : return_statement",
"statement : NEXT separator",
"separator : NL",
"separator : SEMI_COLON",
"expr : cat_expr",
"expr : lvalue ASSIGN expr",
"expr : lvalue ADD_ASG expr",
"expr : lvalue SUB_ASG expr",
"expr : lvalue MUL_ASG expr",
"expr : lvalue DIV_ASG expr",
"expr : lvalue MOD_ASG expr",
"expr : lvalue POW_ASG expr",
"expr : expr EQ expr",
"expr : expr NEQ expr",
"expr : expr LT expr",
"expr : expr LTE expr",
"expr : expr GT expr",
"expr : expr GTE expr",
"expr : expr MATCH expr",
"$$6 :",
"expr : expr OR $$6 expr",
"$$7 :",
"expr : expr AND $$7 expr",
"$$8 :",
"$$9 :",
"expr : expr QMARK $$8 expr COLON $$9 expr",
"cat_expr : p_expr",
"cat_expr : cat_expr p_expr",
"p_expr : DOUBLE",
"p_expr : STRING_",
"p_expr : ID",
"p_expr : LPAREN expr RPAREN",
"p_expr : RE",
"p_expr : p_expr PLUS p_expr",
"p_expr : p_expr MINUS p_expr",
"p_expr : p_expr MUL p_expr",
"p_expr : p_expr DIV p_expr",
"p_expr : p_expr MOD p_expr",
"p_expr : p_expr POW p_expr",
"p_expr : NOT p_expr",
"p_expr : PLUS p_expr",
"p_expr : MINUS p_expr",
"p_expr : builtin",
"p_expr : ID INC_or_DEC",
"p_expr : INC_or_DEC lvalue",
"p_expr : field INC_or_DEC",
"p_expr : INC_or_DEC field",
"lvalue : ID",
"arglist :",
"arglist : args",
"args : expr",
"args : args COMMA expr",
"builtin : BUILTIN mark LPAREN arglist RPAREN",
"builtin : LENGTH",
"mark :",
"statement : print mark pr_args pr_direction separator",
"print : PRINT",
"print : PRINTF",
"pr_args : arglist",
"pr_args : LPAREN arg2 RPAREN",
"pr_args : LPAREN RPAREN",
"arg2 : expr COMMA expr",
"arg2 : arg2 COMMA expr",
"pr_direction :",
"pr_direction : IO_OUT expr",
"if_front : IF LPAREN expr RPAREN",
"statement : if_front statement",
"else : ELSE",
"statement : if_front statement else statement",
"do : DO",
"statement : do statement WHILE LPAREN expr RPAREN separator",
"while_front : WHILE LPAREN expr RPAREN",
"statement : while_front statement",
"statement : for1 for2 for3 statement",
"for1 : FOR LPAREN SEMI_COLON",
"for1 : FOR LPAREN expr SEMI_COLON",
"for2 : SEMI_COLON",
"for2 : expr SEMI_COLON",
"for3 : RPAREN",
"for3 : expr RPAREN",
"expr : expr IN ID",
"expr : LPAREN arg2 RPAREN IN ID",
"lvalue : ID mark LBOX args RBOX",
"p_expr : ID mark LBOX args RBOX",
"p_expr : ID mark LBOX args RBOX INC_or_DEC",
"statement : DELETE ID mark LBOX args RBOX separator",
"array_loop_front : FOR LPAREN ID IN ID RPAREN",
"statement : array_loop_front statement",
"field : FIELD",
"field : DOLLAR D_ID",
"field : DOLLAR D_ID mark LBOX args RBOX",
"field : DOLLAR p_expr",
"field : LPAREN field RPAREN",
"p_expr : field",
"expr : field ASSIGN expr",
"expr : field ADD_ASG expr",
"expr : field SUB_ASG expr",
"expr : field MUL_ASG expr",
"expr : field DIV_ASG expr",
"expr : field MOD_ASG expr",
"expr : field POW_ASG expr",
"p_expr : split_front split_back",
"split_front : SPLIT LPAREN expr COMMA ID",
"split_back : RPAREN",
"split_back : COMMA expr RPAREN",
"p_expr : MATCH_FUNC LPAREN expr COMMA re_arg RPAREN",
"re_arg : expr",
"statement : EXIT separator",
"statement : EXIT expr separator",
"return_statement : RETURN separator",
"return_statement : RETURN expr separator",
"p_expr : getline",
"p_expr : getline fvalue",
"p_expr : getline_file p_expr",
"p_expr : p_expr PIPE GETLINE",
"p_expr : p_expr PIPE GETLINE fvalue",
"getline : GETLINE",
"fvalue : lvalue",
"fvalue : field",
"getline_file : getline IO_IN",
"getline_file : getline fvalue IO_IN",
"p_expr : sub_or_gsub LPAREN re_arg COMMA expr sub_back",
"sub_or_gsub : SUB",
"sub_or_gsub : GSUB",
"sub_back : RPAREN",
"sub_back : COMMA fvalue RPAREN",
"function_def : funct_start block",
"funct_start : funct_head LPAREN f_arglist RPAREN",
"funct_head : FUNCTION ID",
"funct_head : FUNCTION FUNCT_ID",
"f_arglist :",
"f_arglist : f_args",
"f_args : ID",
"f_args : f_args COMMA ID",
"outside_error : error",
"p_expr : FUNCT_ID mark call_args",
"call_args : LPAREN RPAREN",
"call_args : ca_front ca_back",
"ca_front : LPAREN",
"ca_front : ca_front expr COMMA",
"ca_front : ca_front ID COMMA",
"ca_back : expr RPAREN",
"ca_back : ID RPAREN",
};
#endif
#ifdef  YYPURE
#undef  YYGLOBAL
#define YYLEX()	yylex(&yylval)
#else
#define YYLEX()	yylex()
#endif
X
#define yyclearin (yychar=(-1))
#define yyerrok (yyerrflag=0)
#ifdef YYSTACKSIZE
#ifndef YYMAXDEPTH
#define YYMAXDEPTH YYSTACKSIZE
#endif
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 500
#define YYMAXDEPTH 500
#endif
#endif
int yydebug;
#ifndef  YYPURE
YYSTYPE yylval;
#endif
X
#ifdef  YYGLOBAL
int yynerrs;
int yyerrflag;
int yychar;
short *yyssp;
YYSTYPE *yyvsp;
YYSTYPE yyval;
short yyss[YYSTACKSIZE];
YYSTYPE yyvs[YYSTACKSIZE];
#endif
#define yystacksize YYSTACKSIZE
#line 1066 "parse.y"
X
/* resize the code for a user function */
X
static void  resize_fblock( fbp, code_ptr )
X  FBLOCK *fbp ;
X  INST *code_ptr ;
{ int size ;
X
X  code1(_RET0) ; /* make sure there is always a return statement */
X
#if !SM_DOS
X  if ( dump_code )  
X  { code1(_HALT) ; /*stops da() */
X    add_to_fdump_list(fbp) ;
X  }
#endif
X
X  if ( (size = code_ptr - fbp->code) > PAGE_SZ-1 )
X        overflow("function code size", PAGE_SZ ) ;
X
X  /* resize the code */
X  fbp->code = (INST*) zrealloc(fbp->code, PAGE_SZ*sizeof(INST),
X                       size * sizeof(INST) ) ;
X
}
X
X
/* convert FE_PUSHA  to  FE_PUSHI
X   or F_PUSH to F_PUSHI
*/
X
static void  field_A2I()
{ CELL *cp ;
X
X  if ( code_ptr[-1].op == FE_PUSHA &&
X       code_ptr[-1].ptr == (PTR) 0)
X  /* On most architectures, the two tests are the same; a good
X     compiler might eliminate one.  On LM_DOS, and possibly other
X     segmented architectures, they are not */
X  { code_ptr[-1].op = FE_PUSHI ; }
X  else
X  {
X    cp = (CELL *) code_ptr[-1].ptr ;
X
X    if ( cp == field  ||
X
#if  LM_DOS
X	 SAMESEG(cp,field) &&
#endif
X         cp > NF && cp <= LAST_PFIELD )
X    {
X         code_ptr[-2].op = _PUSHI  ;
X    }
X    else if ( cp == NF )
X    { code_ptr[-2].op = NF_PUSHI ; code_ptr-- ; }
X
X    else
X    { 
X      code_ptr[-2].op = F_PUSHI ;
X      code_ptr -> op = field_addr_to_index( code_ptr[-1].ptr ) ;
X      code_ptr++ ;
X    }
X  }
}
X
/* we've seen an ID in a context where it should be a VAR,
X   check that's consistent with previous usage */
X
static void check_var( p )
X  register SYMTAB *p ;
{
X      switch(p->type)
X      {
X        case ST_NONE : /* new id */
X            p->type = ST_VAR ;
X            p->stval.cp = new_CELL() ;
X            p->stval.cp->type = C_NOINIT ;
X            break ;
X
X        case ST_LOCAL_NONE :
X            p->type = ST_LOCAL_VAR ;
X            active_funct->typev[p->offset] = ST_LOCAL_VAR ;
X            break ;
X
X        case ST_VAR :
X        case ST_LOCAL_VAR :  break ;
X
X        default :
X            type_error(p) ;
X            break ;
X      }
}
X
/* we've seen an ID in a context where it should be an ARRAY,
X   check that's consistent with previous usage */
static  void  check_array(p)
X  register SYMTAB *p ;
{
X      switch(p->type)
X      {
X        case ST_NONE :  /* a new array */
X            p->type = ST_ARRAY ;
X            p->stval.array = new_ARRAY() ;
X            break ;
X
X        case  ST_ARRAY :
X        case  ST_LOCAL_ARRAY :
X            break ;
X
X        case  ST_LOCAL_NONE  :
X            p->type = ST_LOCAL_ARRAY ;
X            active_funct->typev[p->offset] = ST_LOCAL_ARRAY ;
X            break ;
X
X        default : type_error(p) ; break ;
X      }
}
X
static void code_array(p)
X  register SYMTAB *p ;
{ if ( is_local(p) )
X  { code1(LA_PUSHA) ; code1(p->offset) ; }
X  else  code2(A_PUSHA, p->stval.array) ;
}
X
X
static  int  current_offset()
{
X  switch( scope )
X  { 
X    case  SCOPE_MAIN :  return code_ptr - main_start ;
X    case  SCOPE_BEGIN :  return code_ptr - begin_code.start ;
X    case  SCOPE_END   :  return code_ptr - end_code.start ;
X    case  SCOPE_FUNCT :  return code_ptr - active_funct->code ;
X  }
X  /* can't get here */
X  return 0 ;
}
X
/* we've seen an ID as an argument to a user defined function */
X
static void  code_call_id( p, ip )
X  register CA_REC *p ;
X  register SYMTAB *ip ;
{ static CELL dummy ;
X
X  switch( ip->type )
X  {
X    case  ST_VAR  :
X            p->type = CA_EXPR ;
X            code2(_PUSHI, ip->stval.cp) ;
X            break ;
X
X    case  ST_LOCAL_VAR  :
X            p->type = CA_EXPR ;
X            code1(L_PUSHI) ;
X            code1(ip->offset) ;
X            break ;
X
X    case  ST_ARRAY  :
X            p->type = CA_ARRAY ;
X            code2(A_PUSHA, ip->stval.array) ;
X            break ;
X
X    case  ST_LOCAL_ARRAY :
X            p->type = CA_ARRAY ;
X            code1(LA_PUSHA) ;
X            code1(ip->offset) ;
X            break ;
X
X    /* not enough info to code it now; it will have to
X       be patched later */
X
X    case  ST_NONE :
X            p->type = ST_NONE ;
X            p->call_offset = current_offset() ;
X            p->sym_p = ip ;
X            code2(_PUSHI, &dummy) ;
X            break ;
X
X    case  ST_LOCAL_NONE :
X            p->type = ST_LOCAL_NONE ;
X            p->call_offset = current_offset() ;
X            p->type_p = & active_funct->typev[ip->offset] ;
X            code1(L_PUSHI) ; 
X            code1(ip->offset) ;
X            break ;
X
X  
#ifdef   DEBUG
X    default :
X            bozo("code_call_id") ;
#endif
X
X  }
}
X
/* an RE by itself was coded as _MATCH0 , change to
X   push as an expression */
X
static void RE_as_arg()
{ CELL *cp = ZMALLOC(CELL) ;
X
X  code_ptr -= 2 ;
X  cp->type = C_RE ;
X  cp->ptr = code_ptr[1].ptr ;
X  code2(_PUSHC, cp) ;
}
X
X
int parse()
{ int yy = yyparse() ;
X
#if  YYBYACC
X  extern struct yacc_mem *yacc_memp ;
X
X  yacc_memp++  ; /* puts parser tables in mem pool */
#endif
X
X  if ( resolve_list )  resolve_fcalls() ;
X  return yy ;
}
X
#line 1349 "y.tab.c"
#define YYABORT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
int
yyparse()
{
X    register int yyn, yystate;
X    int yym ;
#ifdef  YYPURE
X    YYSTYPE yylval ;
#endif
X
#ifndef  YYGLOBAL
X    int yynerrs;
X    int yyerrflag;
X    int yychar;
X    register short *yyssp;
X    register YYSTYPE *yyvsp;
X    YYSTYPE yyval;
X    short yyss[YYSTACKSIZE];
X    YYSTYPE yyvs[YYSTACKSIZE];
#endif
#if YYDEBUG
X    register char *yys;
X    extern char *getenv();
X
X    if (yys = getenv("YYDEBUG"))
X    {
X        yyn = *yys;
X        if (yyn >= '0' && yyn <= '9')
X            yydebug = yyn - '0';
X    }
#endif
X
X    yynerrs = 0;
X    yyerrflag = 0;
X    yychar = (-1);
X
X    yyssp = yyss;
X    yyvsp = yyvs;
X    *yyssp = yystate = 0;
X
yyloop:
X    if (yyn = yydefred[yystate]) goto yyreduce;
X    if (yychar < 0)
X    {
X        if ((yychar = YYLEX()) < 0) yychar = 0;
#if YYDEBUG
X        if (yydebug)
X        {
X            yys = 0;
X            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
X            if (!yys) yys = "illegal-symbol";
X            printf("yydebug: state %d, reading %d (%s)\n", yystate,
X                    yychar, yys);
X        }
#endif
X    }
X    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
X            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
X    {
#if YYDEBUG
X        if (yydebug)
X            printf("yydebug: state %d, shifting to state %d\n",
X                    yystate, yytable[yyn]);
#endif
X        if (yyssp >= yyss + yystacksize - 1)
X        {
X            goto yyoverflow;
X        }
X        *++yyssp = yystate = yytable[yyn];
X        *++yyvsp = yylval;
X        yychar = (-1);
X        if (yyerrflag > 0)  --yyerrflag;
X        goto yyloop;
X    }
X    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
X            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
X    {
X        yyn = yytable[yyn];
X        goto yyreduce;
X    }
X    if (yyerrflag) goto yyinrecovery;
#ifdef lint
X    goto yynewerror;
#endif
yynewerror:
X    yyerror("syntax error");
#ifdef lint
X    goto yyerrlab;
#endif
yyerrlab:
X    ++yynerrs;
yyinrecovery:
X    if (yyerrflag < 3)
X    {
X        yyerrflag = 3;
X        for (;;)
X        {
X            if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
X                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
X            {
#if YYDEBUG
X                if (yydebug)
X                    printf("yydebug: state %d, error recovery shifting\
X to state %d\n", *yyssp, yytable[yyn]);
#endif
X                if (yyssp >= yyss + yystacksize - 1)
X                {
X                    goto yyoverflow;
X                }
X                *++yyssp = yystate = yytable[yyn];
X                *++yyvsp = yylval;
X                goto yyloop;
X            }
X            else
X            {
#if YYDEBUG
X                if (yydebug)
X                    printf("yydebug: error recovery discarding state %d\n",
X                            *yyssp);
#endif
X                if (yyssp <= yyss) goto yyabort;
X                --yyssp;
X                --yyvsp;
X            }
X        }
X    }
X    else
X    {
X        if (yychar == 0) goto yyabort;
#if YYDEBUG
X        if (yydebug)
X        {
X            yys = 0;
X            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
X            if (!yys) yys = "illegal-symbol";
X            printf("yydebug: state %d, error recovery discards token %d (%s)\n",
X                    yystate, yychar, yys);
X        }
#endif
X        yychar = (-1);
X        goto yyloop;
X    }
yyreduce:
#if YYDEBUG
X    if (yydebug)
X        printf("yydebug: state %d, reducing by rule %d (%s)\n",
X                yystate, yyn, yyrule[yyn]);
#endif
X    yym = yylen[yyn];
X    yyval = yyvsp[1-yym];
X    switch (yyn)
X    {
case 6:
#line 160 "parse.y"
{ /* this do nothing action removes a vacuous warning
X                  from Bison */
X             }
break;
case 7:
#line 165 "parse.y"
{ 
X		  be_expand(&begin_code) ;
X                  scope = SCOPE_BEGIN ;
X                }
break;
case 8:
#line 171 "parse.y"
{ be_shrink(&begin_code) ;
X                  scope = SCOPE_MAIN ;
X                }
break;
case 9:
#line 176 "parse.y"
{ 
X		  be_expand(&end_code) ;
X                  scope = SCOPE_END ;
X                }
break;
case 10:
#line 182 "parse.y"
{ be_shrink(&end_code) ;
X                  scope = SCOPE_MAIN ;
X                }
break;
case 11:
#line 187 "parse.y"
{ code_jmp(_JZ, (INST*)0) ; }
break;
case 12:
#line 190 "parse.y"
{ patch_jmp( code_ptr ) ; }
break;
case 13:
#line 194 "parse.y"
{ code_push(yyvsp[-1].start, code_ptr - yyvsp[-1].start) ;
X               code_ptr = yyvsp[-1].start ;
X               code1(_RANGE) ; code1(1) ;
X               code_ptr += 3 ;
X               code_ptr += code_pop(code_ptr) ;
X               code1(_STOP) ;
X               yyvsp[-1].start[2].op = code_ptr - (yyvsp[-1].start+1) ;
X             }
break;
case 14:
#line 203 "parse.y"
{ code1(_STOP) ; }
break;
case 15:
#line 206 "parse.y"
{ yyvsp[-5].start[3].op = yyvsp[0].start - (yyvsp[-5].start+1) ;
X               yyvsp[-5].start[4].op = code_ptr - (yyvsp[-5].start+1) ;
X             }
break;
case 16:
#line 214 "parse.y"
{ yyval.start = yyvsp[-1].start ; }
break;
case 17:
#line 216 "parse.y"
{ yyval.start = code_ptr ; /* does nothing won't be executed */
X              print_flag = getline_flag = paren_cnt = 0 ;
X              yyerrok ; }
break;
case 19:
#line 223 "parse.y"
{ yyval.start = code_ptr ;
X                       code1(_PUSHINT) ; code1(0) ;
X                       code2(_PRINT, bi_print) ;
X                     }
break;
case 23:
#line 235 "parse.y"
{ code1(_POP) ; }
break;
case 24:
#line 237 "parse.y"
{ yyval.start = code_ptr ; }
break;
case 25:
#line 239 "parse.y"
{ yyval.start = code_ptr ;
X                print_flag = getline_flag = 0 ;
X                paren_cnt = 0 ;
X                yyerrok ;
X              }
break;
case 26:
#line 245 "parse.y"
{ yyval.start = code_ptr ; BC_insert('B', code_ptr+1) ;
X               code2(_JMP, 0) /* don't use code_jmp ! */ ; }
break;
case 27:
#line 248 "parse.y"
{ yyval.start = code_ptr ; BC_insert('C', code_ptr+1) ;
X               code2(_JMP, 0) ; }
break;
case 28:
#line 251 "parse.y"
{ if ( scope != SCOPE_FUNCT )
X                     compile_error("return outside function body") ;
X             }
break;
case 29:
#line 255 "parse.y"
{ if ( scope != SCOPE_MAIN )
X                   compile_error( "improper use of next" ) ;
X                yyval.start = code_ptr ; 
X                code1(_NEXT) ;
X              }
break;
case 33:
#line 266 "parse.y"
{ code1(_ASSIGN) ; }
break;
case 34:
#line 267 "parse.y"
{ code1(_ADD_ASG) ; }
break;
case 35:
#line 268 "parse.y"
{ code1(_SUB_ASG) ; }
break;
case 36:
#line 269 "parse.y"
{ code1(_MUL_ASG) ; }
break;
case 37:
#line 270 "parse.y"
{ code1(_DIV_ASG) ; }
break;
case 38:
#line 271 "parse.y"
{ code1(_MOD_ASG) ; }
break;
case 39:
#line 272 "parse.y"
{ code1(_POW_ASG) ; }
break;
case 40:
#line 273 "parse.y"
{ code1(_EQ) ; }
break;
case 41:
#line 274 "parse.y"
{ code1(_NEQ) ; }
break;
case 42:
#line 275 "parse.y"
{ code1(_LT) ; }
break;
case 43:
#line 276 "parse.y"
{ code1(_LTE) ; }
break;
case 44:
#line 277 "parse.y"
{ code1(_GT) ; }
break;
case 45:
#line 278 "parse.y"
{ code1(_GTE) ; }
break;
case 46:
#line 281 "parse.y"
{
X            if ( yyvsp[0].start == code_ptr - 2 )
X            {
X               if ( yyvsp[0].start->op == _MATCH0 )  yyvsp[0].start->op = _MATCH1 ;
X
X               else /* check for string */
X               if ( yyvsp[0].start->op == _PUSHS )
X               { CELL *cp = ZMALLOC(CELL) ;
X
X                 cp->type = C_STRING ; 
X                 cp->ptr = yyvsp[0].start[1].ptr ;
X                 cast_to_RE(cp) ;
X                 code_ptr -= 2 ;
X                 code2(_MATCH1, cp->ptr) ;
X                 ZFREE(cp) ;
X               }
X               else  code1(_MATCH2) ;
X            }
X            else code1(_MATCH2) ;
X
X            if ( !yyvsp[-1].ival ) code1(_NOT) ;
X          }
break;
case 47:
#line 306 "parse.y"
{ code1(_DUP) ;
X                code_jmp(_JNZ, (INST*)0) ;
X                code1(_POP) ;
X              }
break;
case 48:
#line 311 "parse.y"
{ patch_jmp(code_ptr) ; code1(_TEST) ; }
break;
case 49:
#line 314 "parse.y"
{ code1(_DUP) ; code_jmp(_JZ, (INST*)0) ;
X                code1(_POP) ; }
break;
case 50:
#line 317 "parse.y"
{ patch_jmp(code_ptr) ; code1(_TEST) ; }
break;
case 51:
#line 319 "parse.y"
{ code_jmp(_JZ, (INST*)0) ; }
break;
case 52:
#line 320 "parse.y"
{ code_jmp(_JMP, (INST*)0) ; }
SHAR_EOF
true || echo 'restore of Xparse.c failed'
fi
echo 'End of  part 3'
echo 'File Xparse.c is continued in part 4'
echo 4 > _shar_seq_.tmp
exit 0

exit 0 # Just in case...
-- 
        Andrew Patrick acting as Comp.Sources.Reviewed Moderator
              Department of Communications, Ottawa, CANADA
                         csr@calvin.dgbt.doc.CA
Technical Details
Message-ID: <1992Oct13.221405.10112@rick.dgbt.doc.ca>
Path: arc1-ca.pugleaf.net!sparky!uunet!sun-barr!ames!haven.umd.edu!darwin.sura.net!convex!news.utdallas.edu!corpgate!bnrgate!nrcnet0!dgbt!rick.dgbt.doc.ca!calvin.dgbt.doc.ca!csr

Show Full Headers
Complete Article Headers
Newsgroups: comp.sources.reviewed
Path: arc1-ca.pugleaf.net!sparky!uunet!sun-barr!ames!haven.umd.edu!darwin.sura.net!convex!news.utdallas.edu!corpgate!bnrgate!nrcnet0!dgbt!rick.dgbt.doc.ca!calvin.dgbt.doc.ca!csr
From: Mike Brennan <brennan@boeing.com>
Subject: v02i030: mawk - (Ver. 1.1) An interpreter for the AWK language, Patch02c/4
Message-ID: <1992Oct13.221405.10112@rick.dgbt.doc.ca>
Originator: csr@calvin.dgbt.doc.ca
Sender: news@rick.dgbt.doc.ca
Nntp-Posting-Host: calvin.dgbt.doc.ca
Organization: Communications Research Centre, Ottawa
Date: Tue, 13 Oct 1992 22:14:05 GMT
Approved: csr@calvin.dgbt.doc.ca
Lines: 1527