📄 yacc.yy_policy_backend_parser.cc
字号:
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 4:#line 55 "backend.y"{ /* XXX: doesn't delete old*/ (*_yy_sets)[yyvsp[-2].c_str] = _ef.create(yyvsp[-3].c_str, yyvsp[-1].c_str); free(yyvsp[-3].c_str); free(yyvsp[-2].c_str); free(yyvsp[-1].c_str); }break;case 5:#line 62 "backend.y"{ PolicyInstr* pi = new PolicyInstr(yyvsp[-4].c_str,_yy_terms); _yy_terms = new vector<TermInstr*>(); _yy_policies->push_back(pi); free(yyvsp[-4].c_str); }break;case 6:#line 71 "backend.y"{ TermInstr* ti = new TermInstr(yyvsp[-4].c_str,_yy_instructions); _yy_instructions = new vector<Instruction*>(); _yy_terms->push_back(ti); free(yyvsp[-4].c_str); }break;case 10:#line 88 "backend.y"{ Instruction* i = new Push(_ef.create(yyvsp[-1].c_str,yyvsp[0].c_str)); _yy_instructions->push_back(i); free(yyvsp[-1].c_str); free(yyvsp[0].c_str); }break;case 11:#line 93 "backend.y"{ _yy_instructions->push_back(new PushSet(yyvsp[0].c_str)); free(yyvsp[0].c_str); }break;case 12:#line 98 "backend.y"{ _yy_instructions->push_back(new OnFalseExit()); }break;case 13:#line 102 "backend.y"{ char* err = NULL; bool is_error = false; VarRW::Id id = strtoul(yyvsp[0].c_str, &err, 10); if ((err != NULL) && (*err != '\0')) is_error = true; free(yyvsp[0].c_str); if (is_error) { yyerror("Need numeric var ID"); YYERROR; } _yy_instructions->push_back(new Load(id)); }break;case 14:#line 116 "backend.y"{ char* err = NULL; bool is_error = false; VarRW::Id id = strtoul(yyvsp[0].c_str, &err, 10); if ((err != NULL) && (*err != '\0')) is_error = true; free(yyvsp[0].c_str); if (is_error) { yyerror("Need numeric var ID"); YYERROR; } _yy_instructions->push_back(new Store(id)); }break;case 15:#line 130 "backend.y"{ _yy_instructions->push_back(new Accept()); }break;case 16:#line 131 "backend.y"{ _yy_instructions->push_back(new Reject()); }break;case 17:#line 133 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpEq)); }break;case 18:#line 134 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpNe)); }break;case 19:#line 135 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpLt)); }break;case 20:#line 136 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpGt)); }break;case 21:#line 137 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpLe)); }break;case 22:#line 138 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpGe)); }break;case 23:#line 140 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpNot)); }break;case 24:#line 141 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpAnd)); }break;case 25:#line 142 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpXor)); }break;case 26:#line 143 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpOr)); }break;case 27:#line 145 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpAdd)); }break;case 28:#line 146 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpSub)); }break;case 29:#line 147 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpMul)); }break;case 30:#line 148 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpHead));}break;case 31:#line 149 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpCtr));}break;case 32:#line 150 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpNEInt));}break;case 33:#line 151 "backend.y"{ _yy_instructions->push_back(new NaryInstr(new OpRegex));}break;#line 602 "yacc.yy_policy_backend_parser.cc" } 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 + -