1620 lines · 55.4 KB · C
RawDownload
 #line	26	"/sys/src/cmd/awk/awkgram.y"#include <stdio.h>#include <string.h>#include "awk.h" #define	makedfa(a,b)	compre(a) void checkdup(Node *list, Cell *item);int yywrap(void) { return(1); } Node	*beginloc = 0;Node	*endloc = 0;int	infunc	= 0;	/* = 1 if in arglist or body of func */int	inloop	= 0;	/* = 1 if in while, for, do */char	*curfname = 0;	/* current function name */Node	*arglist = 0;	/* list of args for current function */ #line	43	"/sys/src/cmd/awk/awkgram.y"typedef union  {	Node	*p;	Cell	*cp;	int	i;	char	*s;} YYSTYPE;extern	int	yyerrflag;#ifndef	YYMAXDEPTH#define	YYMAXDEPTH	150#endifYYSTYPE	yylval;YYSTYPE	yyval;#define	FIRSTTOKEN	57346#define	PROGRAM	57347#define	PASTAT	57348#define	PASTAT2	57349#define	XBEGIN	57350#define	XEND	57351#define	NL	57352#define	ARRAY	57353#define	MATCH	57354#define	NOTMATCH	57355#define	MATCHOP	57356#define	FINAL	57357#define	DOT	57358#define	ALL	57359#define	CCL	57360#define	NCCL	57361#define	CHAR	57362#define	OR	57363#define	STAR	57364#define	QUEST	57365#define	PLUS	57366#define	AND	57367#define	BOR	57368#define	APPEND	57369#define	EQ	57370#define	GE	57371#define	GT	57372#define	LE	57373#define	LT	57374#define	NE	57375#define	IN	57376#define	ARG	57377#define	BLTIN	57378#define	BREAK	57379#define	CLOSE	57380#define	CONTINUE	57381#define	DELETE	57382#define	DO	57383#define	EXIT	57384#define	FOR	57385#define	FUNC	57386#define	SUB	57387#define	GSUB	57388#define	IF	57389#define	INDEX	57390#define	LSUBSTR	57391#define	MATCHFCN	57392#define	NEXT	57393#define	NEXTFILE	57394#define	ADD	57395#define	MINUS	57396#define	MULT	57397#define	DIVIDE	57398#define	MOD	57399#define	ASSIGN	57400#define	ASGNOP	57401#define	ADDEQ	57402#define	SUBEQ	57403#define	MULTEQ	57404#define	DIVEQ	57405#define	MODEQ	57406#define	POWEQ	57407#define	PRINT	57408#define	PRINTF	57409#define	SPRINTF	57410#define	ELSE	57411#define	INTEST	57412#define	CONDEXPR	57413#define	POSTINCR	57414#define	PREINCR	57415#define	POSTDECR	57416#define	PREDECR	57417#define	VAR	57418#define	IVAR	57419#define	VARNF	57420#define	CALL	57421#define	NUMBER	57422#define	STRING	57423#define	REGEXPR	57424#define	GETLINE	57425#define	RETURN	57426#define	SPLIT	57427#define	SUBSTR	57428#define	WHILE	57429#define	CAT	57430#define	NOT	57431#define	UMINUS	57432#define	POWER	57433#define	DECR	57434#define	INCR	57435#define	INDIRECT	57436#define	LASTTOKEN	57437#define YYEOFCODE 1#define YYERRCODE 2 #line	447	"/sys/src/cmd/awk/awkgram.y"  void setfname(Cell *p){	if (isarr(p))		SYNTAX("%s is an array, not a function", p->nval);	else if (isfcn(p))		SYNTAX("you can't define function %s more than once", p->nval);	curfname = p->nval;} int constnode(Node *p){	return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON;} char *strnode(Node *p){	return ((Cell *)(p->narg[0]))->sval;} Node *notnull(Node *n){	switch (n->nobj) {	case LE: case LT: case EQ: case NE: case GT: case GE:	case BOR: case AND: case NOT:		return n;	default:		return op2(NE, n, nullnode);	}} void checkdup(Node *vl, Cell *cp)	/* check if name already in list */{	char *s = cp->nval;	for ( ; vl; vl = vl->nnext) {		if (strcmp(s, ((Cell *)(vl->narg[0]))->nval) == 0) {			SYNTAX("duplicate argument %s", s);			break;		}	}}short	yyexca[] ={-1, 0,	1, 28,	8, 28,	9, 28,	12, 28,	13, 28,	16, 28,	45, 28,	46, 28,	54, 28,	55, 28,	56, 28,	58, 28,	60, 28,	78, 28,	86, 28,	87, 28,	88, 28,	89, 28,	90, 28,	91, 28,	95, 28,	97, 28,	98, 28,	101, 28,	102, 28,	105, 28,	108, 28,	109, 28,	110, 28,	-2, 0,-1, 1,	1, -1,	-2, 0,-1, 157,	15, 30,	-2, 0,-1, 176,	14, 0,	24, 0,	38, 0,	39, 0,	40, 0,	41, 0,	42, 0,	43, 0,	44, 0,	-2, 63,-1, 177,	14, 0,	24, 0,	38, 0,	39, 0,	40, 0,	41, 0,	42, 0,	43, 0,	44, 0,	-2, 64,-1, 178,	14, 0,	24, 0,	38, 0,	39, 0,	40, 0,	41, 0,	42, 0,	43, 0,	44, 0,	-2, 65,-1, 179,	14, 0,	24, 0,	38, 0,	39, 0,	40, 0,	41, 0,	42, 0,	43, 0,	44, 0,	-2, 66,-1, 180,	14, 0,	24, 0,	38, 0,	39, 0,	40, 0,	41, 0,	42, 0,	43, 0,	44, 0,	-2, 67,-1, 181,	14, 0,	24, 0,	38, 0,	39, 0,	40, 0,	41, 0,	42, 0,	43, 0,	44, 0,	-2, 68,-1, 183,	14, 0,	24, 0,	38, 0,	39, 0,	40, 0,	41, 0,	42, 0,	43, 0,	44, 0,	-2, 70,-1, 290,	24, 0,	44, 0,	-2, 53,-1, 334,	17, 30,	-2, 0,-1, 356,	17, 30,	-2, 0,};#define	YYNPROD	185#define	YYPRIVATE 57344#define	YYLAST	4170short	yyact[] ={  17, 278, 254, 137, 244, 229, 102, 200,  53,  66,  24, 105,  42, 155, 103, 104, 100, 138, 112, 309,  54, 185, 215,  42, 100, 254, 100, 100, 100, 250, 224, 121, 122, 123,   9, 107,  82,  42, 315,  83, 162, 254, 107, 103, 104, 103, 104, 124, 253, 206,  42, 190, 245,  41,  22,  43, 113, 113, 279, 133, 317, 142,  10, 146,  41, 353,  43, 149, 150, 152, 153, 148, 352, 163, 136, 100,  42,  23,  41,  22,  43, 277, 147, 351, 132,  62, 156,  85, 168, 169,  11,  41,  22,  43, 322, 321,  50, 190,  79,  80, 100, 319,  23,  86, 182, 270, 259, 100, 100, 100, 100, 100, 100, 100, 134,  23, 276,  41, 233,  43, 108, 109, 110, 111, 332, 100, 112, 203, 205, 110, 111, 190, 190, 112, 140,  11, 211, 336, 325, 139, 212, 234, 100, 140, 235, 220, 100, 170, 311, 222, 190, 167, 100, 219, 136, 227, 279, 156, 190, 158, 190, 157, 190, 100, 285, 221, 266, 231, 261, 136, 130, 129, 100, 237, 100, 228, 100, 100, 100, 100, 100, 100, 100, 128, 100, 190, 252, 100, 100, 136, 136, 260, 190,   3, 100,   6, 127, 126, 188,  19,   7,   6, 100,  47, 313, 125,   7, 100,  48, 100, 100, 100, 120, 119, 100, 100,  51,  16,  16, 190, 217, 140, 275, 218, 143, 115, 271, 154, 272,   4, 144, 131, 318, 100, 100, 100, 100, 163,  49, 163, 163, 163, 163,  20, 274, 163, 348, 100, 294, 362, 239, 295, 289, 293, 365,   1, 100, 100,  72,  96,  39, 225,   5,  58,  67, 223, 240, 114,  61, 116, 117, 118, 164,  60, 301, 302, 249, 283,  81, 286, 287, 288, 290,   8, 100, 292, 159, 100, 100, 100, 310, 100, 136, 100, 156, 160, 314,   2, 100,   0, 100, 100,   0,   0, 100,   0, 100, 100, 100,   0,   0,   0,   0,   0, 335,   0, 165, 163,  96,   0,   0,   0,   0,   0,   0, 334,   0,   0, 342, 156, 343,   0,   0,   0, 100, 341,   0,   0,   0, 100, 347, 100,   0, 116, 231, 100, 100,   0, 349, 357,  96, 194, 195, 196, 197, 198, 199, 338,   0, 360, 356,   0, 361, 363, 156,   0, 231,   0, 207, 358, 136, 239,   0,   0, 239, 239, 239,   0, 239,   0, 239,   0,   0, 364,   0,  96, 366, 240,   0,  96, 240, 240, 240,   0, 240,  96, 240,   0,   0,   0, 258,   0,   0,   0, 339,   0, 243,   0,   0,   0,   0,   0,   0,   0,   0,  96,   0,  96,  21,  96,  96,  96,  96,  96,  96,  96, 239,  96,   0,   0,  96,  96,   0,   0,   0,   0, 164, 257, 164, 164, 164, 164, 240,   0, 164,  96,   0,   0,   0,   0, 262,   0,  96,  96,  96,   0,   0,  96,  96,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  96, 280, 281, 282, 165,   0, 165, 165, 165, 165,   0,   0, 165,   0,  96,   0, 166,   0,   0,   0,   0,   0,   0,  96,  96,   0,   0,   0,   0,  74, 189, 191,   0,   0,  15,   0,   0, 184,   0,   0, 164,   0,   0,   0,   0,   0,   0,   0, 106,   0,   0, 243,   0,   0, 243, 243, 243,   0, 243,   0, 243,   0,   0,   0,   0,  96,   0,  96,  96,   0,   0,  96,   0,  96,  96,  96,   0,   0,   0,  15,   0,  15,   0,   0, 165, 236, 141,   0,   0, 145,   0,   0,   0,   0,   0, 151,   0,   0,   0,   0, 230,  96,   0,   0,   0,   0, 243,   0,  96,   0,   0,   0,  96,  96, 171, 173, 175, 176, 177, 178, 179, 180, 181, 183,   0,   0,   0,   0,   0,   0,   0, 186, 187, 263, 264, 265,   0, 267, 268, 269,   0,   0,   0, 201,   0,   0,   0,   0,   0, 201, 201,   0,   0,   0,   0, 208, 209, 210, 201, 213, 214,   0, 189,   0,   0,   0,   0,   0,   0,   0,   0, 101,   0,   0, 296,   0,   0,   0,   0,   0,   0,   0, 241,   0,   0, 291,   0,   0, 232,   0,   0, 106,   0,  98,  97,   0, 298, 246,   0,   0,   0,   0, 242,  42,  28,   0,   0,   0, 304,   0,   0,   0,   0,  45,  46,   0,  33,   0,  34, 255, 312, 256,   0,   0,   0,   0,   0,   0,   0, 324, 327, 329, 330,   0,   0,   0,  37,   0,   0, 189,   0,   0,   0,   0,  41,  22,  43,  29,  35,  38,   0, 238, 316,  32,   0,  36,  40,   0, 337,  27,  26,   0,   0,  99,   0,   0,  30,  31,  23,   0,   0,   0,   0,   0,   0, 201,   0,   0,   0,   0,   0, 297,   0,   0,   0,   0,   0,   0, 299,   0,   0,   0,   0, 300, 303,   0,   0, 305, 306, 307,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 106,   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,   0,   0,   0,  16,  18,   0,  68,  44,   0, 359,   0,   0,   0, 333,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 340,   0,   0,   0,   0,   0, 344,   0, 345,  42,  28,  55,  56,  57,  73,  69,  59,  70,   0,  45,  46,  71,  33,   0,  34,  63,  64,   0,   0,   0,   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,  77,  78,  37,  52,   0,  16,  18,   0,  68,  44,  41,  22,  43,  29,  35,  38,   0,   0,   0,  32,  65,  36,  40,  76,   0,  27,  26,   0,   0,  25,   0,   0,  30,  31,  23,   0,   0,   0,  42,  28,  55,  56,  57,  73,  69,  59,  70,   0,  45,  46,  71,  33,   0,  34,  63,  64,   0,   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,  77,  78,  37,  16,  18,   0,  68,  44,   0, 308,  41,  22,  43,  29,  35,  38,   0,   0,   0,  32,  65,  36,  40,  76,   0,  27,  26,   0,   0,  25,   0,   0,  30,  31,  23,   0,  42,  28,  55,  56,  57,  73,  69,  59,  70,   0,  45,  46,  71,  33,   0,  34,  63,  64,   0,   0,   0,   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,  77,  78,  37, 273,   0,  16,  18,   0,  68,  44,  41,  22,  43,  29,  35,  38,   0,   0,   0,  32,  65,  36,  40,  76,   0,  27,  26,   0,   0,  25,   0,   0,  30,  31,  23,   0,   0,   0,  42,  28,  55,  56,  57,  73,  69,  59,  70,   0,  45,  46,  71,  33,   0,  34,  63,  64,   0,   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,  77,  78,  37,  16,  18,   0,  68,  44,   0, 248,  41,  22,  43,  29,  35,  38,   0,   0,   0,  32,  65,  36,  40,  76,   0,  27,  26,   0,   0,  25,   0,   0,  30,  31,  23,   0,  42,  28,  55,  56,  57,  73,  69,  59,  70,   0,  45,  46,  71,  33,   0,  34,  63,  64,   0,   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,  77,  78,  37,  16,  18,   0,  68,  44,   0, 247,  41,  22,  43,  29,  35,  38,   0,   0,   0,  32,  65,  36,  40,  76,   0,  27,  26,   0,   0,  25,   0,   0,  30,  31,  23,   0,  42,  28,  55,  56,  57,  73,  69,  59,  70,   0,  45,  46,  71,  33,   0,  34,  63,  64,   0,   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,  77,  78,  37,  16,  18,   0,  68,  44,   0, 226,  41,  22,  43,  29,  35,  38,   0,   0,   0,  32,  65,  36,  40,  76,   0,  27,  26,   0,   0,  25,   0,   0,  30,  31,  23,   0,  42,  28,  55,  56,  57,  73,  69,  59,  70,   0,  45,  46,  71,  33,   0,  34,  63,  64,   0,   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,  77,  78,  37,  16,  18,   0,  68,  44,   0, 216,  41,  22,  43,  29,  35,  38,   0,   0,   0,  32,  65,  36,  40,  76,   0,  27,  26,   0,   0,  25,   0,   0,  30,  31,  23,   0,  42,  28,  55,  56,  57,  73,  69,  59,  70,   0,  45,  46,  71,  33,   0,  34,  63,  64,   0,   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,  77,  78,  37,  16,  18,   0,  68,  44,   0, 135,  41,  22,  43,  29,  35,  38,   0,   0,   0,  32,  65,  36,  40,  76,   0,  27,  26,   0,   0,  25,   0,   0,  30,  31,  23,   0,  42,  28,  55,  56,  57,  73,  69,  59,  70,   0,  45,  46,  71,  33,   0,  34,  63,  64,   0,   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,  77,  78,  37,  16,  18,   0,  68,  44,   0,   0,  41,  22,  43,  29,  35,  38,   0,   0,   0,  32,  65,  36,  40,  76,   0,  27,  26,   0,   0,  25,   0,   0,  30,  31,  23,   0,  42,  28,  55,  56,  57,  73,  69,  59,  70,   0,  45,  46,  71,  33,   0,  34,  63,  64,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  77,  78,  37,   0,   0,   0,   0,   0,   0,   0,  41,  22,  43,  29,  35,  38,   0,   0,   0,  32,  65,  36,  40,  76,   0,  27,  26,   0,   0,  25,   0,   0,  30,  31,  23, 190,   0, 101,  95,   0,   0, 331,   0,   0,   0,   0,   0,   0,  93,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  98,  97,   0,  87,  88,  89,  90,  91,  92,  94,  42,  28,   0,   0,   0,   0,   0,   0,   0,   0,  45,  46,   0,  33,   0,  34,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  37,   0,   0,   0,   0,   0,   0,   0,  41,  22,  43,  29,  35,  38,   0,  84,   0,  32,   0,  36,  40,   0,   0,  27,  26,   0,   0,  99,   0,   0,  30,  31,  23, 190,   0, 101,  95,   0,   0, 328,   0,   0,   0,   0,   0,   0,  93,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  98,  97,   0,  87,  88,  89,  90,  91,  92,  94,  42,  28,   0,   0,   0,   0,   0,   0,   0,   0,  45,  46,   0,  33,   0,  34,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  37,   0,   0,   0,   0,   0,   0,   0,  41,  22,  43,  29,  35,  38,   0,  84,   0,  32,   0,  36,  40,   0,   0,  27,  26,   0,   0,  99,   0,   0,  30,  31,  23, 190,   0, 101,  95,   0,   0, 326,   0,   0,   0,   0,   0,   0,  93,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  98,  97,   0,  87,  88,  89,  90,  91,  92,  94,  42,  28,   0,   0,   0,   0,   0,   0,   0,   0,  45,  46,   0,  33,   0,  34,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  37,   0,   0,   0,   0,   0,   0,   0,  41,  22,  43,  29,  35,  38,   0,  84,   0,  32,   0,  36,  40,   0,   0,  27,  26,   0,   0,  99,   0,   0,  30,  31,  23, 140,   0,   0, 101,  95, 139,   0,   0,   0,   0,   0,   0,   0,   0,  93,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  98,  97,   0,  87,  88,  89,  90,  91,  92,  94,  42,  28,   0,   0,   0,   0,   0,   0,   0,   0,  45,  46,   0,  33,   0,  34,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  37,   0,   0,   0,   0,   0,   0,   0,  41,  22,  43,  29,  35,  38,   0,  84,   0,  32,   0,  36,  40,   0,   0,  27,  26,   0,   0,  99,   0,   0,  30,  31,  23, 190,   0, 101,  95,   0,   0, 192,   0,   0,   0,   0,   0,   0,  93,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  98,  97,   0,  87,  88,  89,  90,  91,  92,  94,  42,  28,   0,   0,   0,   0,   0,   0,   0,   0,  45,  46,   0,  33,   0,  34,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  37,   0,   0,   0,   0,   0,   0,   0,  41,  22,  43,  29,  35,  38,   0,  84,   0,  32,   0,  36,

Lines 1–500 of 1620.