grammar.c

来自「Ubuntu packages of security software。 相」· C语言 代码 · 共 1,792 行 · 第 1/4 页

C
1,792
字号
        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 1:#line 161 "grammar.y"{	finish_parse(yyvsp[0].blk.b);}break;case 3:#line 166 "grammar.y"{ yyval.blk.q = qerr; }break;case 5:#line 169 "grammar.y"{ gen_and(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }break;case 6:#line 170 "grammar.y"{ gen_and(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }break;case 7:#line 171 "grammar.y"{ gen_or(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }break;case 8:#line 172 "grammar.y"{ gen_or(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }break;case 9:#line 174 "grammar.y"{ yyval.blk = yyvsp[-1].blk; }break;case 10:#line 176 "grammar.y"{ yyval.blk = yyvsp[-1].blk; }break;case 12:#line 179 "grammar.y"{ yyval.blk.b = gen_ncode(NULL, (bpf_u_int32)yyvsp[0].i,						   yyval.blk.q = yyvsp[-1].blk.q); }break;case 13:#line 181 "grammar.y"{ yyval.blk = yyvsp[-1].blk; }break;case 14:#line 183 "grammar.y"{ yyval.blk.b = gen_scode(yyvsp[0].s, yyval.blk.q = yyvsp[-1].blk.q); }break;case 15:#line 184 "grammar.y"{ yyval.blk.b = gen_mcode(yyvsp[-2].s, NULL, yyvsp[0].i,				    yyval.blk.q = yyvsp[-3].blk.q); }break;case 16:#line 186 "grammar.y"{ yyval.blk.b = gen_mcode(yyvsp[-2].s, yyvsp[0].s, 0,				    yyval.blk.q = yyvsp[-3].blk.q); }break;case 17:#line 188 "grammar.y"{				  /* Decide how to parse HID based on proto */				  yyval.blk.q = yyvsp[-1].blk.q;				  yyval.blk.b = gen_ncode(yyvsp[0].s, 0, yyval.blk.q);				}break;case 18:#line 193 "grammar.y"{#ifdef INET6				  yyval.blk.b = gen_mcode6(yyvsp[-2].s, NULL, yyvsp[0].i,				    yyval.blk.q = yyvsp[-3].blk.q);#else				  bpf_error("'ip6addr/prefixlen' not supported "					"in this configuration");#endif /*INET6*/				}break;case 19:#line 202 "grammar.y"{#ifdef INET6				  yyval.blk.b = gen_mcode6(yyvsp[0].s, 0, 128,				    yyval.blk.q = yyvsp[-1].blk.q);#else				  bpf_error("'ip6addr' not supported "					"in this configuration");#endif /*INET6*/				}break;case 20:#line 211 "grammar.y"{ 				  yyval.blk.b = gen_ecode(yyvsp[0].e, yyval.blk.q = yyvsp[-1].blk.q);				  /*				   * $1 was allocated by "pcap_ether_aton()",				   * so we must free it now that we're done				   * with it.				   */				  free(yyvsp[0].e);				}break;case 21:#line 220 "grammar.y"{				  yyval.blk.b = gen_acode(yyvsp[0].e, yyval.blk.q = yyvsp[-1].blk.q);				  /*				   * $1 was allocated by "pcap_ether_aton()",				   * so we must free it now that we're done				   * with it.				   */				  free(yyvsp[0].e);				}break;case 22:#line 229 "grammar.y"{ gen_not(yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }break;case 23:#line 231 "grammar.y"{ yyval.blk = yyvsp[-1].blk; }break;case 24:#line 233 "grammar.y"{ yyval.blk = yyvsp[-1].blk; }break;case 26:#line 236 "grammar.y"{ gen_and(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }break;case 27:#line 237 "grammar.y"{ gen_or(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }break;case 28:#line 239 "grammar.y"{ yyval.blk.b = gen_ncode(NULL, (bpf_u_int32)yyvsp[0].i,						   yyval.blk.q = yyvsp[-1].blk.q); }break;case 31:#line 244 "grammar.y"{ gen_not(yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }break;case 32:#line 246 "grammar.y"{ QSET(yyval.blk.q, yyvsp[-2].i, yyvsp[-1].i, yyvsp[0].i); }break;case 33:#line 247 "grammar.y"{ QSET(yyval.blk.q, yyvsp[-1].i, yyvsp[0].i, Q_DEFAULT); }break;case 34:#line 248 "grammar.y"{ QSET(yyval.blk.q, yyvsp[-1].i, Q_DEFAULT, yyvsp[0].i); }break;case 35:#line 249 "grammar.y"{ QSET(yyval.blk.q, yyvsp[-1].i, Q_DEFAULT, Q_PROTO); }break;case 36:#line 250 "grammar.y"{ QSET(yyval.blk.q, yyvsp[-1].i, Q_DEFAULT, Q_PROTOCHAIN); }break;case 37:#line 251 "grammar.y"{ QSET(yyval.blk.q, yyvsp[-1].i, Q_DEFAULT, yyvsp[0].i); }break;case 38:#line 253 "grammar.y"{ yyval.blk = yyvsp[0].blk; }break;case 39:#line 254 "grammar.y"{ yyval.blk.b = yyvsp[-1].blk.b; yyval.blk.q = yyvsp[-2].blk.q; }break;case 40:#line 255 "grammar.y"{ yyval.blk.b = gen_proto_abbrev(yyvsp[0].i); yyval.blk.q = qerr; }break;case 41:#line 256 "grammar.y"{ yyval.blk.b = gen_relation(yyvsp[-1].i, yyvsp[-2].a, yyvsp[0].a, 0);				  yyval.blk.q = qerr; }break;case 42:#line 258 "grammar.y"{ yyval.blk.b = gen_relation(yyvsp[-1].i, yyvsp[-2].a, yyvsp[0].a, 1);				  yyval.blk.q = qerr; }break;case 43:#line 260 "grammar.y"{ yyval.blk.b = yyvsp[0].rblk; yyval.blk.q = qerr; }break;case 44:#line 261 "grammar.y"{ yyval.blk.b = gen_atmtype_abbrev(yyvsp[0].i); yyval.blk.q = qerr; }break;case 45:#line 262 "grammar.y"{ yyval.blk.b = gen_atmmulti_abbrev(yyvsp[0].i); yyval.blk.q = qerr; }break;case 46:#line 263 "grammar.y"{ yyval.blk.b = yyvsp[0].blk.b; yyval.blk.q = qerr; }break;case 47:#line 264 "grammar.y"{ yyval.blk.b = yyvsp[0].blk.b; yyval.blk.q = qerr; }break;case 49:#line 268 "grammar.y"{ yyval.i = Q_DEFAULT; }break;case 50:#line 271 "grammar.y"{ yyval.i = Q_SRC; }break;case 51:#line 272 "grammar.y"{ yyval.i = Q_DST; }break;case 52:#line 273 "grammar.y"{ yyval.i = Q_OR; }break;case 53:#line 274 "grammar.y"{ yyval.i = Q_OR; }break;case 54:#line 275 "grammar.y"{ yyval.i = Q_AND; }break;case 55:#line 276 "grammar.y"{ yyval.i = Q_AND; }break;case 56:#line 279 "grammar.y"{ yyval.i = Q_HOST; }break;case 57:#line 280 "grammar.y"{ yyval.i = Q_NET; }break;case 58:#line 281 "grammar.y"{ yyval.i = Q_PORT; }break;case 59:#line 282 "grammar.y"{ yyval.i = Q_PORTRANGE; }break;case 60:#line 285 "grammar.y"{ yyval.i = Q_GATEWAY; }break;case 61:#line 287 "grammar.y"{ yyval.i = Q_LINK; }break;case 62:#line 288 "grammar.y"{ yyval.i = Q_IP; }break;case 63:#line 289 "grammar.y"{ yyval.i = Q_ARP; }break;case 64:#line 290 "grammar.y"{ yyval.i = Q_RARP; }break;case 65:#line 291 "grammar.y"{ yyval.i = Q_SCTP; }break;case 66:#line 292 "grammar.y"{ yyval.i = Q_TCP; }break;case 67:#line 293 "grammar.y"{ yyval.i = Q_UDP; }break;case 68:#line 294 "grammar.y"{ yyval.i = Q_ICMP; }break;case 69:#line 295 "grammar.y"{ yyval.i = Q_IGMP; }break;case 70:#line 296 "grammar.y"{ yyval.i = Q_IGRP; }break;case 71:#line 297 "grammar.y"{ yyval.i = Q_PIM; }break;case 72:#line 298 "grammar.y"{ yyval.i = Q_VRRP; }break;case 73:#line 299 "grammar.y"{ yyval.i = Q_ATALK; }break;case 74:#line 300 "grammar.y"{ yyval.i = Q_AARP; }break;case 75:#line 301 "grammar.y"{ yyval.i = Q_DECNET; }break;case 76:#line 302 "grammar.y"{ yyval.i = Q_LAT; }break;case 77:#line 303 "grammar.y"{ yyval.i = Q_SCA; }break;case 78:#line 304 "grammar.y"{ yyval.i = Q_MOPDL; }break;case 79:#line 305 "grammar.y"{ yyval.i = Q_MOPRC; }break;case 80:#line 306 "grammar.y"{ yyval.i = Q_IPV6; }break;case 81:#line 307 "grammar.y"{ yyval.i = Q_ICMPV6; }break;case 82:#line 308 "grammar.y"{ yyval.i = Q_AH; }break;case 83:#line 309 "grammar.y"{ yyval.i = Q_ESP; }break;case 84:#line 310 "grammar.y"{ yyval.i = Q_ISO; }break;case 85:#line 311 "grammar.y"{ yyval.i = Q_ESIS; }break;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?