Article View: comp.sources.reviewed
Article #26v02i030: mawk - (Ver. 1.1) An interpreter for the AWK language, Patch02c/4
From: Mike Brennan
Date: Tue, 13 Oct 1992 22:14
Date: Tue, 13 Oct 1992 22:14
1527 lines
63617 bytes
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!csrShow 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