#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" #include "rules.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( a,p ) parse_make( compile_rule,a,p,P0,S0,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 52 "y.tab.c" #define YYERRCODE 256 #define _LANGLE 257 #define _LANGLE_EQUALS 258 #define _EQUALS 259 #define _RANGLE 260 #define _RANGLE_EQUALS 261 #define _BAR 262 #define _BARBAR 263 #define _SEMIC 264 #define _COLON 265 #define _BANG 266 #define _BANG_EQUALS 267 #define _QUESTION_EQUALS 268 #define _LPAREN 269 #define _RPAREN 270 #define _LBRACKET 271 #define _RBRACKET 272 #define _LBRACE 273 #define _RBRACE 274 #define _AMPER 275 #define _AMPERAMPER 276 #define _PLUS_EQUALS 277 #define ACTIONS 278 #define BIND 279 #define CASE 280 #define DEFAULT 281 #define ELSE 282 #define EXISTING 283 #define FOR 284 #define IF 285 #define IGNORE 286 #define IN 287 #define INCLUDE 288 #define LOCAL 289 #define ON 290 #define PIECEMEAL 291 #define QUIETLY 292 #define RETURN 293 #define RULE 294 #define SWITCH 295 #define TOGETHER 296 #define UPDATED 297 #define WHILE 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, 6, 6, 4, 15, 15, 5, 17, 5, 16, 16, 16, 10, 10, 18, 18, 18, 18, 18, 18, 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, 0, 4, 2, 4, 4, 0, 2, 1, 1, 1, 1, 1, 1, 0, 2, }; const short yydefred[] = { 0, 52, 0, 57, 0, 0, 49, 49, 0, 49, 0, 49, 0, 51, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 25, 27, 26, 0, 49, 0, 0, 49, 0, 49, 0, 9, 64, 61, 63, 62, 60, 59, 0, 58, 49, 41, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 50, 49, 0, 21, 14, 20, 0, 0, 28, 0, 49, 11, 0, 0, 54, 53, 49, 0, 0, 42, 40, 32, 33, 0, 34, 35, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 49, 47, 12, 49, 49, 66, 22, 0, 0, 0, 0, 16, 44, 19, 0, 56, 55, 0, 0, 0, 8, 0, 13, 23, 15, 18, 45, 0, 24, }; const short yydgoto[] = { 14, 19, 20, 16, 41, 25, 42, 43, 107, 26, 21, 89, 127, 137, 108, 28, 46, 18, 55, }; const short yysindex[] = { -192, 0, -192, 0, -276, -245, 0, 0, -254, 0, -247, 0, -245, 0, 0, 0, -192, -228, -261, 0, -203, 25, -212, -245, -245, -197, -56, -179, -254, -218, -124, -173, -124, -168, -36, 0, 0, 0, 0, -165, 0, -157, -146, 0, -254, 0, -156, 0, 0, 0, 0, 0, 0, 0, -155, 0, 0, 0, -16, 0, -245, -245, -245, -245, -245, -245, -245, -245, -192, -245, -245, 0, 0, 0, -192, 0, 0, 0, -154, -192, 0, -217, 0, 0, -135, -260, 0, 0, 0, -143, -142, 0, 0, 0, 0, -48, 0, 0, -202, -202, -48, -140, 85, 85, -132, 0, -151, -130, -154, -121, 0, 0, 0, 0, 0, 0, 0, -192, -127, -192, -115, 0, 0, 0, -108, 0, 0, -137, -117, -124, 0, -192, 0, 0, 0, 0, 0, -116, 0, }; const short yyrindex[] = { 165, 0, -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -256, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, -81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0, 0, 3, 0, 0, 0, -102, -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, -186, -111, 39, 0, 56, 65, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, -107, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, }; const short yygindex[] = { 0, 28, -49, -25, 7, 4, -45, 92, 77, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; #define YYTABLESIZE 352 const short yytable[] = { 86, 17, 5, 3, 17, 75, 17, 77, 49, 49, 1, 1, 30, 27, 29, 49, 31, 1, 33, 101, 17, 23, 45, 22, 24, 105, 1, 46, 15, 44, 109, 36, 72, 113, 17, 46, 17, 111, 13, 13, 37, 73, 36, 49, 35, 13, 74, 81, 85, 38, 84, 37, 32, 39, 13, 60, 61, 62, 63, 64, 38, 3, 40, 90, 39, 67, 92, 3, 128, 126, 130, 47, 17, 69, 70, 56, 38, 38, 17, 1, 104, 2, 136, 17, 38, 71, 3, 38, 34, 114, 59, 76, 4, 5, 80, 115, 6, 7, 8, 57, 58, 9, 10, 11, 135, 78, 12, 13, 82, 29, 29, 29, 29, 29, 29, 29, 87, 124, 83, 29, 125, 17, 29, 17, 88, 29, 106, 29, 29, 112, 116, 117, 119, 17, 118, 17, 93, 94, 95, 96, 97, 98, 99, 100, 121, 102, 103, 1, 120, 2, 131, 39, 39, 123, 3, 129, 132, 134, 138, 39, 4, 5, 39, 133, 6, 1, 8, 3, 65, 9, 10, 11, 43, 110, 12, 13, 48, 48, 48, 48, 48, 48, 48, 48, 48, 122, 48, 48, 0, 48, 0, 48, 48, 0, 48, 48, 48, 0, 0, 0, 48, 60, 61, 62, 63, 64, 65, 66, 0, 60, 61, 67, 63, 64, 0, 0, 0, 68, 0, 69, 70, 60, 61, 62, 63, 64, 65, 66, 0, 0, 0, 67, 0, 0, 0, 0, 0, 79, 0, 69, 70, 60, 61, 62, 63, 64, 65, 66, 0, 0, 0, 67, 0, 30, 91, 0, 30, 30, 0, 69, 70, 30, 0, 0, 30, 0, 0, 30, 0, 30, 30, 0, 17, 0, 17, 17, 5, 3, 0, 17, 0, 17, 5, 3, 0, 17, 17, 0, 0, 17, 17, 17, 0, 0, 17, 17, 17, 0, 31, 17, 17, 31, 31, 0, 0, 0, 31, 0, 48, 31, 0, 49, 31, 0, 31, 31, 50, 51, 36, 36, 0, 52, 53, 0, 54, 0, 36, 37, 37, 36, 0, 36, 36, 0, 0, 37, 0, 0, 37, 0, 37, 37, 60, 61, 62, 63, 64, 0, 0, 0, 0, 0, 67, }; const short yycheck[] = { 45, 0, 0, 0, 0, 30, 2, 32, 264, 265, 271, 271, 8, 6, 7, 271, 9, 271, 11, 68, 16, 266, 18, 299, 269, 74, 271, 264, 0, 290, 79, 259, 28, 293, 30, 272, 32, 82, 299, 299, 268, 259, 259, 299, 16, 299, 264, 40, 44, 277, 43, 268, 299, 281, 299, 257, 258, 259, 260, 261, 277, 274, 290, 56, 281, 267, 59, 280, 117, 114, 119, 274, 68, 275, 276, 287, 262, 263, 74, 271, 73, 273, 131, 79, 270, 264, 278, 273, 12, 85, 287, 264, 284, 285, 259, 88, 288, 289, 290, 23, 24, 293, 294, 295, 129, 273, 298, 299, 265, 257, 258, 259, 260, 261, 262, 263, 272, 110, 264, 267, 113, 117, 270, 119, 279, 273, 280, 275, 276, 264, 273, 273, 264, 129, 274, 131, 60, 61, 62, 63, 64, 65, 66, 67, 274, 69, 70, 271, 299, 273, 265, 262, 263, 274, 278, 282, 264, 274, 274, 270, 284, 285, 273, 300, 288, 0, 290, 274, 273, 293, 294, 295, 274, 81, 298, 299, 257, 258, 259, 260, 261, 262, 263, 264, 265, 108, 267, 268, -1, 270, -1, 272, 273, -1, 275, 276, 277, -1, -1, -1, 281, 257, 258, 259, 260, 261, 262, 263, -1, 257, 258, 267, 260, 261, -1, -1, -1, 273, -1, 275, 276, 257, 258, 259, 260, 261, 262, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, 273, -1, 275, 276, 257, 258, 259, 260, 261, 262, 263, -1, -1, -1, 267, -1, 259, 270, -1, 262, 263, -1, 275, 276, 267, -1, -1, 270, -1, -1, 273, -1, 275, 276, -1, 271, -1, 273, 274, 274, 274, -1, 278, -1, 280, 280, 280, -1, 284, 285, -1, -1, 288, 289, 290, -1, -1, 293, 294, 295, -1, 259, 298, 299, 262, 263, -1, -1, -1, 267, -1, 283, 270, -1, 286, 273, -1, 275, 276, 291, 292, 262, 263, -1, 296, 297, -1, 299, -1, 270, 262, 263, 273, -1, 275, 276, -1, -1, 270, -1, -1, 273, -1, 275, 276, 257, 258, 259, 260, 261, -1, -1, -1, -1, -1, 267, }; #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,"_LANGLE","_LANGLE_EQUALS", "_EQUALS","_RANGLE","_RANGLE_EQUALS","_BAR","_BARBAR","_SEMIC","_COLON","_BANG", "_BANG_EQUALS","_QUESTION_EQUALS","_LPAREN","_RPAREN","_LBRACKET","_RBRACKET", "_LBRACE","_RBRACE","_AMPER","_AMPERAMPER","_PLUS_EQUALS","ACTIONS","BIND", "CASE","DEFAULT","ELSE","EXISTING","FOR","IF","IGNORE","IN","INCLUDE","LOCAL", "ON","PIECEMEAL","QUIETLY","RETURN","RULE","SWITCH","TOGETHER","UPDATED", "WHILE","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 : arg IN list", "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", "$$3 :", "arg : _LBRACKET $$3 func _RBRACKET", "func : arg lol", "func : ON arg arg lol", "func : ON arg RETURN list", "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 130 "jamgram.y" { parse_save( yyvsp[0].parse ); } break; case 3: #line 141 "jamgram.y" { yyval.parse = pnull(); } break; case 4: #line 143 "jamgram.y" { yyval.parse = yyvsp[0].parse; } break; case 5: #line 147 "jamgram.y" { yyval.parse = yyvsp[0].parse; } break; case 6: #line 149 "jamgram.y" { yyval.parse = prules( yyvsp[-1].parse, yyvsp[0].parse ); } break; case 7: #line 151 "jamgram.y" { yyval.parse = plocal( yyvsp[-2].parse, pnull(), yyvsp[0].parse ); } break; case 8: #line 153 "jamgram.y" { yyval.parse = plocal( yyvsp[-4].parse, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 9: #line 157 "jamgram.y" { yyval.parse = yyvsp[-1].parse; } break; case 10: #line 159 "jamgram.y" { yyval.parse = pincl( yyvsp[-1].parse ); } break; case 11: #line 161 "jamgram.y" { yyval.parse = prule( yyvsp[-2].parse, yyvsp[-1].parse ); } break; case 12: #line 163 "jamgram.y" { yyval.parse = pset( yyvsp[-3].parse, yyvsp[-1].parse, yyvsp[-2].number ); } break; case 13: #line 165 "jamgram.y" { yyval.parse = pset1( yyvsp[-5].parse, yyvsp[-3].parse, yyvsp[-1].parse, yyvsp[-2].number ); } break; case 14: #line 167 "jamgram.y" { yyval.parse = yyvsp[-1].parse; } break; case 15: #line 169 "jamgram.y" { yyval.parse = pfor( yyvsp[-5].string, yyvsp[-3].parse, yyvsp[-1].parse ); } break; case 16: #line 171 "jamgram.y" { yyval.parse = pswitch( yyvsp[-3].parse, yyvsp[-1].parse ); } break; case 17: #line 173 "jamgram.y" { yyval.parse = pif( yyvsp[-3].parse, yyvsp[-1].parse, pnull() ); } break; case 18: #line 175 "jamgram.y" { yyval.parse = pif( yyvsp[-5].parse, yyvsp[-3].parse, yyvsp[0].parse ); } break; case 19: #line 177 "jamgram.y" { yyval.parse = pwhile( yyvsp[-3].parse, yyvsp[-1].parse ); } break; case 20: #line 179 "jamgram.y" { yyval.parse = psetc( yyvsp[-1].string, yyvsp[0].parse ); } break; case 21: #line 181 "jamgram.y" { yyval.parse = pon( yyvsp[-1].parse, yyvsp[0].parse ); } break; case 22: #line 183 "jamgram.y" { yymode( SCAN_STRING ); } break; case 23: #line 185 "jamgram.y" { yymode( SCAN_NORMAL ); } break; case 24: #line 187 "jamgram.y" { yyval.parse = psete( yyvsp[-6].string,yyvsp[-5].parse,yyvsp[-2].string,yyvsp[-7].number ); } break; case 25: #line 195 "jamgram.y" { yyval.number = ASSIGN_SET; } break; case 26: #line 197 "jamgram.y" { yyval.number = ASSIGN_APPEND; } break; case 27: #line 199 "jamgram.y" { yyval.number = ASSIGN_DEFAULT; } break; case 28: #line 201 "jamgram.y" { yyval.number = ASSIGN_DEFAULT; } break; case 29: #line 209 "jamgram.y" { yyval.parse = peval( EXPR_EXISTS, yyvsp[0].parse, pnull() ); } break; case 30: #line 211 "jamgram.y" { yyval.parse = peval( EXPR_EQUALS, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 31: #line 213 "jamgram.y" { yyval.parse = peval( EXPR_NOTEQ, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 32: #line 215 "jamgram.y" { yyval.parse = peval( EXPR_LESS, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 33: #line 217 "jamgram.y" { yyval.parse = peval( EXPR_LESSEQ, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 34: #line 219 "jamgram.y" { yyval.parse = peval( EXPR_MORE, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 35: #line 221 "jamgram.y" { yyval.parse = peval( EXPR_MOREEQ, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 36: #line 223 "jamgram.y" { yyval.parse = peval( EXPR_AND, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 37: #line 225 "jamgram.y" { yyval.parse = peval( EXPR_AND, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 38: #line 227 "jamgram.y" { yyval.parse = peval( EXPR_OR, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 39: #line 229 "jamgram.y" { yyval.parse = peval( EXPR_OR, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 40: #line 231 "jamgram.y" { yyval.parse = peval( EXPR_IN, yyvsp[-2].parse, yyvsp[0].parse ); } break; case 41: #line 233 "jamgram.y" { yyval.parse = peval( EXPR_NOT, yyvsp[0].parse, pnull() ); } break; case 42: #line 235 "jamgram.y" { yyval.parse = yyvsp[-1].parse; } break; case 43: #line 245 "jamgram.y" { yyval.parse = P0; } break; case 44: #line 247 "jamgram.y" { yyval.parse = pnode( yyvsp[-1].parse, yyvsp[0].parse ); } break; case 45: #line 251 "jamgram.y" { yyval.parse = psnode( yyvsp[-2].string, yyvsp[0].parse ); } break; case 46: #line 260 "jamgram.y" { yyval.parse = pnode( P0, yyvsp[0].parse ); } break; case 47: #line 262 "jamgram.y" { yyval.parse = pnode( yyvsp[0].parse, yyvsp[-2].parse ); } break; case 48: #line 272 "jamgram.y" { yyval.parse = yyvsp[0].parse; yymode( SCAN_NORMAL ); } break; case 49: #line 276 "jamgram.y" { yyval.parse = pnull(); yymode( SCAN_PUNCT ); } break; case 50: #line 278 "jamgram.y" { yyval.parse = pappend( yyvsp[-1].parse, yyvsp[0].parse ); } break; case 51: #line 282 "jamgram.y" { yyval.parse = plist( yyvsp[0].string ); } break; case 52: #line 283 "jamgram.y" { yymode( SCAN_NORMAL ); } break; case 53: #line 284 "jamgram.y" { yyval.parse = yyvsp[-1].parse; } break; case 54: #line 293 "jamgram.y" { yyval.parse = prule( yyvsp[-1].parse, yyvsp[0].parse ); } break; case 55: #line 295 "jamgram.y" { yyval.parse = pon( yyvsp[-2].parse, prule( yyvsp[-1].parse, yyvsp[0].parse ) ); } break; case 56: #line 297 "jamgram.y" { yyval.parse = pon( yyvsp[-2].parse, yyvsp[0].parse ); } break; case 57: #line 306 "jamgram.y" { yyval.number = 0; } break; case 58: #line 308 "jamgram.y" { yyval.number = yyvsp[-1].number | yyvsp[0].number; } break; case 59: #line 312 "jamgram.y" { yyval.number = RULE_UPDATED; } break; case 60: #line 314 "jamgram.y" { yyval.number = RULE_TOGETHER; } break; case 61: #line 316 "jamgram.y" { yyval.number = RULE_IGNORE; } break; case 62: #line 318 "jamgram.y" { yyval.number = RULE_QUIETLY; } break; case 63: #line 320 "jamgram.y" { yyval.number = RULE_PIECEMEAL; } break; case 64: #line 322 "jamgram.y" { yyval.number = RULE_EXISTING; } break; case 65: #line 331 "jamgram.y" { yyval.parse = pnull(); } break; case 66: #line 333 "jamgram.y" { yyval.parse = yyvsp[0].parse; } break; #line 824 "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 | |
---|---|---|---|---|---|
#9 | 3181 | Craig Mcpheeters | Integration of the Jam mainline into my branch | ||
#8 | 1604 | Craig Mcpheeters | Integration of rc1 from the mainline | ||
#7 | 1568 | Craig Mcpheeters | An integration from the mainline, from a little while ago. | ||
#6 | 1482 | Craig Mcpheeters |
Changed the style of the 'expr' rule in jamgram.yy to something similar to that used in 2.3 for the 'cond' rule. The expr rule was failing on expressions of the form: if ! $(var) in $(list) { } which was being expressed as: if ( ! $(var) ) in $(list) { } rather than the old 2.3 behaviour: if ! ( $(var) in $(list) ) { } |
||
#5 | 1468 | Craig Mcpheeters |
Fixed makeString in the Jambase. It was calling FConcat which is no more Fixed the "expr 'in' expr" problem in the mainline, after a suggestion from the jam mailing list. It used to be "expr 'in' list" - it looks like a simple type as that section was redone in the mainline. I've put it back |
||
#4 | 1353 | Craig Mcpheeters | Integration from the mainline. | ||
#3 | 784 | Craig Mcpheeters | Integration from Jam mainline | ||
#2 | 617 | Craig Mcpheeters | Integration from mainline as of @3 | ||
#1 | 616 | Craig Mcpheeters | Integration from Jam mainline, as of @2 |