#ifndef lint static char const yyrcsid[] = "$FreeBSD: src/usr.bin/yacc/skeleton.c,v 1.28 2000/01/17 02:04:06 bde Exp $"; #endif #include <stdlib.h> #define YYBYACC 1 #define YYMAJOR 1 #define YYMINOR 9 #define YYLEX yylex() #define YYEMPTY -1 #define yyclearin (yychar=(YYEMPTY)) #define yyerrok (yyerrflag=0) #define YYRECOVERING() (yyerrflag!=0) static int yygrowstack(); #define YYPREFIX "yy" #line 89 "jamgram.y" #include "jam.h" #include "lists.h" #include "parse.h" #include "scan.h" #include "compile.h" #include "newstr.h" # define F0 (LIST *(*)(PARSE *, LOL *))0 # define P0 (PARSE *)0 # define S0 (char *)0 # define pappend( l,r ) parse_make( compile_append,l,r,P0,S0,S0,0 ) # define peval( c,l,r ) parse_make( compile_eval,l,r,P0,S0,S0,c ) # define pfor( s,l,r ) parse_make( compile_foreach,l,r,P0,s,S0,0 ) # define pif( l,r,t ) parse_make( compile_if,l,r,t,S0,S0,0 ) # define pincl( l ) parse_make( compile_include,l,P0,P0,S0,S0,0 ) # define plist( s ) parse_make( compile_list,P0,P0,P0,s,S0,0 ) # define plocal( l,r,t ) parse_make( compile_local,l,r,t,S0,S0,0 ) # define pnull() parse_make( compile_null,P0,P0,P0,S0,S0,0 ) # define pon( l,r ) parse_make( compile_on,l,r,P0,S0,S0,0 ) # define prule( s,p ) parse_make( compile_rule,p,P0,P0,s,S0,0 ) # define prules( l,r ) parse_make( compile_rules,l,r,P0,S0,S0,0 ) # define pset( l,r,a ) parse_make( compile_set,l,r,P0,S0,S0,a ) # define pset1( l,r,t,a ) parse_make( compile_settings,l,r,t,S0,S0,a ) # define psetc( s,p ) parse_make( compile_setcomp,p,P0,P0,s,S0,0 ) # define psete( s,l,s1,f ) parse_make( compile_setexec,l,P0,P0,s,s1,f ) # define pswitch( l,r ) parse_make( compile_switch,l,r,P0,S0,S0,0 ) # define pwhile( l,r ) parse_make( compile_while,l,r,P0,S0,S0,0 ) # define pnode( l,r ) parse_make( F0,l,r,P0,S0,S0,0 ) # define psnode( s,l ) parse_make( F0,l,P0,P0,s,S0,0 ) #line 51 "y.tab.c" #define YYERRCODE 256 #define _BANG 257 #define _BANG_EQUALS 258 #define _AMPER 259 #define _AMPERAMPER 260 #define _LPAREN 261 #define _RPAREN 262 #define _PLUS_EQUALS 263 #define _COLON 264 #define _SEMIC 265 #define _LANGLE 266 #define _LANGLE_EQUALS 267 #define _EQUALS 268 #define _RANGLE 269 #define _RANGLE_EQUALS 270 #define _QUESTION_EQUALS 271 #define _LBRACKET 272 #define _RBRACKET 273 #define ACTIONS 274 #define BIND 275 #define CASE 276 #define DEFAULT 277 #define ELSE 278 #define EXISTING 279 #define FOR 280 #define IF 281 #define IGNORE 282 #define IN 283 #define INCLUDE 284 #define LOCAL 285 #define ON 286 #define PIECEMEAL 287 #define QUIETLY 288 #define RETURN 289 #define RULE 290 #define SWITCH 291 #define TOGETHER 292 #define UPDATED 293 #define WHILE 294 #define _LBRACE 295 #define _BAR 296 #define _BARBAR 297 #define _RBRACE 298 #define ARG 299 #define STRING 300 const short yylhs[] = { -1, 0, 0, 2, 2, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 12, 13, 3, 7, 7, 7, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 14, 5, 5, 4, 15, 15, 6, 6, 10, 10, 16, 16, 16, 16, 16, 16, 11, 11, }; const short yylen[] = { 2, 0, 1, 0, 1, 1, 2, 4, 6, 3, 3, 3, 4, 6, 3, 7, 5, 5, 7, 5, 3, 3, 0, 0, 9, 1, 1, 1, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 0, 2, 4, 1, 3, 1, 0, 2, 1, 4, 0, 2, 1, 1, 1, 1, 1, 1, 0, 2, }; const short yydefred[] = { 0, 0, 53, 0, 0, 49, 49, 0, 49, 0, 49, 0, 0, 0, 0, 2, 0, 0, 49, 0, 0, 0, 0, 51, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 6, 26, 25, 27, 0, 49, 49, 0, 60, 57, 59, 58, 56, 55, 0, 54, 49, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 50, 0, 49, 21, 14, 20, 0, 0, 9, 49, 11, 28, 0, 0, 52, 49, 0, 0, 42, 0, 0, 0, 32, 33, 0, 34, 35, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 47, 49, 12, 62, 22, 0, 0, 0, 0, 16, 44, 19, 0, 0, 0, 0, 8, 0, 13, 23, 15, 18, 45, 0, 24, }; const short yydgoto[] = { 14, 34, 35, 16, 36, 37, 24, 44, 104, 25, 19, 86, 120, 130, 105, 27, 53, }; const short yysindex[] = { -56, -259, 0, -257, -236, 0, 0, -256, 0, -255, 0, -236, -56, 0, 0, 0, -56, -3, 0, 37, -231, -236, -236, 0, 0, -165, -194, -256, -238, -32, -185, -32, -198, -131, 0, -202, -164, -166, 0, 0, 0, 0, -160, 0, 0, -163, 0, 0, 0, 0, 0, 0, -158, 0, 0, 0, -113, -236, -236, -236, -236, -236, -236, -236, -236, -236, -56, -236, -236, 0, 0, -56, 0, 0, 0, 0, -161, -56, 0, 0, 0, 0, -199, -154, 0, 0, -183, -176, 0, -216, 40, 40, 0, 0, -216, 0, 0, -216, -178, 45, 45, 0, -144, -177, -175, -161, -157, 0, 0, 0, 0, 0, -56, -145, -56, -130, 0, 0, 0, -125, -152, -148, -32, 0, -56, 0, 0, 0, 0, 0, -147, 0, }; const short yyrindex[] = { 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, -78, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, -239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 0, 0, 0, 0, 4, 0, 0, 0, 0, -123, -136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, -240, -153, 0, 0, -91, 0, 0, -86, 0, -230, -137, 0, 0, 0, 0, -123, 0, 0, 0, 0, 0, 0, -136, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, -270, 0, 0, 0, 0, 0, 0, 0, }; const short yygindex[] = { 0, 8, -54, -24, 5, -18, 2, 96, 74, 24, 0, 0, 0, 0, 0, 0, 0, }; #define YYTABLESIZE 336 const short yytable[] = { 45, 17, 17, 5, 3, 73, 3, 75, 15, 29, 26, 28, 98, 30, 17, 32, 1, 101, 17, 36, 36, 21, 36, 106, 38, 22, 46, 71, 3, 70, 72, 17, 38, 17, 46, 33, 1, 31, 31, 31, 18, 31, 20, 23, 31, 55, 56, 31, 82, 83, 60, 61, 54, 63, 64, 36, 36, 36, 121, 87, 123, 107, 31, 23, 39, 38, 38, 38, 17, 40, 129, 69, 41, 17, 31, 31, 31, 102, 42, 17, 74, 89, 90, 91, 92, 93, 94, 95, 96, 97, 110, 99, 100, 57, 58, 59, 78, 76, 128, 80, 79, 60, 61, 62, 63, 64, 37, 37, 81, 37, 84, 109, 111, 119, 17, 103, 17, 85, 65, 112, 113, 114, 115, 116, 17, 39, 17, 57, 58, 59, 66, 67, 68, 122, 124, 60, 61, 62, 63, 64, 125, 118, 37, 37, 37, 57, 58, 59, 126, 88, 127, 131, 65, 60, 61, 62, 63, 64, 39, 39, 39, 1, 3, 61, 77, 67, 68, 30, 30, 30, 65, 30, 40, 40, 40, 43, 40, 30, 108, 117, 0, 0, 40, 67, 68, 51, 49, 49, 0, 0, 51, 0, 30, 51, 49, 0, 0, 40, 0, 51, 0, 0, 0, 0, 30, 30, 30, 0, 51, 40, 40, 40, 48, 48, 48, 0, 1, 48, 2, 0, 48, 49, 48, 0, 3, 4, 48, 0, 5, 6, 7, 0, 0, 8, 9, 10, 0, 0, 11, 12, 1, 0, 2, 13, 48, 0, 0, 0, 3, 4, 0, 0, 5, 0, 7, 0, 0, 8, 9, 10, 39, 0, 11, 12, 0, 40, 0, 13, 41, 0, 0, 0, 0, 17, 42, 17, 0, 17, 0, 5, 3, 17, 17, 43, 0, 17, 17, 17, 0, 0, 17, 17, 17, 0, 0, 17, 17, 0, 57, 17, 17, 5, 3, 57, 58, 59, 60, 61, 62, 63, 64, 60, 61, 62, 63, 64, 46, 0, 0, 47, 0, 0, 0, 65, 48, 49, 0, 0, 65, 50, 51, 0, 0, 0, 0, 0, 52, }; const short yycheck[] = { 18, 0, 0, 0, 0, 29, 276, 31, 0, 7, 5, 6, 66, 8, 12, 10, 272, 71, 16, 259, 260, 257, 262, 77, 16, 261, 265, 265, 298, 27, 268, 29, 262, 31, 273, 11, 272, 258, 259, 260, 299, 262, 299, 299, 299, 21, 22, 268, 43, 44, 266, 267, 283, 269, 270, 295, 296, 297, 112, 54, 114, 79, 283, 299, 263, 295, 296, 297, 66, 268, 124, 265, 271, 71, 295, 296, 297, 72, 277, 77, 265, 57, 58, 59, 60, 61, 62, 63, 64, 65, 85, 67, 68, 258, 259, 260, 298, 295, 122, 265, 264, 266, 267, 268, 269, 270, 259, 260, 268, 262, 273, 265, 295, 108, 112, 276, 114, 275, 283, 295, 298, 265, 299, 298, 122, 262, 124, 258, 259, 260, 295, 296, 297, 278, 264, 266, 267, 268, 269, 270, 265, 298, 295, 296, 297, 258, 259, 260, 300, 262, 298, 298, 283, 266, 267, 268, 269, 270, 295, 296, 297, 0, 298, 295, 295, 296, 297, 258, 259, 260, 283, 262, 258, 259, 260, 298, 262, 268, 82, 105, -1, -1, 268, 296, 297, 263, 264, 265, -1, -1, 268, -1, 283, 271, 272, -1, -1, 283, -1, 277, -1, -1, -1, -1, 295, 296, 297, -1, 286, 295, 296, 297, 263, 264, 265, -1, 272, 268, 274, -1, 271, 299, 273, -1, 280, 281, 277, -1, 284, 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, 295, 272, -1, 274, 299, 295, -1, -1, -1, 280, 281, -1, -1, 284, -1, 286, -1, -1, 289, 290, 291, 263, -1, 294, 295, -1, 268, -1, 299, 271, -1, -1, -1, -1, 272, 277, 274, -1, 276, -1, 276, 276, 280, 281, 286, -1, 284, 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, 295, -1, 258, 298, 299, 298, 298, 258, 259, 260, 266, 267, 268, 269, 270, 266, 267, 268, 269, 270, 279, -1, -1, 282, -1, -1, -1, 283, 287, 288, -1, -1, 283, 292, 293, -1, -1, -1, -1, -1, 299, }; #define YYFINAL 14 #ifndef YYDEBUG #define YYDEBUG 0 #endif #define YYMAXTOKEN 300 #if YYDEBUG const char * const 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,"_BANG","_BANG_EQUALS","_AMPER", "_AMPERAMPER","_LPAREN","_RPAREN","_PLUS_EQUALS","_COLON","_SEMIC","_LANGLE", "_LANGLE_EQUALS","_EQUALS","_RANGLE","_RANGLE_EQUALS","_QUESTION_EQUALS", "_LBRACKET","_RBRACKET","ACTIONS","BIND","CASE","DEFAULT","ELSE","EXISTING", "FOR","IF","IGNORE","IN","INCLUDE","LOCAL","ON","PIECEMEAL","QUIETLY","RETURN", "RULE","SWITCH","TOGETHER","UPDATED","WHILE","_LBRACE","_BAR","_BARBAR", "_RBRACE","ARG","STRING", }; const char * const yyrule[] = { "$accept : run", "run :", "run : rules", "block :", "block : rules", "rules : rule", "rules : rule rules", "rules : LOCAL list _SEMIC block", "rules : LOCAL list _EQUALS list _SEMIC block", "rule : _LBRACE block _RBRACE", "rule : INCLUDE list _SEMIC", "rule : ARG lol _SEMIC", "rule : arg assign list _SEMIC", "rule : arg ON list assign list _SEMIC", "rule : RETURN list _SEMIC", "rule : FOR ARG IN list _LBRACE block _RBRACE", "rule : SWITCH list _LBRACE cases _RBRACE", "rule : IF expr _LBRACE block _RBRACE", "rule : IF expr _LBRACE block _RBRACE ELSE rule", "rule : WHILE expr _LBRACE block _RBRACE", "rule : RULE ARG rule", "rule : ON arg rule", "$$1 :", "$$2 :", "rule : ACTIONS eflags ARG bindlist _LBRACE $$1 STRING $$2 _RBRACE", "assign : _EQUALS", "assign : _PLUS_EQUALS", "assign : _QUESTION_EQUALS", "assign : DEFAULT _EQUALS", "expr : arg", "expr : expr _EQUALS expr", "expr : expr _BANG_EQUALS expr", "expr : expr _LANGLE expr", "expr : expr _LANGLE_EQUALS expr", "expr : expr _RANGLE expr", "expr : expr _RANGLE_EQUALS expr", "expr : expr _AMPER expr", "expr : expr _AMPERAMPER expr", "expr : expr _BAR expr", "expr : expr _BARBAR expr", "expr : expr IN expr", "expr : _BANG expr", "expr : _LPAREN expr _RPAREN", "cases :", "cases : case cases", "case : CASE ARG _COLON block", "lol : list", "lol : list _COLON lol", "list : listp", "listp :", "listp : listp arg", "arg : ARG", "arg : _LBRACKET ARG lol _RBRACKET", "eflags :", "eflags : eflags eflag", "eflag : UPDATED", "eflag : TOGETHER", "eflag : IGNORE", "eflag : QUIETLY", "eflag : PIECEMEAL", "eflag : EXISTING", "bindlist :", "bindlist : BIND list", }; #endif #ifndef YYSTYPE typedef int YYSTYPE; #endif #if YYDEBUG #include <stdio.h> #endif #ifdef YYSTACKSIZE #undef YYMAXDEPTH #define YYMAXDEPTH YYSTACKSIZE #else #ifdef YYMAXDEPTH #define YYSTACKSIZE YYMAXDEPTH #else #define YYSTACKSIZE 10000 #define YYMAXDEPTH 10000 #endif #endif #define YYINITSTACKSIZE 200 int yydebug; int yynerrs; int yyerrflag; int yychar; short *yyssp; YYSTYPE *yyvsp; YYSTYPE yyval; YYSTYPE yylval; short *yyss; short *yysslim; YYSTYPE *yyvs; int yystacksize; /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack() { int newsize, i; short *newss; YYSTYPE *newvs; if ((newsize = yystacksize) == 0) newsize = YYINITSTACKSIZE; else if (newsize >= YYMAXDEPTH) return -1; else if ((newsize *= 2) > YYMAXDEPTH) newsize = YYMAXDEPTH; i = yyssp - yyss; newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) : (short *)malloc(newsize * sizeof *newss); if (newss == NULL) return -1; yyss = newss; yyssp = newss + i; newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) : (YYSTYPE *)malloc(newsize * sizeof *newvs); if (newvs == NULL) return -1; yyvs = newvs; yyvsp = newvs + i; yystacksize = newsize; yysslim = yyss + newsize - 1; return 0; } #define YYABORT goto yyabort #define YYREJECT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab #ifndef YYPARSE_PARAM #if defined(__cplusplus) || __STDC__ #define YYPARSE_PARAM_ARG void #define YYPARSE_PARAM_DECL #else /* ! ANSI-C/C++ */ #define YYPARSE_PARAM_ARG #define YYPARSE_PARAM_DECL #endif /* ANSI-C/C++ */ #else /* YYPARSE_PARAM */ #ifndef YYPARSE_PARAM_TYPE #define YYPARSE_PARAM_TYPE void * #endif #if defined(__cplusplus) || __STDC__ #define YYPARSE_PARAM_ARG YYPARSE_PARAM_TYPE YYPARSE_PARAM #define YYPARSE_PARAM_DECL #else /* ! ANSI-C/C++ */ #define YYPARSE_PARAM_ARG YYPARSE_PARAM #define YYPARSE_PARAM_DECL YYPARSE_PARAM_TYPE YYPARSE_PARAM; #endif /* ANSI-C/C++ */ #endif /* ! YYPARSE_PARAM */ int yyparse (YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL { register int yym, yyn, yystate; #if YYDEBUG register const char *yys; if ((yys = getenv("YYDEBUG"))) { yyn = *yys; if (yyn >= '0' && yyn <= '9') yydebug = yyn - '0'; } #endif yynerrs = 0; yyerrflag = 0; yychar = (-1); if (yyss == NULL && yygrowstack()) goto yyoverflow; yyssp = yyss; yyvsp = yyvs; *yyssp = yystate = 0; yyloop: if ((yyn = yydefred[yystate])) goto yyreduce; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif if (yyssp >= yysslim && yygrowstack()) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; yychar = (-1); if (yyerrflag > 0) --yyerrflag; goto yyloop; } if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { yyn = yytable[yyn]; goto yyreduce; } if (yyerrflag) goto yyinrecovery; #if defined(lint) || defined(__GNUC__) goto yynewerror; #endif yynewerror: yyerror("syntax error"); #if defined(lint) || defined(__GNUC__) goto yyerrlab; #endif yyerrlab: ++yynerrs; yyinrecovery: if (yyerrflag < 3) { yyerrflag = 3; for (;;) { if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); #endif if (yyssp >= yysslim && yygrowstack()) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; goto yyloop; } else { #if YYDEBUG if (yydebug) printf("%sdebug: error recovery discarding state %d\n", YYPREFIX, *yyssp); #endif if (yyssp <= yyss) goto yyabort; --yyssp; --yyvsp; } } } else { if (yychar == 0) goto yyabort; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif yychar = (-1); goto yyloop; } yyreduce: #if YYDEBUG if (yydebug) printf("%sdebug: state %d, reducing by rule %d (%s)\n", YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; yyval = yyvsp[1-yym]; switch (yyn) { case 2: #line 129 "jamgram.y" { parse_save( yyvsp[0].parse ); } break; case 3: #line 140 "jamgram.y" { yyval.parse = pnull(); } break; case 4: #line 142 "jamgram.y" { yyval.parse = yyvsp[0].parse; } break; case 5: #line 146 "jamgram.y" { yyval.parse = yyvsp[0].parse; } break; case 6: #line 148 "jamgram.y" { yyval.parse = prules( yyvsp[-1].parse, yyvsp[0].parse ); } break; case 7: #line 150 "jamgram.y" { yyval.parse = plocal( yyvsp[-2].parse, pnull(), yyvsp[0].parse ); } break; case 8: #line 152 "jamgram.y" { yyval.parse = plocal( yyvsp[-4].parse, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 9: #line 156 "jamgram.y" { yyval.parse = yyvsp[-1].parse; } break; case 10: #line 158 "jamgram.y" { yyval.parse = pincl( yyvsp[-1].parse ); } break; case 11: #line 160 "jamgram.y" { yyval.parse = prule( yyvsp[-2].string, yyvsp[-1].parse ); } break; case 12: #line 162 "jamgram.y" { yyval.parse = pset( yyvsp[-3].parse, yyvsp[-1].parse, yyvsp[-2].number ); } break; case 13: #line 164 "jamgram.y" { yyval.parse = pset1( yyvsp[-5].parse, yyvsp[-3].parse, yyvsp[-1].parse, yyvsp[-2].number ); } break; case 14: #line 166 "jamgram.y" { yyval.parse = yyvsp[-1].parse; } break; case 15: #line 168 "jamgram.y" { yyval.parse = pfor( yyvsp[-5].string, yyvsp[-3].parse, yyvsp[-1].parse ); } break; case 16: #line 170 "jamgram.y" { yyval.parse = pswitch( yyvsp[-3].parse, yyvsp[-1].parse ); } break; case 17: #line 172 "jamgram.y" { yyval.parse = pif( yyvsp[-3].parse, yyvsp[-1].parse, pnull() ); } break; case 18: #line 174 "jamgram.y" { yyval.parse = pif( yyvsp[-5].parse, yyvsp[-3].parse, yyvsp[0].parse ); } break; case 19: #line 176 "jamgram.y" { yyval.parse = pwhile( yyvsp[-3].parse, yyvsp[-1].parse ); } break; case 20: #line 178 "jamgram.y" { yyval.parse = psetc( yyvsp[-1].string, yyvsp[0].parse ); } break; case 21: #line 180 "jamgram.y" { yyval.parse = pon( yyvsp[-1].parse, yyvsp[0].parse ); } break; case 22: #line 182 "jamgram.y" { yymode( SCAN_STRING ); } break; case 23: #line 184 "jamgram.y" { yymode( SCAN_NORMAL ); } break; case 24: #line 186 "jamgram.y" { yyval.parse = psete( yyvsp[-6].string,yyvsp[-5].parse,yyvsp[-2].string,yyvsp[-7].number ); } break; case 25: #line 194 "jamgram.y" { yyval.number = ASSIGN_SET; } break; case 26: #line 196 "jamgram.y" { yyval.number = ASSIGN_APPEND; } break; case 27: #line 198 "jamgram.y" { yyval.number = ASSIGN_DEFAULT; } break; case 28: #line 200 "jamgram.y" { yyval.number = ASSIGN_DEFAULT; } break; case 29: #line 208 "jamgram.y" { yyval.parse = peval( EXPR_EXISTS, yyvsp[0].parse, pnull() ); } break; case 30: #line 210 "jamgram.y" { yyval.parse = peval( EXPR_EQUALS, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 31: #line 212 "jamgram.y" { yyval.parse = peval( EXPR_NOTEQ, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 32: #line 214 "jamgram.y" { yyval.parse = peval( EXPR_LESS, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 33: #line 216 "jamgram.y" { yyval.parse = peval( EXPR_LESSEQ, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 34: #line 218 "jamgram.y" { yyval.parse = peval( EXPR_MORE, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 35: #line 220 "jamgram.y" { yyval.parse = peval( EXPR_MOREEQ, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 36: #line 222 "jamgram.y" { yyval.parse = peval( EXPR_AND, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 37: #line 224 "jamgram.y" { yyval.parse = peval( EXPR_AND, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 38: #line 226 "jamgram.y" { yyval.parse = peval( EXPR_OR, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 39: #line 228 "jamgram.y" { yyval.parse = peval( EXPR_OR, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 40: #line 230 "jamgram.y" { yyval.parse = peval( EXPR_IN, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 41: #line 232 "jamgram.y" { yyval.parse = peval( EXPR_NOT, yyvsp[0].parse, pnull() ); } break; case 42: #line 234 "jamgram.y" { yyval.parse = yyvsp[-1].parse; } break; case 43: #line 244 "jamgram.y" { yyval.parse = P0; } break; case 44: #line 246 "jamgram.y" { yyval.parse = pnode( yyvsp[-1].parse, yyvsp[0].parse ); } break; case 45: #line 250 "jamgram.y" { yyval.parse = psnode( yyvsp[-2].string, yyvsp[0].parse ); } break; case 46: #line 259 "jamgram.y" { yyval.parse = pnode( P0, yyvsp[0].parse ); } break; case 47: #line 261 "jamgram.y" { yyval.parse = pnode( yyvsp[0].parse, yyvsp[-2].parse ); } break; case 48: #line 271 "jamgram.y" { yyval.parse = yyvsp[0].parse; yymode( SCAN_NORMAL ); } break; case 49: #line 275 "jamgram.y" { yyval.parse = pnull(); yymode( SCAN_PUNCT ); } break; case 50: #line 277 "jamgram.y" { yyval.parse = pappend( yyvsp[-1].parse, yyvsp[0].parse ); } break; case 51: #line 281 "jamgram.y" { yyval.parse = plist( yyvsp[0].string ); } break; case 52: #line 283 "jamgram.y" { yyval.parse = prule( yyvsp[-2].string, yyvsp[-1].parse ); } break; case 53: #line 293 "jamgram.y" { yyval.number = 0; } break; case 54: #line 295 "jamgram.y" { yyval.number = yyvsp[-1].number | yyvsp[0].number; } break; case 55: #line 299 "jamgram.y" { yyval.number = EXEC_UPDATED; } break; case 56: #line 301 "jamgram.y" { yyval.number = EXEC_TOGETHER; } break; case 57: #line 303 "jamgram.y" { yyval.number = EXEC_IGNORE; } break; case 58: #line 305 "jamgram.y" { yyval.number = EXEC_QUIETLY; } break; case 59: #line 307 "jamgram.y" { yyval.number = EXEC_PIECEMEAL; } break; case 60: #line 309 "jamgram.y" { yyval.number = EXEC_EXISTING; } break; case 61: #line 318 "jamgram.y" { yyval.parse = pnull(); } break; case 62: #line 320 "jamgram.y" { yyval.parse = yyvsp[0].parse; } break; #line 799 "y.tab.c" } yyssp -= yym; yystate = *yyssp; yyvsp -= yym; yym = yylhs[yyn]; if (yystate == 0 && yym == 0) { #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state 0 to\ state %d\n", YYPREFIX, YYFINAL); #endif yystate = YYFINAL; *++yyssp = YYFINAL; *++yyvsp = yyval; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } #endif } if (yychar == 0) goto yyaccept; goto yyloop; } if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yyssp, yystate); #endif if (yyssp >= yysslim && yygrowstack()) { goto yyoverflow; } *++yyssp = yystate; *++yyvsp = yyval; goto yyloop; yyoverflow: yyerror("yacc stack overflow"); yyabort: return (1); yyaccept: return (0); }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#4 | 1306 | Richard Geiger |
Experimental support for '[ on target rule ]' in jam, so that you can access target-specific variables. It is crunchy right now, in that the list of things you can do inside []'s is limited to (a) user-defined rules and (b) the "return" statement. === computer.perforce.com:1666: Change 21437 by seiwald@golly-seiwald on 2001/03/23 10:43:34 Tweaked my earlier version of documenting [ rule ] to explicitly show both forms ( [ rule ... ] and [ on targ rule ... ] ) - rmg |
||
#3 | 1295 | Richard Geiger |
Support for 'while' statement in jam. Useful? Who knows. === computer.perforce.com:1666: Change 20250 by seiwald@golly-seiwald on 2001/01/24 15:54:02 Documented in Jam.html - rmg |
||
#2 | 1288 | Richard Geiger |
Fix typo (swapped params) in compile.c, and update jamgram.c/y to reflect newest jamgram.yy. === computer.perforce.com:1666: Change 20207 by seiwald@golly-seiwald on 2001/01/22 13:32:01 Note: the changes to jamgram.[cy] from the patch were discarded, and these were rebuilt on the integration platform, since the patch failed due to differences in the yacc between the "internal" build platform and the Public Depot integration platform. - rmg |
||
#1 | 1207 | Richard Geiger | Establish this branch to use for import of Perforce Jam. | ||
//guest/perforce_software/jam/src/jamgram.c | |||||
#3 | 486 | Perforce staff |
Jam 2.3. See RELNOTES for a list of changes from 2.2.x. Just about every source file was touched when jam got ANSI-fied. |
||
#2 | 3 | Perforce maintenance | Jam/MR 2.2.1 (fix for NT handle leak) | ||
#1 | 2 | laura | Add Jam/MR 2.2 source |