📄 jamgram.c
字号:
}#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;#endifyynewerror: yyerror("syntax error");#if defined(lint) || defined(__GNUC__) goto yyerrlab;#endifyyerrlab: ++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 = pbreak( yyvsp[-1].parse, JMP_BREAK ); }break;case 15:#line 169 "jamgram.y"{ yyval.parse = pbreak( yyvsp[-1].parse, JMP_CONTINUE ); }break;case 16:#line 171 "jamgram.y"{ yyval.parse = pbreak( yyvsp[-1].parse, JMP_RETURN ); }break;case 17:#line 173 "jamgram.y"{ yyval.parse = pfor( yyvsp[-5].string, yyvsp[-3].parse, yyvsp[-1].parse ); }break;case 18:#line 175 "jamgram.y"{ yyval.parse = pswitch( yyvsp[-3].parse, yyvsp[-1].parse ); }break;case 19:#line 177 "jamgram.y"{ yyval.parse = pif( yyvsp[-3].parse, yyvsp[-1].parse, pnull() ); }break;case 20:#line 179 "jamgram.y"{ yyval.parse = pif( yyvsp[-5].parse, yyvsp[-3].parse, yyvsp[0].parse ); }break;case 21:#line 181 "jamgram.y"{ yyval.parse = pwhile( yyvsp[-3].parse, yyvsp[-1].parse ); }break;case 22:#line 183 "jamgram.y"{ yyval.parse = psetc( yyvsp[-4].string, yyvsp[-3].parse, yyvsp[-1].parse ); }break;case 23:#line 185 "jamgram.y"{ yyval.parse = pon( yyvsp[-1].parse, yyvsp[0].parse ); }break;case 24:#line 187 "jamgram.y"{ yymode( SCAN_STRING ); }break;case 25:#line 189 "jamgram.y"{ yymode( SCAN_NORMAL ); }break;case 26:#line 191 "jamgram.y"{ yyval.parse = psete( yyvsp[-6].string,yyvsp[-5].parse,yyvsp[-2].string,yyvsp[-7].number ); }break;case 27:#line 199 "jamgram.y"{ yyval.number = VAR_SET; }break;case 28:#line 201 "jamgram.y"{ yyval.number = VAR_APPEND; }break;case 29:#line 203 "jamgram.y"{ yyval.number = VAR_DEFAULT; }break;case 30:#line 205 "jamgram.y"{ yyval.number = VAR_DEFAULT; }break;case 31:#line 213 "jamgram.y"{ yyval.parse = peval( EXPR_EXISTS, yyvsp[0].parse, pnull() ); }break;case 32:#line 215 "jamgram.y"{ yyval.parse = peval( EXPR_EQUALS, yyvsp[-2].parse, yyvsp[0].parse ); }break;case 33:#line 217 "jamgram.y"{ yyval.parse = peval( EXPR_NOTEQ, yyvsp[-2].parse, yyvsp[0].parse ); }break;case 34:#line 219 "jamgram.y"{ yyval.parse = peval( EXPR_LESS, yyvsp[-2].parse, yyvsp[0].parse ); }break;case 35:#line 221 "jamgram.y"{ yyval.parse = peval( EXPR_LESSEQ, yyvsp[-2].parse, yyvsp[0].parse ); }break;case 36:#line 223 "jamgram.y"{ yyval.parse = peval( EXPR_MORE, yyvsp[-2].parse, yyvsp[0].parse ); }break;case 37:#line 225 "jamgram.y"{ yyval.parse = peval( EXPR_MOREEQ, yyvsp[-2].parse, yyvsp[0].parse ); }break;case 38:#line 227 "jamgram.y"{ yyval.parse = peval( EXPR_AND, yyvsp[-2].parse, yyvsp[0].parse ); }break;case 39:#line 229 "jamgram.y"{ yyval.parse = peval( EXPR_AND, yyvsp[-2].parse, yyvsp[0].parse ); }break;case 40:#line 231 "jamgram.y"{ yyval.parse = peval( EXPR_OR, yyvsp[-2].parse, yyvsp[0].parse ); }break;case 41:#line 233 "jamgram.y"{ yyval.parse = peval( EXPR_OR, yyvsp[-2].parse, yyvsp[0].parse ); }break;case 42:#line 235 "jamgram.y"{ yyval.parse = peval( EXPR_IN, yyvsp[-2].parse, yyvsp[0].parse ); }break;case 43:#line 237 "jamgram.y"{ yyval.parse = peval( EXPR_NOT, yyvsp[0].parse, pnull() ); }break;case 44:#line 239 "jamgram.y"{ yyval.parse = yyvsp[-1].parse; }break;case 45:#line 249 "jamgram.y"{ yyval.parse = P0; }break;case 46:#line 251 "jamgram.y"{ yyval.parse = pnode( yyvsp[-1].parse, yyvsp[0].parse ); }break;case 47:#line 255 "jamgram.y"{ yyval.parse = psnode( yyvsp[-2].string, yyvsp[0].parse ); }break;case 48:#line 264 "jamgram.y"{ yyval.parse = P0; }break;case 49:#line 266 "jamgram.y"{ yyval.parse = psnode( yyvsp[-2].string, yyvsp[0].parse ); }break;case 50:#line 268 "jamgram.y"{ yyval.parse = psnode( yyvsp[0].string, P0 ); }break;case 51:#line 277 "jamgram.y"{ yyval.parse = pnode( P0, yyvsp[0].parse ); }break;case 52:#line 279 "jamgram.y"{ yyval.parse = pnode( yyvsp[0].parse, yyvsp[-2].parse ); }break;case 53:#line 289 "jamgram.y"{ yyval.parse = yyvsp[0].parse; yymode( SCAN_NORMAL ); }break;case 54:#line 293 "jamgram.y"{ yyval.parse = pnull(); yymode( SCAN_PUNCT ); }break;case 55:#line 295 "jamgram.y"{ yyval.parse = pappend( yyvsp[-1].parse, yyvsp[0].parse ); }break;case 56:#line 299 "jamgram.y"{ yyval.parse = plist( yyvsp[0].string ); }break;case 57:#line 300 "jamgram.y"{ yymode( SCAN_NORMAL ); }break;case 58:#line 301 "jamgram.y"{ yyval.parse = yyvsp[-1].parse; }break;case 59:#line 310 "jamgram.y"{ yyval.parse = prule( yyvsp[-1].parse, yyvsp[0].parse ); }break;case 60:#line 312 "jamgram.y"{ yyval.parse = pon( yyvsp[-2].parse, prule( yyvsp[-1].parse, yyvsp[0].parse ) ); }break;case 61:#line 314 "jamgram.y"{ yyval.parse = pon( yyvsp[-2].parse, yyvsp[0].parse ); }break;case 62:#line 323 "jamgram.y"{ yyval.number = 0; }break;case 63:#line 325 "jamgram.y"{ yyval.number = yyvsp[-1].number | yyvsp[0].number; }break;case 64:#line 329 "jamgram.y"{ yyval.number = RULE_UPDATED; }break;case 65:#line 331 "jamgram.y"{ yyval.number = RULE_TOGETHER; }break;case 66:#line 333 "jamgram.y"{ yyval.number = RULE_IGNORE; }break;case 67:#line 335 "jamgram.y"{ yyval.number = RULE_QUIETLY; }break;case 68:#line 337 "jamgram.y"{ yyval.number = RULE_PIECEMEAL; }break;case 69:#line 339 "jamgram.y"{ yyval.number = RULE_EXISTING; }break;case 70:#line 341 "jamgram.y"{ yyval.number = atoi( yyvsp[0].string ) * RULE_MAXLINE; }break;case 71:#line 350 "jamgram.y"{ yyval.parse = pnull(); }break;case 72:#line 352 "jamgram.y"{ yyval.parse = yyvsp[0].parse; }break;#line 877 "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);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -