home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
perlkt40.zip
/
A2P.C
< prev
next >
Wrap
C/C++ Source or Header
|
1996-06-13
|
41KB
|
1,261 lines
#line 1 "c:/home/bin/kmyacc.par"
/* -*-c-*- KM-yacc parser model file (standard version) */
/* -p option renames following identifiers */
/* User declarations and token definitions */
#line 1 "a2p.y"
/* $RCSfile: a2p.y,v $$Revision: 4.0.1.2 $$Date: 92/06/08 16:13:03 $
Copyright (c) 1991, Larry Wall
You may distribute under the terms of either the GNU General Public
License or the Artistic License, as specified in the README file.
$Log: a2p.y,v $
Revision 4.0.1.2 92/06/08 16:13:03 lwall
patch20: in a2p, getline should allow variable to be array element
Revision 4.0.1.1 91/06/07 12:12:41 lwall
patch4: new copyright notice
Revision 4.0 91/03/20 01:57:21 lwall
4.0 baseline.
*/
#include "INTERN.h"
#include "a2p.h"
int root;
int begins = Nullop;
int ends = Nullop;
#ifndef YYSTYPE
#define YYSTYPE int
#endif
#define YYERRTOK 256
#define BEGIN 257
#define END 258
#define REGEX 259
#define SEMINEW 260
#define NEWLINE 261
#define COMMENT 262
#define FUN1 263
#define FUNN 264
#define GRGR 265
#define PRINT 266
#define PRINTF 267
#define SPRINTF 268
#define SPLIT 269
#define IF 270
#define ELSE 271
#define WHILE 272
#define FOR 273
#define IN 274
#define EXIT 275
#define NEXT 276
#define BREAK 277
#define CONTINUE 278
#define RET 279
#define GETLINE 280
#define DO 281
#define SUB 282
#define GSUB 283
#define MATCH 284
#define FUNCTION 285
#define USERFUN 286
#define DELETE 287
#define ASGNOP 288
#define OROR 289
#define ANDAND 290
#define NUMBER 291
#define VAR 292
#define SUBSTR 293
#define INDEX 294
#define MATCHOP 295
#define RELOP 296
#define OR 297
#define STRING 298
#define UMINUS 299
#define NOT 300
#define INCR 301
#define DECR 302
#define FIELD 303
#define VFIELD 304
#line 12 "c:/home/bin/kmyacc.par"
#ifndef YYMAXDEPTH
# define YYMAXDEPTH 200
#endif /* !YYMAXDEPTH */
#ifndef YYASP
# define YYASP(n) yyasp[-n]
#endif /* !YYASP */
#define yyclearin (yychar = -1)
#define yyerrok (yyerrflag = 0)
#define YYRECOVERING (yyerrflag != 0)
#if YYACTFUN
# include <setjmp.h>
static jmp_buf yyjmp;
# define YYACCEPT longjmp(yyjmp, 1)
# define YYABORT longjmp(yyjmp, 2)
#endif /* YYACTFUN */
#if !YYACTFUN
# define YYACCEPT return (0)
# define YYABORT return (1)
# define YYERROR goto yyerrlab
#endif /* !YYACTFUN */
int yychar;
static int yyerrflag;
#if YYDEBUG
int yydebug;
#endif /* YYDEBUG */
int yylex();
int yyparse();
int yyerror();
YYSTYPE yylval;
static YYSTYPE *yyasp, yyval;
#if YYACTFUN
static void yydef()
{
}
#endif /* YYACTFUN */
/* Following line will be replaced by parser tables */
#line 402 "a2p.y"
#include "a2py.c"
#ifdef YYDEBUG
#define YYMINTOK 256
#define YYMAXTOK 304
static char *yytnames[] = {
"error",
"BEGIN",
"END",
"REGEX",
"SEMINEW",
"NEWLINE",
"COMMENT",
"FUN1",
"FUNN",
"GRGR",
"PRINT",
"PRINTF",
"SPRINTF",
"SPLIT",
"IF",
"ELSE",
"WHILE",
"FOR",
"IN",
"EXIT",
"NEXT",
"BREAK",
"CONTINUE",
"RET",
"GETLINE",
"DO",
"SUB",
"GSUB",
"MATCH",
"FUNCTION",
"USERFUN",
"DELETE",
"ASGNOP",
"OROR",
"ANDAND",
"NUMBER",
"VAR",
"SUBSTR",
"INDEX",
"MATCHOP",
"RELOP",
"OR",
"STRING",
"UMINUS",
"NOT",
"INCR",
"DECR",
"FIELD",
"VFIELD",
0 };
static char *yyntnames[] = {
"$start",
"program",
"junk",
"hunks",
"begin",
"maybe",
"states",
"end",
"hunk",
"patpat",
"arg_list",
"expr_list",
"cond",
"expr",
"match",
"rel",
"compound_cond",
"term",
"variable",
"clist",
"hunksep",
"nlstuff",
"separator",
"statement",
"simple",
"compound",
"simpnull",
"redir",
};
static short yyrstates[] = {
14, 27, 28, 29, 30, 31, 33, 35, 41, 45,
49, 50, 51, 53, 55, 56, 58, 59, 60, 62,
63, 64, 65, 66, 68, 74, 75, 84, 85, 86,
87, 88, 89, 91, 92, 93, 94, 95, 96, 97,
99, 102, 103, 105, 107, 108, 112, 113, 114, 116,
118, 119, 120, 123, 127, 133, 136, 138, 139, 140,
141, 144, 145, 150, 151, 152, 153, 157, 158, 160,
161, 162, 163, 164, 165, 170, 171, 173, 174, 178,
182, 188, 192, 195, 199, 200, 202, 203, 204, 205,
207, 210, 211, 214, 215, 216, 217, 218, 221, 222,
229, 232, 234, 236, 238, 240, 245, 250, 251, 252,
253, 254, 258, 259, 260, 261, 262, 263, 264, 266,
267, 268, 269, 270, 273, 274, 278, 280, 288, 293,
295, 297, 298, 303, 1, 2, 7, 9, 10, 12,
13, 15, 16, 17, 18, 19, 20, 21, 23, 24,
25, 37, 39, 40, 46, 54, 57, 61, 67, 69,
73, 76, 77, 78, 80, 90, 98, 106, 109, 115,
117, 121, 122, 124, 134, 135, 143, 146, 147, 148,
149, 159, 166, 175, 176, 177, 184, 190, 193, 201,
206, 209, 212, 213, 219, 220, 230, 243, 256, 257,
265, 272, 279, 290, 291, 292, 294, 299, 302, 304,
308, 310, 311, 315, 0, 3, 4, 5, 6, 8,
11, 22, 26, 32, 34, 36, 38, 42, 43, 44,
47, 48, 52, 70, 71, 72, 79, 81, 82, 83,
100, 101, 104, 110, 111, 125, 126, 128, 129, 130,
131, 132, 137, 142, 154, 155, 156, 167, 168, 169,
172, 179, 180, 181, 183, 185, 186, 187, 189, 191,
194, 196, 197, 198, 208, 223, 224, 225, 226, 227,
228, 231, 233, 235, 237, 239, 241, 242, 244, 246,
247, 248, 249, 255, 271, 275, 276, 277, 281, 282,
283, 284, 285, 286, 287, 289, 296, 300, 301, 305,
306, 307, 309, 312, 313, 314, 316,
};
#endif /* YYDEBUG */
#define YYPASS 16384
#define YYLAST 862
static short yynext[] = {
13, 27, 16425, 8, 44, 15, 232, 8, 218, 16425,
43, 13, 45, 129, 46, 47, 49, 50, 51, 13,
13, 53, 173, 8, 199, 171, 172, 8, 57, 58,
59, 60, 312, 207, 307, 308, 16427, 39, 16429, 108,
8, 314, 315, 316, 45, 133, 40, 291, 69, 230,
16425, 16442, 13, 164, 293, 166, 16447, 168, 257, 240,
241, 16425, 317, 163, 23, 294, 23, 84, 85, 278,
86, 87, 88, 89, 90, 191, 91, 13, 13, 96,
97, 266, 231, 192, 193, 272, 16425, 273, 293, 168,
16425, 10, 293, 8, 8, 111, 162, 161, 11, 196,
163, 119, 120, 121, 122, 123, 201, 124, 125, 292,
24, 24, 127, 234, 235, 24, 208, 24, 256, 306,
210, 244, 24, 14, 280, 16, 8, 65, 66, 281,
8, 17, 101, 162, 161, 282, 8, 298, 102, 12,
16425, 82, 24, 24, 24, 24, 24, 24, 24, 157,
283, 18, 24, 103, 24, 24, 24, 19, 24, 24,
24, 309, 24, 16645, 16646, 20, 24, 24, 24, 24,
284, 21, 271, 104, 8, 8, 285, 22, 24, 105,
7, 38, 236, 1, 113, 2, 36, 34, 237, 35,
24, 37, 24, 24, 24, 24, 24, 24, 24, 24,
24, 244, 83, 245, 246, 24, 24, 33, 48, 215,
216, 217, 52, 166, 132, 16645, 16646, 16645, 16646, 249,
24, 16645, 16646, 16645, 16646, 16645, 16646, 169, 24, 24,
24, 24, 24, 24, 24, 250, 24, 148, 39, 251,
23, 233, 253, 1, 255, 2, 238, 239, 223, 6,
290, 156, 16675, 16676, 16677, 16678, 166, 158, 159, 267,
16645, 16646, 160, 224, 32, 56, 70, 16658, 170, 32,
275, 276, 277, 16645, 16646, 238, 239, 63, 64, 252,
238, 239, 24, 16643, 72, 16643, 258, 16645, 16646, 176,
61, 62, 177, 178, 179, 180, 189, 16645, 16646, 32,
24, 32, 32, 32, 190, 32, 32, 32, 200, 32,
24, 259, 274, 32, 32, 32, 32, 7, 93, 94,
1, 16443, 2, 265, 16684, 32, 16684, 95, 239, 195,
286, 109, 110, 112, 126, 202, 299, 32, 130, 100,
32, 32, 32, 32, 32, 32, 32, 32, 311, 310,
313, 16507, 32, 32, 16672, 16428, 16444, 248, 295, 296,
16442, 16425, 242, 243, 206, 254, 181, 32, 209, 71,
73, 74, 75, 287, 153, 32, 32, 32, 32, 32,
32, 32, 289, 32, 297, 16507, 300, 301, 302, 303,
304, 32767, 32767, 32767, 32767, 32767, 32767, 137, 138, 220,
32767, 32767, 32767, 139, 140, 32767, 32767, 32767, 0, 141,
32767, 32767, 188, 270, 32767, 32767, 32767, 32767, 165, 32767,
142, 32767, 143, 144, 145, 146, 147, 32767, 32767, 32,
32767, 221, 148, 149, 150, 32767, 32767, 32767, 222, 32767,
3, 4, 5, 223, 6, 23, 288, 32, 1, 106,
2, 32767, 32767, 32767, 32767, 32767, 32767, 32, 32767, 32767,
260, 245, 246, 139, 140, 32767, 77, 78, 0, 141,
183, 32767, 184, 185, 32767, 79, 261, 262, 263, 80,
142, 264, 143, 144, 145, 32767, 147, 186, 32767, 32767,
32767, 221, 148, 149, 150, 32767, 32767, 32767, 222, 32767,
32767, 4, 5, 223, 6, 23, 32767, 32767, 1, 76,
2, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
32767, 32767, 16644, 16645, 16646, 32767, 32767, 32767, 32767, 32767,
32767, 32767, 16654, 32767, 16656, 16657, 220, 32767, 245, 246,
139, 140, 32767, 16665, 32767, 0, 141, 23, 305, 32767,
1, 32767, 2, 32767, 32767, 32767, 32767, 142, 32767, 143,
144, 145, 32767, 147, 32767, 32767, 32767, 32767, 221, 148,
149, 150, 32767, 32767, 32767, 222, 32767, 3, 4, 5,
223, 6, 41, 42, 32767, 32767, 32767, 32767, 32767, 55,
174, 175, 32767, 32767, 32767, 67, 68, 32767, 23, 32767,
32767, 23, 243, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
32767, 32767, 92, 32767, 32767, 32767, 194, 98, 30, 99,
31, 30, 32767, 31, 32767, 32767, 197, 114, 115, 116,
117, 118, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
32767, 32767, 32767, 32767, 32767, 32767, 128, 203, 204, 205,
131, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
32767, 32767, 211, 212, 32767, 213, 32767, 32767, 139, 140,
32767, 32767, 32767, 0, 141, 32767, 32767, 32767, 32767, 32767,
32767, 16507, 32767, 32767, 16507, 142, 32767, 143, 144, 145,
32767, 147, 32767, 32767, 32767, 32767, 221, 148, 149, 150,
32767, 32767, 32767, 222, 32767, 32767, 4, 5, 223, 6,
32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 139, 140,
32767, 32767, 32767, 0, 141, 32767, 32767, 32767, 32767, 32767,
32767, 32767, 32767, 32767, 32767, 142, 32767, 143, 144, 145,
32767, 147, 32767, 32767, 32767, 32767, 221, 148, 149, 150,
32767, 32767, 32767, 222, 32767, 32767, 4, 5, 223, 6,
139, 140, 32767, 32767, 32767, 0, 141, 32767, 32767, 32767,
32767, 32767, 32767, 32767, 32767, 32767, 32767, 142, 32767, 143,
144, 145, 32767, 147, 32767, 32767, 32767, 32767, 221, 148,
149, 150, 32767, 32767, 32767, 222, 32767, 32767, 4, 5,
223, 6, 32767, 32767, 32767, 16641, 16642, 16643, 16641, 16642,
16643, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
32767, 32767, 32767, 16669, 32767, 32767, 16669, 32767, 32767, 32767,
32767, 32767, 32767, 28, 29, 32767, 28, 29, 16684, 32767,
32767, 16684,
};
#define YY2TABSTATES 134
#define YYLR1STATES 214
#define YYNSTATES 317
#define YYNXR 318
#define YYSTATE0 214
static short yybase[] = {
99, 320, 320, -98, 296, 296, 320, -98, 561, 302,
321, 99, -36, 319, 320, 320, -32, 9, 320, 99,
99, 320, 320, -98, 66, 228, 316, -98, 20, 320,
320, 320, 302, 320, 320, 320, 320, 320, 320, 320,
-98, 228, 228, 324, -36, 558, 322, -39, 320, 325,
326, 327, 99, 328, -44, 228, 311, -39, -39, -39,
-39, -7, -7, 296, 311, -40, -38, 24, 24, -39,
320, 320, 320, 320, 45, 320, 320, 99, 99, 320,
320, 320, -1, 320, 320, 320, 94, 109, 129, 135,
332, 341, 228, -98, -98, 262, 320, 320, 228, 228,
302, 49, 320, 320, 320, 320, 320, 320, 320, 317,
318, 343, 320, 12, 228, 228, 228, 228, 228, 345,
346, 347, 348, 349, 320, 320, -46, 26, 228, 262,
-98, 228, 36, 262, 62, -51, 140, -74, -41, 51,
58, 83, -55, 85, 91, 111, -137, 117, 74, 131,
137, -79, 65, -43, -242, 157, 148, 172, -57, -57,
101, 178, 194, 198, -51, -50, -3, 203, 77, 222,
240, 245, 218, 465, 277, 277, 144, -57, -57, -57,
-57, 4, 271, 278, 279, 287, 37, 10, 38, 88,
289, 405, -15, -15, 200, 242, -51, -58, 275, 63,
295, 507, 298, 200, 200, 200, -14, 78, 307, -9,
309, 200, 200, 200,
};
static short yybase2[] = {
507, 507, 507, 277, -55, -55, 507, 277, 140, 144,
507, 507, 277, 465, 507, 507, 507, 507, 507, 507,
507, 507, 507, 277, -242, -58, -9, 277, 507, 507,
507, 507, 144, 507, 507, 507, 507, 507, 507, 507,
277, -58, -58, 507, 277, 140, 465, 507, 507, 465,
465, 465, 507, 465, 200, -58, -43, 507, 507, 507,
507, 144, 144, -55, -43, 200, 200, 277, 277, 507,
507, 507, 507, 507, 507, 507, 507, 507, 507, 507,
507, 507, 200, 507, 507, 507, 405, 405, 405, 405,
507, 507, -58, 277, 277, 200, 507, 507, -58, -58,
144, 507, 507, 507, 507, 507, 507, 507, 507, -9,
-9, 507, 507, 200, -58, -58, -58, -58, -58, 507,
507, 507, 507, 507, 507, 507, 277, 277, -58, 200,
277, -58, 200, 200,
};
static short yydefault[] = {
87, -1, -1, -1, -1, -1, -1, -1, 16, 32,
-1, 87, -1, 85, -1, -1, -1, -1, -1, 87,
87, -1, -1, -1, 35, 106, -1, -1, -1, -1,
-1, -1, 33, -1, -1, -1, -1, -1, -1, -1,
-1, 106, 106, -1, -1, 16, -1, 55, -1, -1,
-1, -1, 87, -1, -1, 106, 15, 28, 24, 26,
25, 38, 39, 57, 34, -1, -1, -1, -1, 56,
-1, -1, -1, -1, -1, -1, -1, 87, 87, 120,
123, 113, -1, -1, 88, 89, -1, -1, -1, -1,
-1, -1, 109, -1, -1, 112, 121, 124, 106, 108,
45, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 113, -1, -1, 102, 103, 104, 101, 107, -1,
-1, -1, -1, -1, 114, 116, -1, -1, 106, 112,
-1, 136, -1, 112, -1, 6, 1, -1, -1, 59,
-1, -1, 53, -1, -1, -1, -1, -1, 81, -1,
-1, 12, 7, 14, 35, 86, 54, -1, 51, 50,
84, 17, 18, 19, 5, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 40, 41, 42,
43, -1, -1, -1, -1, -1, -1, -1, 22, -1,
-1, -1, 115, 117, -1, -1, 2, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 129, -1, -1,
-1, -1, -1, -1, 92, 94, 95, 96, 93, 91,
30, 36, 37, 83, 98, 11, 92, 17, 18, 19,
98, 98, 64, 23, 48, 49, 4, 98, 98, 98,
46, 47, 60, 98, 98, 99, 100, 97, 52, 31,
27, 20, 29, 44, 61, 62, 90, 13, 63, 82,
98, 119, 118, 122, 98, 98, 10, 98, 105, 110,
21, 58, 92, 3, 98, 98, 98, 98, 98, 98,
8, 69, 74, 73, 76, 75, 71, 72, 66, 70,
127, 126, 128, 111, 98, 98, 98, 98, 98, 68,
67, 78, 77, 80, 79, 65, 125, 131, 135, 9,
98, 98, 132, 98, 130, 134, 133,
};
static short yycheck[] = {
268, 43, 45, 300, 301, 302, 304, 40, -13, -17,
40, 40, 40, -13, 40, 60, 40, 40, 40, 40,
91, 40, 40, 40, -18, -5, -12, 44, 295, 296,
60, 62, -17, 63, 43, 45, 42, 47, 37, 94,
288, -5, -5, -13, 40, -13, -13, -13, 60, -13,
-13, -13, 40, -13, -6, -5, -12, -13, -13, -13,
-13, -17, -17, 280, -12, -6, -6, -5, -5, -13,
44, 44, 44, 44, 44, 44, 44, 266, 267, 275,
279, -13, -6, 58, -13, -13, -13, -13, -13, -13,
-13, -13, -5, 40, 40, 40, -13, -13, -5, -5,
-17, 44, 44, 44, 44, 44, 44, -27, -27, -12,
-12, -13, 91, -6, -5, -5, -5, -5, -5, -13,
-13, -13, -13, -13, -13, -13, 59, -13, -5, 59,
40, -5, -6, 59, -1, -2, -3, 257, 258, 263,
264, 269, 280, 282, 283, 284, 285, 286, 292, 293,
294, -7, -9, -12, -18, -19, -18, 286, -17, -17,
-17, -14, -15, -16, -2, 274, 112, -11, -19, 259,
259, -11, -11, -13, -5, -5, -17, -17, -17, -17,
-17, 44, -10, 270, 272, 273, 287, -24, -12, 292,
259, -13, -11, -11, -5, 292, -2, -5, -26, -23,
259, -13, 272, -5, -5, -5, -12, -23, -26, -12,
-26, -5, -5, -5, 32767, 260, 261, 262, 59, -20,
259, 291, 298, 303, 123, -4, -8, -14, -15, -16,
123, 123, -11, -12, -18, -18, 261, 123, 289, 290,
301, 302, 41, 44, 44, 261, 262, -21, 41, 41,
41, 41, 259, 292, 41, 41, 41, -11, 41, 93,
260, 276, 277, 278, 281, 123, 125, 59, -23, -25,
-12, -18, 125, 125, 41, 260, 261, 262, 59, -22,
125, 41, 41, 41, 41, 41, 41, 41, 41, 41,
265, 62, 124, -24, 123, 41, 41, 41, 125, 41,
41, 41, 41, 41, 41, 41, 93, -23, -23, 125,
271, 41, 41, 41, -23, -23, -23,
62,
};
static short yyrederr[] = {
0,
};
static short yygbase[] = {
32767, 32767, -173, 32767, 32767, 352, 86, 32767, 32767, 32767,
32767, 6, 238, 0, 90, 89, 56, 256, 109, 45,
32767, 32767, 32767, -170, -41, 32767, -13, -154,
};
static short yydefgoto[] = {
0, 134, 135, 136, 225, 25, 54, 151, 226, 152,
182, 167, 26, 81, 227, 228, 229, 9, 154, 155,
219, 247, 279, 268, 187, 269, 198, 107,
};
static char yyleft[] = {
0, 1, 4, 7, 7, 3, 3, 8, 8, 8,
8, 8, 8, 10, 9, 9, 12, 12, 12, 12,
16, 16, 16, 16, 15, 15, 15, 15, 14, 14,
14, 14, 13, 13, 13, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 18, 18, 18, 18, 11, 11, 11, 19, 19,
19, 2, 2, 20, 20, 20, 20, 5, 5, 21,
21, 22, 22, 22, 22, 6, 6, 23, 23, 23,
23, 26, 26, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 27, 27, 27, 25,
25, 25, 25, 25, 25, 25, 25,
};
static char yylen[] = {
1, 2, 6, 5, 2, 3, 0, 1, 5, 10,
4, 1, 1, 1, 1, 3, 1, 1, 1, 1,
3, 4, 4, 2, 3, 3, 3, 3, 3, 3,
1, 3, 1, 2, 3, 1, 1, 1, 3, 3,
3, 3, 3, 3, 3, 5, 2, 2, 2, 2,
2, 2, 3, 1, 2, 3, 4, 3, 4, 1,
3, 4, 4, 4, 2, 8, 6, 8, 8, 6,
6, 6, 6, 6, 6, 6, 6, 8, 8, 8,
8, 1, 4, 1, 2, 1, 1, 0, 4, 4,
3, 2, 0, 1, 1, 1, 1, 2, 0, 1,
1, 2, 2, 2, 2, 2, 0, 3, 2, 2,
1, 1, 0, 1, 4, 2, 4, 2, 1, 1,
1, 2, 1, 1, 2, 5, 1, 1, 1, 6,
9, 6, 7, 10, 9, 6, 5,
};
#line 64 "c:/home/bin/kmyacc.par"
#if !YYDEBUG
#define YYTRACE_DCL
#define YYTRACE_NEWSTATE()
#define YYTRACE_READ()
#define YYTRACE_SHIFT(tok)
#define YYTRACE_ACCEPT()
#define YYTRACE_REDUCE()
#define YYTRACE_POP()
#define YYTRACE_DISCARD()
#endif /* !YYDEBUG */
#if YYDEBUG
#ifndef EOF
#include <stdio.h>
#endif
#ifndef YYTRACEF
#define YYTRACEF stderr
#endif /* !YYTRACEF */
static char *yytokname(n)
int n;
{
static char buf[10];
if (YYMINTOK <= n && n <= YYMAXTOK && yytnames[n - YYMINTOK])
return yytnames[n - YYMINTOK];
switch (n) {
case 0:
return ("end-of-file");
case '\n':
return ("'\\n'");
case '\t':
return ("'\\t'");
default:
if (n < 0x20 || n > 0x7e) {
sprintf(buf, "<%d>", n);
} else {
buf[0] = '\'';
buf[1] = n;
buf[2] = '\'';
buf[3] = '\0';
}
return (buf);
}
}
#if YYDEBUG == 2
/* Traditional Debug Mode */
#define YYTRACE_DCL /* empty */
#define YYTRACE_NEWSTATE() \
if (yydebug) \
fprintf(YYTRACEF, "%%%% State %d, Lookahead %s\n", \
yyrstates[yystate], yychar < 0 ? "--none--" : yytokname(yychar))
#define YYTRACE_READ() \
if (yydebug) \
fprintf(YYTRACEF, "%%%% Reading %s\n", yytokname(yychar))
#define YYTRACE_SHIFT(tok) \
if (yydebug) \
fprintf(YYTRACEF, "%%%% Shift %s\n", yytokname(yychar))
#define YYTRACE_ACCEPT() \
if (yydebug) fprintf(YYTRACEF, "%%%% Accepted.\n")
#define YYTRACE_REDUCE() \
if (yydebug) { \
int sym; \
short *p; \
fprintf(YYTRACEF, "%%%% Reduce by (%d) %s :", \
yyn, yyntnames[yyleft[yyn]]); \
if (yyl == 0) \
fprintf(YYTRACEF, " /* empty */"); \
for (p = yyssp - yyl + 1; p <= yyssp; p++) { \
sym = yycheck[*p]; \
fprintf(YYTRACEF, " %s", sym >= 0 ? yytokname(sym) : yyntnames[-sym]); \
} \
fputc('\n', YYTRACEF); \
}
#define YYTRACE_POP() \
if (yydebug) \
fprintf(YYTRACEF, "%%%% Recovering, uncovers state %d\n", \
yyrstates[yystate])
#define YYTRACE_DISCARD() \
if (yydebug) fprintf(YYTRACEF, "%%%% Discard %s\n", yytokname(yychar))
#endif /* YYDEBUG == 2 */
#if YYDEBUG != 2
/* Messy Debug Mode */
#ifndef YYMAXSTKSHOWN
#define YYMAXSTKSHOWN 50
#endif /* YYMAXSTKSHOWN */
static void yyshowstack(sstk, ssp, mark)
short *sstk;
short *ssp;
short *mark;
{
short *p;
int sym, len;
int strlen();
len = 1;
for (p = ssp; p >= sstk; --p) {
sym = yycheck[*p];
len += 1 + strlen(sym >= 0 ? yytokname(sym) : yyntnames[-sym]);
if (len > YYMAXSTKSHOWN)
break;
}
p++;
if (mark && p > mark) p = mark;
if (p != sstk) fprintf(YYTRACEF, "...");
for (; p <= ssp; p++) {
if (p == mark)
fputc('[', YYTRACEF);
else
fputc(' ', YYTRACEF);
sym = yycheck[*p];
fprintf(YYTRACEF, "%s", sym >= 0 ? yytokname(sym) : yyntnames[-sym]);
}
if (mark) {
if (p == mark)
fputc('[', YYTRACEF);
fputc(']', YYTRACEF);
} else
fputc(' ', YYTRACEF);
}
#define YYTRACE_DCL /* empty */
#define YYTRACE_NEWSTATE() \
if (yydebug) { \
fprintf(YYTRACEF, "%%%%%3d:", yyrstates[yystate]); \
yyshowstack(yysstk + 1, yyssp, 0); \
if (yychar >= 0) \
fprintf(YYTRACEF, " <<< %s", yytokname(yychar)); \
fprintf(YYTRACEF, "\n"); \
}
#define YYTRACE_READ() \
if (yydebug) \
fprintf(YYTRACEF, "%%%% Reading %s\n", yytokname(yychar))
#define YYTRACE_SHIFT(tok)
#define YYTRACE_ACCEPT() \
if (yydebug) fprintf(YYTRACEF, "%%%% Accepted.\n")
#define YYTRACE_REDUCE() \
if (yydebug) { \
fprintf(YYTRACEF, "%%%%%3d:", yyrstates[yystate]); \
yyshowstack(yysstk + 1, yyssp, yyssp - yyl + 1); \
fprintf(YYTRACEF, " --> %s, by (%d)\n", yyntnames[yyleft[yyn]], yyn); \
}
#define YYTRACE_POP() \
if (yydebug) { \
fprintf(YYTRACEF, "%%%%%3d:", yyrstates[yystate]); \
yyshowstack(yysstk + 1, yyssp, 0); \
fprintf(YYTRACEF, " (Recovering)\n", yyrstates[yystate]); \
}
#define YYTRACE_DISCARD() \
if (yydebug) fprintf(YYTRACEF, "%%%% Discard %s\n", yytokname(yychar))
#endif /* YYDEBUG == 2 */
#endif /* YYDEBUG */
int yyparse()
{
YYSTYPE yyastk[YYMAXDEPTH];
short yysstk[YYMAXDEPTH];
short *yyssp;
int yystate;
int yyn;
int yyl;
YYTRACE_DCL
#if YYACTFUN
if ((yyn = setjmp(yyjmp)) != 0)
return (yyn - 1);
#endif /* YYACTFUN */
yyssp = yysstk;
yyasp = yyastk - 1;
*yyssp = yystate = YYSTATE0;
yychar = -1;
yyerrflag = 0;
for (;;) {
YYTRACE_NEWSTATE();
if (yystate >= YYLR1STATES)
goto yydeflt;
if (yychar < 0) {
if ((yychar = yylex()) <= 0) yychar = 0;
YYTRACE_READ();
}
if ((yyn = yybase[yystate] + yychar) >= 0 && yyn < YYLAST) {
if ((yyn = yynext[yyn]) < YYNSTATES) {
if (yycheck[yyn] == yychar)
goto yyshift;
} else if (yyn < YYNXR) {
if (yycheck[yyn] == yybase[yystate]) {
yyn = yyrederr[yyn - YYNSTATES];
goto yyaction;
}
} else if (yyn - YYPASS == yychar)
goto yydeflt;
}
if (yystate >= YY2TABSTATES
|| (yyn = yybase2[yystate] + yychar) < 0 || YYLAST <= yyn
|| (yyn = yynext[yyn]) >= YYNSTATES || yycheck[yyn] != yychar)
goto yydeflt;
yyshift:
YYTRACE_SHIFT(yychar);
if (yyssp >= yysstk + YYMAXDEPTH) {
yyerror("parser stack overflow");
return (2);
}
*++yyssp = yystate = yyn;
*++yyasp = yylval;
yychar = -1;
if (yyerrflag > 0)
yyerrflag--;
continue;
yydeflt:
yyn = yydefault[yystate];
yyaction:
/* reduce/error */
if (yyn == 0) {
/* accept */
YYTRACE_ACCEPT();
return (0);
} else if (yyn > 0) {
/* reduce */
yyl = yylen[yyn];
YYTRACE_REDUCE();
yyval = yyasp[1 - yyl]; /* default value */
#if YYACTFUN
(*yya[yyn])();
#endif /* YYACTFUN */
#if !YYACTFUN
switch (yyn) {
/* Following line will be replaced by actions */
case 1:
#line 60 "a2p.y"
{ root = oper4(OPROG,YYASP(1),begins,YYASP(0),ends); } break;
case 2:
#line 64 "a2p.y"
{ begins = oper4(OJUNK,begins,YYASP(3),YYASP(2),YYASP(0)); in_begin = FALSE;
yyval = Nullop; } break;
case 3:
#line 69 "a2p.y"
{ ends = oper3(OJUNK,ends,YYASP(2),YYASP(1)); yyval = Nullop; } break;
case 4:
#line 71 "a2p.y"
{ yyval = YYASP(1); } break;
case 5:
#line 75 "a2p.y"
{ yyval = oper3(OHUNKS,YYASP(2),YYASP(1),YYASP(0)); } break;
case 6:
#line 77 "a2p.y"
{ yyval = Nullop; } break;
case 7:
#line 81 "a2p.y"
{ yyval = oper1(OHUNK,YYASP(0)); need_entire = TRUE; } break;
case 8:
#line 83 "a2p.y"
{ yyval = oper2(OHUNK,YYASP(4),oper2(OJUNK,YYASP(2),YYASP(1))); } break;
case 9:
#line 85 "a2p.y"
{ fixfargs(YYASP(8),YYASP(6),0); yyval = oper5(OUSERDEF,YYASP(8),YYASP(6),YYASP(4),YYASP(2),YYASP(1)); } break;
case 10:
#line 87 "a2p.y"
{ yyval = oper2(OHUNK,Nullop,oper2(OJUNK,YYASP(2),YYASP(1))); } break;
case 13:
#line 93 "a2p.y"
{ yyval = rememberargs(yyval); } break;
case 14:
#line 97 "a2p.y"
{ yyval = oper1(OPAT,YYASP(0)); } break;
case 15:
#line 99 "a2p.y"
{ yyval = oper2(ORANGE,YYASP(2),YYASP(0)); } break;
case 20:
#line 110 "a2p.y"
{ yyval = oper1(OCPAREN,YYASP(1)); } break;
case 21:
#line 112 "a2p.y"
{ yyval = oper3(OCANDAND,YYASP(3),YYASP(1),YYASP(0)); } break;
case 22:
#line 114 "a2p.y"
{ yyval = oper3(OCOROR,YYASP(3),YYASP(1),YYASP(0)); } break;
case 23:
#line 116 "a2p.y"
{ yyval = oper1(OCNOT,YYASP(0)); } break;
case 24:
#line 120 "a2p.y"
{ yyval = oper3(ORELOP,YYASP(1),YYASP(2),YYASP(0)); } break;
case 25:
#line 122 "a2p.y"
{ yyval = oper3(ORELOP,string(">",1),YYASP(2),YYASP(0)); } break;
case 26:
#line 124 "a2p.y"
{ yyval = oper3(ORELOP,string("<",1),YYASP(2),YYASP(0)); } break;
case 27:
#line 126 "a2p.y"
{ yyval = oper1(ORPAREN,YYASP(1)); } break;
case 28:
#line 130 "a2p.y"
{ yyval = oper3(OMATCHOP,YYASP(1),YYASP(2),YYASP(0)); } break;
case 29:
#line 132 "a2p.y"
{ yyval = oper3(OMATCHOP,YYASP(1),YYASP(2),oper1(OREGEX,YYASP(0))); } break;
case 30:
#line 134 "a2p.y"
{ yyval = oper1(OREGEX,YYASP(0)); } break;
case 31:
#line 136 "a2p.y"
{ yyval = oper1(OMPAREN,YYASP(1)); } break;
case 32:
#line 140 "a2p.y"
{ yyval = YYASP(0); } break;
case 33:
#line 142 "a2p.y"
{ yyval = oper2(OCONCAT,YYASP(1),YYASP(0)); } break;
case 34:
#line 144 "a2p.y"
{ yyval = oper3(OASSIGN,YYASP(1),YYASP(2),YYASP(0));
if ((ops[YYASP(2)].ival & 255) == OFLD)
lval_field = TRUE;
if ((ops[YYASP(2)].ival & 255) == OVFLD)
lval_field = TRUE;
} break;
case 35:
#line 153 "a2p.y"
{ yyval = YYASP(0); } break;
case 36:
#line 155 "a2p.y"
{ yyval = oper1(ONUM,YYASP(0)); } break;
case 37:
#line 157 "a2p.y"
{ yyval = oper1(OSTR,YYASP(0)); } break;
case 38:
#line 159 "a2p.y"
{ yyval = oper2(OADD,YYASP(2),YYASP(0)); } break;
case 39:
#line 161 "a2p.y"
{ yyval = oper2(OSUBTRACT,YYASP(2),YYASP(0)); } break;
case 40:
#line 163 "a2p.y"
{ yyval = oper2(OMULT,YYASP(2),YYASP(0)); } break;
case 41:
#line 165 "a2p.y"
{ yyval = oper2(ODIV,YYASP(2),YYASP(0)); } break;
case 42:
#line 167 "a2p.y"
{ yyval = oper2(OMOD,YYASP(2),YYASP(0)); } break;
case 43:
#line 169 "a2p.y"
{ yyval = oper2(OPOW,YYASP(2),YYASP(0)); } break;
case 44:
#line 171 "a2p.y"
{ yyval = oper2(ODEFINED,aryrefarg(YYASP(0)),YYASP(2)); } break;
case 45:
#line 173 "a2p.y"
{ yyval = oper3(OCOND,YYASP(4),YYASP(2),YYASP(0)); } break;
case 46:
#line 175 "a2p.y"
{ yyval = oper1(OPOSTINCR,YYASP(1)); } break;
case 47:
#line 177 "a2p.y"
{ yyval = oper1(OPOSTDECR,YYASP(1)); } break;
case 48:
#line 179 "a2p.y"
{ yyval = oper1(OPREINCR,YYASP(0)); } break;
case 49:
#line 181 "a2p.y"
{ yyval = oper1(OPREDECR,YYASP(0)); } break;
case 50:
#line 183 "a2p.y"
{ yyval = oper1(OUMINUS,YYASP(0)); } break;
case 51:
#line 185 "a2p.y"
{ yyval = oper1(OUPLUS,YYASP(0)); } break;
case 52:
#line 187 "a2p.y"
{ yyval = oper1(OPAREN,YYASP(1)); } break;
case 53:
#line 189 "a2p.y"
{ yyval = oper0(OGETLINE); } break;
case 54:
#line 191 "a2p.y"
{ yyval = oper1(OGETLINE,YYASP(0)); } break;
case 55:
#line 193 "a2p.y"
{ yyval = oper3(OGETLINE,Nullop,string("<",1),YYASP(0));
if (ops[YYASP(0)].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break;
case 56:
#line 196 "a2p.y"
{ yyval = oper3(OGETLINE,YYASP(2),string("<",1),YYASP(0));
if (ops[YYASP(0)].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break;
case 57:
#line 199 "a2p.y"
{ yyval = oper3(OGETLINE,Nullop,string("|",1),YYASP(2));
if (ops[YYASP(2)].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break;
case 58:
#line 202 "a2p.y"
{ yyval = oper3(OGETLINE,YYASP(0),string("|",1),YYASP(3));
if (ops[YYASP(3)].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break;
case 59:
#line 205 "a2p.y"
{ yyval = oper0(YYASP(0)); need_entire = do_chop = TRUE; } break;
case 60:
#line 207 "a2p.y"
{ yyval = oper1(YYASP(2),Nullop); need_entire = do_chop = TRUE; } break;
case 61:
#line 209 "a2p.y"
{ yyval = oper1(YYASP(3),YYASP(1)); } break;
case 62:
#line 211 "a2p.y"
{ yyval = oper1(YYASP(3),YYASP(1)); } break;
case 63:
#line 213 "a2p.y"
{ yyval = oper2(OUSERFUN,YYASP(3),YYASP(1)); } break;
case 64:
#line 215 "a2p.y"
{ yyval = oper1(OSPRINTF,YYASP(0)); } break;
case 65:
#line 217 "a2p.y"
{ yyval = oper3(OSUBSTR,YYASP(5),YYASP(3),YYASP(1)); } break;
case 66:
#line 219 "a2p.y"
{ yyval = oper2(OSUBSTR,YYASP(3),YYASP(1)); } break;
case 67:
#line 221 "a2p.y"
{ yyval = oper3(OSPLIT,YYASP(5),aryrefarg(numary(YYASP(3))),YYASP(1)); } break;
case 68:
#line 223 "a2p.y"
{ yyval = oper3(OSPLIT,YYASP(5),aryrefarg(numary(YYASP(3))),oper1(OREGEX,YYASP(1)));} break;
case 69:
#line 225 "a2p.y"
{ yyval = oper2(OSPLIT,YYASP(3),aryrefarg(numary(YYASP(1)))); } break;
case 70:
#line 227 "a2p.y"
{ yyval = oper2(OINDEX,YYASP(3),YYASP(1)); } break;
case 71:
#line 229 "a2p.y"
{ yyval = oper2(OMATCH,YYASP(3),oper1(OREGEX,YYASP(1))); } break;
case 72:
#line 231 "a2p.y"
{ yyval = oper2(OMATCH,YYASP(3),YYASP(1)); } break;
case 73:
#line 233 "a2p.y"
{ yyval = oper2(OSUB,YYASP(3),YYASP(1)); } break;
case 74:
#line 235 "a2p.y"
{ yyval = oper2(OSUB,oper1(OREGEX,YYASP(3)),YYASP(1)); } break;
case 75:
#line 237 "a2p.y"
{ yyval = oper2(OGSUB,YYASP(3),YYASP(1)); } break;
case 76:
#line 239 "a2p.y"
{ yyval = oper2(OGSUB,oper1(OREGEX,YYASP(3)),YYASP(1)); } break;
case 77:
#line 241 "a2p.y"
{ yyval = oper3(OSUB,YYASP(5),YYASP(3),YYASP(1)); } break;
case 78:
#line 243 "a2p.y"
{ yyval = oper3(OSUB,oper1(OREGEX,YYASP(5)),YYASP(3),YYASP(1)); } break;
case 79:
#line 245 "a2p.y"
{ yyval = oper3(OGSUB,YYASP(5),YYASP(3),YYASP(1)); } break;
case 80:
#line 247 "a2p.y"
{ yyval = oper3(OGSUB,oper1(OREGEX,YYASP(5)),YYASP(3),YYASP(1)); } break;
case 81:
#line 251 "a2p.y"
{ yyval = oper1(OVAR,YYASP(0)); } break;
case 82:
#line 253 "a2p.y"
{ yyval = oper2(OVAR,aryrefarg(YYASP(3)),YYASP(1)); } break;
case 83:
#line 255 "a2p.y"
{ yyval = oper1(OFLD,YYASP(0)); } break;
case 84:
#line 257 "a2p.y"
{ yyval = oper1(OVFLD,YYASP(0)); } break;
case 87:
#line 264 "a2p.y"
{ yyval = Nullop; } break;
case 88:
#line 268 "a2p.y"
{ yyval = oper3(OCOMMA,YYASP(3),YYASP(1),YYASP(0)); } break;
case 89:
#line 270 "a2p.y"
{ yyval = oper3(OCOMMA,YYASP(3),YYASP(1),YYASP(0)); } break;
case 90:
#line 272 "a2p.y"
{ yyval = YYASP(1); } break;
case 91:
#line 276 "a2p.y"
{ yyval = oper2(OJUNK,YYASP(1),YYASP(0)); } break;
case 92:
#line 278 "a2p.y"
{ yyval = Nullop; } break;
case 93:
#line 282 "a2p.y"
{ yyval = oper2(OJUNK,oper0(OSEMICOLON),oper0(ONEWLINE)); } break;
case 94:
#line 284 "a2p.y"
{ yyval = oper2(OJUNK,oper0(OSEMICOLON),oper0(ONEWLINE)); } break;
case 95:
#line 286 "a2p.y"
{ yyval = oper0(ONEWLINE); } break;
case 96:
#line 288 "a2p.y"
{ yyval = oper1(OCOMMENT,YYASP(0)); } break;
case 97:
#line 292 "a2p.y"
{ yyval = oper2(OJUNK,YYASP(1),YYASP(0)); } break;
case 98:
#line 294 "a2p.y"
{ yyval = Nullop; } break;
case 99:
#line 298 "a2p.y"
{ yyval = oper0(ONEWLINE); } break;
case 100:
#line 300 "a2p.y"
{ yyval = oper1(OCOMMENT,YYASP(0)); } break;
case 101:
#line 305 "a2p.y"
{ yyval = oper2(OJUNK,oper0(OSEMICOLON),YYASP(0)); } break;
case 102:
#line 307 "a2p.y"
{ yyval = oper2(OJUNK,oper0(OSNEWLINE),YYASP(0)); } break;
case 103:
#line 309 "a2p.y"
{ yyval = oper2(OJUNK,oper0(OSNEWLINE),YYASP(0)); } break;
case 104:
#line 311 "a2p.y"
{ yyval = oper2(OJUNK,oper1(OSCOMMENT,YYASP(1)),YYASP(0)); } break;
case 105:
#line 315 "a2p.y"
{ yyval = oper2(OSTATES,YYASP(1),YYASP(0)); } break;
case 106:
#line 317 "a2p.y"
{ yyval = Nullop; } break;
case 107:
#line 322 "a2p.y"
{ yyval = oper2(OJUNK,oper2(OSTATE,YYASP(2),YYASP(1)),YYASP(0)); } break;
case 108:
#line 324 "a2p.y"
{ yyval = oper2(OSTATE,Nullop,oper2(OJUNK,oper0(OSEMICOLON),YYASP(0))); } break;
case 109:
#line 326 "a2p.y"
{ yyval = oper2(OSTATE,Nullop,oper2(OJUNK,oper0(OSNEWLINE),YYASP(0))); } break;
case 112:
#line 332 "a2p.y"
{ yyval = Nullop; } break;
case 114:
#line 338 "a2p.y"
{ yyval = oper3(OPRINT,YYASP(2),YYASP(1),YYASP(0));
do_opens = TRUE;
saw_ORS = saw_OFS = TRUE;
if (!YYASP(2)) need_entire = TRUE;
if (ops[YYASP(0)].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break;
case 115:
#line 344 "a2p.y"
{ yyval = oper1(OPRINT,YYASP(0));
if (!YYASP(0)) need_entire = TRUE;
saw_ORS = saw_OFS = TRUE;
} break;
case 116:
#line 349 "a2p.y"
{ yyval = oper3(OPRINTF,YYASP(2),YYASP(1),YYASP(0));
do_opens = TRUE;
if (!YYASP(2)) need_entire = TRUE;
if (ops[YYASP(0)].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break;
case 117:
#line 354 "a2p.y"
{ yyval = oper1(OPRINTF,YYASP(0));
if (!YYASP(0)) need_entire = TRUE;
} break;
case 118:
#line 358 "a2p.y"
{ yyval = oper0(OBREAK); } break;
case 119:
#line 360 "a2p.y"
{ yyval = oper0(ONEXT); } break;
case 120:
#line 362 "a2p.y"
{ yyval = oper0(OEXIT); } break;
case 121:
#line 364 "a2p.y"
{ yyval = oper1(OEXIT,YYASP(0)); } break;
case 122:
#line 366 "a2p.y"
{ yyval = oper0(OCONTINUE); } break;
case 123:
#line 368 "a2p.y"
{ yyval = oper0(ORETURN); } break;
case 124:
#line 370 "a2p.y"
{ yyval = oper1(ORETURN,YYASP(0)); } break;
case 125:
#line 372 "a2p.y"
{ yyval = oper2(ODELETE,aryrefarg(YYASP(3)),YYASP(1)); } break;
case 126:
#line 376 "a2p.y"
{ yyval = oper1(OREDIR,string(">",1)); } break;
case 127:
#line 378 "a2p.y"
{ yyval = oper1(OREDIR,string(">>",2)); } break;
case 128:
#line 380 "a2p.y"
{ yyval = oper1(OREDIR,string("|",1)); } break;
case 129:
#line 385 "a2p.y"
{ yyval = oper2(OIF,YYASP(3),bl(YYASP(0),YYASP(1))); } break;
case 130:
#line 387 "a2p.y"
{ yyval = oper3(OIF,YYASP(6),bl(YYASP(3),YYASP(4)),bl(YYASP(0),YYASP(1))); } break;
case 131:
#line 389 "a2p.y"
{ yyval = oper2(OWHILE,YYASP(3),bl(YYASP(0),YYASP(1))); } break;
case 132:
#line 391 "a2p.y"
{ yyval = oper2(ODO,bl(YYASP(4),YYASP(5)),YYASP(1)); } break;
case 133:
#line 393 "a2p.y"
{ yyval = oper4(OFOR,YYASP(7),YYASP(5),YYASP(3),bl(YYASP(0),YYASP(1))); } break;
case 134:
#line 395 "a2p.y"
{ yyval = oper4(OFOR,YYASP(6),string("",0),YYASP(3),bl(YYASP(0),YYASP(1))); } break;
case 135:
#line 397 "a2p.y"
{ yyval = oper2(OFORIN,YYASP(3),bl(YYASP(0),YYASP(1))); } break;
case 136:
#line 399 "a2p.y"
{ yyval = oper3(OBLOCK,oper2(OJUNK,YYASP(3),YYASP(2)),Nullop,YYASP(0)); } break;
#line 333 "c:/home/bin/kmyacc.par"
}
#endif /* !YYACTFUN */
if (yyssp >= yysstk + YYMAXDEPTH) {
yyerror("parser stack overflow");
return (2);
}
yyasp -= yyl;
yyssp -= yyl;
yystate = yygbase[yyn = yyleft[yyn]] + *yyssp;
if (yystate < 0 || YYLAST <= yystate
|| (yystate = yynext[yystate]) >= YYNSTATES
|| -yycheck[yystate] != yyn)
yystate = yydefgoto[yyn];
*++yyssp = yystate;
*++yyasp = yyval;
} else {
/* error */
switch (yyerrflag) {
case 0:
yyerrlab:
yyerror("syntax error");
case 1:
case 2:
yyerrflag = 3;
for (;;) {
yyn = yybase[yystate] + YYERRTOK;
if (0 <= yyn && yyn < YYLAST) {
if ((yyn = yynext[yyn]) < YYNSTATES
&& yycheck[yyn] == YYERRTOK)
break;
if (yyn - YYPASS == YYERRTOK)
goto yyskip;
}
if (yystate < YY2TABSTATES
&& (yyn = yybase2[yystate] + YYERRTOK) >= 0
&& yyn < YYLAST
&& (yyn = yynext[yyn]) < YYNSTATES
&& yycheck[yyn] == YYERRTOK)
break;
yyskip:
if (yyssp <= yysstk)
return (1);
yystate = *--yyssp;
yyasp--;
YYTRACE_POP();
}
YYTRACE_SHIFT(YYERRTOK);
*++yyssp = yystate = yyn;
++yyasp;
break;
case 3:
YYTRACE_DISCARD();
if (yychar == 0)
return (1);
yychar = -1;
break;
}
}
}
}