⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grammar.c

📁 用来监视网络通信数据的源代码和应用程序,方便网络程序底层开发.
💻 C
📖 第 1 页 / 共 5 页
字号:
/*-----------------------------.| yyreduce -- Do a reduction.  |`-----------------------------*/yyreduce:  /* yyn is the number of a rule to reduce with.  */  yylen = yyr2[yyn];  /* If YYLEN is nonzero, implement the default value of the action:     `$$ = $1'.     Otherwise, the following line sets YYVAL to the semantic value of     the lookahead token.  This behavior is undocumented and Bison     users should not rely upon it.  Assigning to YYVAL     unconditionally makes the parser a bit smaller, and it avoids a     GCC warning that YYVAL may be used uninitialized.  */  yyval = yyvsp[1-yylen];#if YYLSP_NEEDED  /* Similarly for the default location.  Let the user run additional     commands if for instance locations are ranges.  */  yyloc = yylsp[1-yylen];  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);#endif#if YYDEBUG  /* We have to keep this `#if YYDEBUG', since we use variables which     are defined only if `YYDEBUG' is set.  */  if (yydebug)    {      int yyi;      YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",		 yyn, yyrline[yyn]);      /* Print the symbols being reduced, and their result.  */      for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)	YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);      YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);    }#endif  switch (yyn) {case 1:#line 153 "../libpcap/grammar.y"{	finish_parse(yyvsp[0].blk.b);}    break;case 3:#line 158 "../libpcap/grammar.y"{ yyval.blk.q = qerr; }    break;case 5:#line 161 "../libpcap/grammar.y"{ gen_and(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }    break;case 6:#line 162 "../libpcap/grammar.y"{ gen_and(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }    break;case 7:#line 163 "../libpcap/grammar.y"{ gen_or(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }    break;case 8:#line 164 "../libpcap/grammar.y"{ gen_or(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }    break;case 9:#line 166 "../libpcap/grammar.y"{ yyval.blk = yyvsp[-1].blk; }    break;case 10:#line 168 "../libpcap/grammar.y"{ yyval.blk = yyvsp[-1].blk; }    break;case 12:#line 171 "../libpcap/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 173 "../libpcap/grammar.y"{ yyval.blk = yyvsp[-1].blk; }    break;case 14:#line 175 "../libpcap/grammar.y"{ yyval.blk.b = gen_scode(yyvsp[0].s, yyval.blk.q = yyvsp[-1].blk.q); }    break;case 15:#line 176 "../libpcap/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 178 "../libpcap/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 180 "../libpcap/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 185 "../libpcap/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 194 "../libpcap/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 203 "../libpcap/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 212 "../libpcap/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 221 "../libpcap/grammar.y"{ gen_not(yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }    break;case 23:#line 223 "../libpcap/grammar.y"{ yyval.blk = yyvsp[-1].blk; }    break;case 24:#line 225 "../libpcap/grammar.y"{ yyval.blk = yyvsp[-1].blk; }    break;case 26:#line 228 "../libpcap/grammar.y"{ gen_and(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }    break;case 27:#line 229 "../libpcap/grammar.y"{ gen_or(yyvsp[-2].blk.b, yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }    break;case 28:#line 231 "../libpcap/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 236 "../libpcap/grammar.y"{ gen_not(yyvsp[0].blk.b); yyval.blk = yyvsp[0].blk; }    break;case 32:#line 238 "../libpcap/grammar.y"{ QSET(yyval.blk.q, yyvsp[-2].i, yyvsp[-1].i, yyvsp[0].i); }    break;case 33:#line 239 "../libpcap/grammar.y"{ QSET(yyval.blk.q, yyvsp[-1].i, yyvsp[0].i, Q_DEFAULT); }    break;case 34:#line 240 "../libpcap/grammar.y"{ QSET(yyval.blk.q, yyvsp[-1].i, Q_DEFAULT, yyvsp[0].i); }    break;case 35:#line 241 "../libpcap/grammar.y"{ QSET(yyval.blk.q, yyvsp[-1].i, Q_DEFAULT, Q_PROTO); }    break;case 36:#line 242 "../libpcap/grammar.y"{ QSET(yyval.blk.q, yyvsp[-1].i, Q_DEFAULT, Q_PROTOCHAIN); }    break;case 37:#line 243 "../libpcap/grammar.y"{ QSET(yyval.blk.q, yyvsp[-1].i, Q_DEFAULT, yyvsp[0].i); }    break;case 38:#line 245 "../libpcap/grammar.y"{ yyval.blk = yyvsp[0].blk; }    break;case 39:#line 246 "../libpcap/grammar.y"{ yyval.blk.b = yyvsp[-1].blk.b; yyval.blk.q = yyvsp[-2].blk.q; }    break;case 40:#line 247 "../libpcap/grammar.y"{ yyval.blk.b = gen_proto_abbrev(yyvsp[0].i); yyval.blk.q = qerr; }    break;case 41:#line 248 "../libpcap/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 250 "../libpcap/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 252 "../libpcap/grammar.y"{ yyval.blk.b = yyvsp[0].rblk; yyval.blk.q = qerr; }    break;case 44:#line 253 "../libpcap/grammar.y"{ yyval.blk.b = gen_atmtype_abbrev(yyvsp[0].i); yyval.blk.q = qerr; }    break;case 45:#line 254 "../libpcap/grammar.y"{ yyval.blk.b = gen_atmmulti_abbrev(yyvsp[0].i); yyval.blk.q = qerr; }    break;case 46:#line 255 "../libpcap/grammar.y"{ yyval.blk.b = yyvsp[0].blk.b; yyval.blk.q = qerr; }    break;case 48:#line 259 "../libpcap/grammar.y"{ yyval.i = Q_DEFAULT; }    break;case 49:#line 262 "../libpcap/grammar.y"{ yyval.i = Q_SRC; }    break;case 50:#line 263 "../libpcap/grammar.y"{ yyval.i = Q_DST; }    break;case 51:#line 264 "../libpcap/grammar.y"{ yyval.i = Q_OR; }    break;case 52:#line 265 "../libpcap/grammar.y"{ yyval.i = Q_OR; }    break;case 53:#line 266 "../libpcap/grammar.y"{ yyval.i = Q_AND; }    break;case 54:#line 267 "../libpcap/grammar.y"{ yyval.i = Q_AND; }    break;case 55:#line 270 "../libpcap/grammar.y"{ yyval.i = Q_HOST; }    break;case 56:#line 271 "../libpcap/grammar.y"{ yyval.i = Q_NET; }    break;case 57:#line 272 "../libpcap/grammar.y"{ yyval.i = Q_PORT; }    break;case 58:#line 275 "../libpcap/grammar.y"{ yyval.i = Q_GATEWAY; }    break;case 59:#line 277 "../libpcap/grammar.y"{ yyval.i = Q_LINK; }    break;case 60:#line 278 "../libpcap/grammar.y"{ yyval.i = Q_IP; }    break;case 61:#line 279 "../libpcap/grammar.y"{ yyval.i = Q_ARP; }    break;case 62:#line 280 "../libpcap/grammar.y"{ yyval.i = Q_RARP; }    break;case 63:#line 281 "../libpcap/grammar.y"{ yyval.i = Q_SCTP; }    break;case 64:#line 282 "../libpcap/grammar.y"{ yyval.i = Q_TCP; }    break;case 65:#line 283 "../libpcap/grammar.y"{ yyval.i = Q_UDP; }    break;case 66:#line 284 "../libpcap/grammar.y"{ yyval.i = Q_ICMP; }    break;case 67:#line 285 "../libpcap/grammar.y"{ yyval.i = Q_IGMP; }    break;case 68:#line 286 "../libpcap/grammar.y"{ yyval.i = Q_IGRP; }    break;case 69:#line 287 "../libpcap/grammar.y"{ yyval.i = Q_PIM; }    break;case 70:#line 288 "../libpcap/grammar.y"{ yyval.i = Q_VRRP; }    break;case 71:#line 289 "../libpcap/grammar.y"{ yyval.i = Q_ATALK; }    break;case 72:#line 290 "../libpcap/grammar.y"{ yyval.i = Q_AARP; }    break;case 73:#line 291 "../libpcap/grammar.y"{ yyval.i = Q_DECNET; }    break;case 74:#line 292 "../libpcap/grammar.y"{ yyval.i = Q_LAT; }    break;case 75:#line 293 "../libpcap/grammar.y"{ yyval.i = Q_SCA; }    break;case 76:#line 294 "../libpcap/grammar.y"{ yyval.i = Q_MOPDL; }    break;case 77:#line 295 "../libpcap/grammar.y"{ yyval.i = Q_MOPRC; }    break;case 78:#line 296 "../libpcap/grammar.y"{ yyval.i = Q_IPV6; }    break;case 79:#line 297 "../libpcap/grammar.y"{ yyval.i = Q_ICMPV6; }    break;case 80:#line 298 "../libpcap/grammar.y"{ yyval.i = Q_AH; }    break;case 81:#line 299 "../libpcap/grammar.y"{ yyval.i = Q_ESP; }    break;case 82:#line 300 "../libpcap/grammar.y"{ yyval.i = Q_ISO; }    break;case 83:#line 301 "../libpcap/grammar.y"{ yyval.i = Q_ESIS; }    break;case 84:#line 302 "../libpcap/grammar.y"{ yyval.i = Q_ISIS; }    break;case 85:#line 303 "../libpcap/grammar.y"{ yyval.i = Q_ISIS_L1; }    break;case 86:#line 304 "../libpcap/grammar.y"{ yyval.i = Q_ISIS_L2; }    break;case 87:#line 305 "../libpcap/grammar.y"{ yyval.i = Q_ISIS_IIH; }    break;case 88:#line 306 "../libpcap/grammar.y"{ yyval.i = Q_ISIS_LSP; }    break;case 89:#line 307 "../libpcap/grammar.y"{ yyval.i = Q_ISIS_SNP; }    break;case 90:#line 308 "../libpcap/grammar.y"{ yyval.i = Q_ISIS_PSNP; }    break;case 91:#line 309 "../libpcap/grammar.y"{ yyval.i = Q_ISIS_CSNP; }    break;

⌨️ 快捷键说明

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