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

📄 snapparse.c

📁 一个学习SNMP项目:tmoerlan.
💻 C
📖 第 1 页 / 共 4 页
字号:
  if (yyn == 0)    goto yyerrlab;  goto yyreduce;/*-----------------------------.| 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 87 "snapparse.y"{ yyval.integer = yyvsp[0].integer; }    break;case 2:#line 88 "snapparse.y"{ yyval.integer = 0; }    break;case 3:#line 91 "snapparse.y"{ CHECK_CODE_OVERFLOW(p);			  SET_OP(*p->pc,yyvsp[0].integer);			  p->pc++;			  noop++;			}    break;case 4:#line 96 "snapparse.y"{ CHECK_CODE_OVERFLOW(p);                          if ((yyvsp[0].integer > MAX_VINT) || (yyvsp[0].integer < MIN_VINT)) {			    fprintf(stderr,			      "%s:%d: int literal %d out of bounds (%d,%d)\n",			      __FILE__,__LINE__,yyvsp[0].integer,MIN_VINT,MAX_VINT);			    fflush(stderr);			    exit(1);			  }			  if (label != NULL) {			    register_label_use(label,p->pc);			    label = NULL;			  }			  SET_OP(*p->pc,yyvsp[-1].integer);			  SET_LIT(*p->pc,INTV,yyvsp[0].integer);			  p->pc++;                        }    break;case 5:#line 112 "snapparse.y"{ #ifdef ADDR_IN_HEAP			  buffer_t b = 			    { sizeof(value_addr), (char *)&value_addr };			  int offs = newho(&b,__FILE__,__LINE__);#endif			  CHECK_CODE_OVERFLOW(p);			  SET_OP(*p->pc,yyvsp[-1].integer);#ifdef ADDR_IN_HEAP			  SET_LIT(*p->pc,ADDRV,offs);#else			  SET_LIT(*p->pc,ADDRV,value_addr);#endif			  p->pc++;                        }    break;case 6:#line 127 "snapparse.y"{ int offs = newho(&value_str,__FILE__,__LINE__);			  free(value_str.s);			  CHECK_CODE_OVERFLOW(p);			  SET_OP(*p->pc,yyvsp[-1].integer);			  SET_LIT(*p->pc,STRV,offs);			  p->pc++;                        }    break;case 7:#line 134 "snapparse.y"{ value_t *v = (value_t *)yyvsp[0].ptr;      			  int lit;			  CHECK_CODE_OVERFLOW(p);			  if (label != NULL) {			    register_label_use(label,p->pc);			    label = NULL;			  }#ifndef SMALL_INSTRS			  SET_OP(*p->pc,yyvsp[-1].integer);#else			  { OPCODE_T op = refine_op(yyvsp[-1].integer, GET_TAG(*v));			    SET_OP(*p->pc,op); }#endif			  lit = GET_INT(*v); /* assumes the same as						GET_* */			  SET_LIT(*p->pc,GET_TAG(*v),lit);			  p->pc++;                        }    break;case 8:#line 152 "snapparse.y"{ p->hdr->entry_point = htons(p->pc - p->code_min); }    break;case 9:#line 153 "snapparse.y"{ register_label_def(value_str.s,p->pc); }    break;case 10:#line 154 "snapparse.y"{ value_t *v = (value_t *)yyvsp[0].ptr;			  if (p->sp >= p->stack_max) {			    fprintf(stderr,"%s:%d: stack overflow\n",			            __FILE__,__LINE__);			    fflush(stderr);			    exit(1);			  }			  if (label != NULL) {			    register_label_use(label,p->sp);			    label = NULL;			  }			  COPY_VAL(*p->sp,*v);			  p->sp++;			}    break;case 11:#line 170 "snapparse.y"{ yyval.integer = (int)EXIT; }    break;case 12:#line 171 "snapparse.y"{ yyval.integer = (int)POP; }    break;case 13:#line 172 "snapparse.y"{ yyval.integer = (int)EQ; }    break;case 14:#line 173 "snapparse.y"{ yyval.integer = (int)NEQ; }    break;case 15:#line 174 "snapparse.y"{ yyval.integer = (int)ADD; }    break;case 16:#line 175 "snapparse.y"{ yyval.integer = (int)SUB; }    break;case 17:#line 176 "snapparse.y"{ yyval.integer = (int)MULT; }    break;case 18:#line 177 "snapparse.y"{ yyval.integer = (int)DIV; }    break;case 19:#line 178 "snapparse.y"{ yyval.integer = (int)MOD; }    break;case 20:#line 179 "snapparse.y"{ yyval.integer = (int)NEG; }    break;case 21:#line 180 "snapparse.y"{ yyval.integer = (int)NOT; }    break;case 22:#line 181 "snapparse.y"{ yyval.integer = (int)LNOT; }    break;case 23:#line 182 "snapparse.y"{ yyval.integer = (int)AND; }    break;case 24:#line 183 "snapparse.y"{ yyval.integer = (int)OR; }    break;case 25:#line 184 "snapparse.y"{ yyval.integer = (int)LSHL; }    break;case 26:#line 185 "snapparse.y"{ yyval.integer = (int)RSHL; }    break;case 27:#line 186 "snapparse.y"{ yyval.integer = (int)RSHA; }    break;case 28:#line 187 "snapparse.y"{ yyval.integer = (int)ISX; }    break;case 29:#line 188 "snapparse.y"{ yyval.integer = (int)GETRB; }    break;case 30:#line 189 "snapparse.y"{ yyval.integer = (int)GETSRC; }    break;case 31:#line 190 "snapparse.y"{ yyval.integer = (int)GETDST; }    break;case 32:#line 191 "snapparse.y"{ yyval.integer = (int)GETSPT; }    break;case 33:#line 192 "snapparse.y"{ yyval.integer = (int)GETLD; }    break;case 34:#line 193 "snapparse.y"{ yyval.integer = (int)SETXH; }    break;case 35:#line 194 "snapparse.y"{ yyval.integer = (int)RAISEX; }    break;case 36:#line 195 "snapparse.y"{ yyval.integer = (int)HERE; }    break;case 37:#line 196 "snapparse.y"{ yyval.integer = (int)ISHERE; }    break;case 38:#line 197 "snapparse.y"{ yyval.integer = (int)ROUTE; }    break;case 39:#line 198 "snapparse.y"{ yyval.integer = (int)RTDEV; }    break;case 40:#line 199 "snapparse.y"{ yyval.integer = (int)SEND; }    break;case 41:#line 200 "snapparse.y"{ yyval.integer = (int)HOP; }    break;case 42:#line 201 "snapparse.y"{ yyval.integer = (int)FORW; }    break;case 43:#line 202 "snapparse.y"{ yyval.integer = (int)FORWTO; }    break;case 44:#line 203 "snapparse.y"{ yyval.integer = (int)DEMUX; }    break;case 45:#line 204 "snapparse.y"{ yyval.integer = (int)PRINT; }    break;case 46:#line 205 "snapparse.y"{ yyval.integer = (int)LEN; }    break;case 47:#line 206 "snapparse.y"{ yyval.integer = (int)ISTUP; }    break;case 48:#line 207 "snapparse.y"{ yyval.integer = (int)SNET; }    break;case 49:#line 208 "snapparse.y"{ yyval.integer = (int)BCAST; }    break;case 50:#line 209 "snapparse.y"{ yyval.integer = (int)GT; }    break;case 51:#line 210 "snapparse.y"{ yyval.integer = (int)GEQ; }    break;case 52:#line 211 "snapparse.y"{ yyval.integer = (int)LT; }    break;case 53:#line 212 "snapparse.y"{ yyval.integer = (int)LEQ; }    break;case 54:#line 213 "snapparse.y"{ yyval.integer = (int)DSEND; }    break;case 55:#line 214 "snapparse.y"{ yyval.integer = (int)DFORW; }    break;case 56:#line 215 "snapparse.y"{ yyval.integer = (int)DFORWTO; }    break;case 57:#line 216 "snapparse.y"{ yyval.integer = (int)STACKEMPTY; }    break;case 58:#line 217 "snapparse.y"{ yyval.integer = (int)STACKCOUNT; }    break;case 59:#line 218 "snapparse.y"{ yyval.integer = (int)PULLSTACK; }    break;case 60:#line 221 "snapparse.y"{ yyval.integer = (int)PULL; }    break;case 61:#line 222 "snapparse.y"{ yyval.integer = (int)STORE; }    break;case 62:#line 223 "snapparse.y"{ yyval.integer = (int)PAJ; }    break;case 63:#line 224 "snapparse.y"{ yyval.integer = (int)TPAJ; }    break;case 64:#line 225 "snapparse.y"{ yyval.integer = (int)BEZ; }    break;case 65:#line 226 "snapparse.y"{ yyval.integer = (int)BNE; }    break;case 66:#line 227 "snapparse.y"{ yyval.integer = (int)POPI; }    break;case 67:#line 228 "snapparse.y"{ yyval.integer = (int)MODI; }    break;case 68:#line 229 "snapparse.y"{ yyval.integer = (int)ANDI; }    break;case 69:#line 230 "snapparse.y"{ yyval.integer = (int)ORI; }    break;case 70:#line 231 "snapparse.y"{ yyval.integer = (int)LSHLI; }    break;case 71:#line 232 "snapparse.y"{ yyval.integer = (int)RSHLI; }    break;case 72:#line 233 "snapparse.y"{ yyval.integer = (int)RSHAI; }    break;case 73:#line 234 "snapparse.y"{ yyval.integer = (int)JI; }    break;case 74:#line 235 "snapparse.y"{ yyval.integer = (int)MKTUP; }    break;case 75:#line 236 "snapparse.y"{ yyval.integer = (int)NTH; }    break;case 76:#line 239 "snapparse.y"{ yyval.integer = (int)BCASTI; }    break;case 77:#line 240 "snapparse.y"{ yyval.integer = (int)DEMUXI; }    break;case 78:#line 241 "snapparse.y"{ yyval.integer = (int)SNETI; }    break;case 79:#line 244 "snapparse.y"{ yyval.integer = (int)SVCV; }    break;case 80:#line 245 "snapparse.y"{ yyval.integer = (int)CALLS; }    break;case 81:#line 248 "snapparse.y"{ yyval.integer = (int)PUSH; }    break;case 82:#line 249 "snapparse.y"{ yyval.integer = (int)EQI; }    break;case 83:#line 250 "snapparse.y"{ yyval.integer = (int)NEQI; }    break;case 84:#line 251 "snapparse.y"{ yyval.integer = (int)ADDI; }    break;case 85:#line 252 "snapparse.y"{ yyval.integer = (int)SUBI; }    break;case 86:#line 253 "snapparse.y"{ yyval.integer = (int)MULTI; }    break;case 87:#line 254 "snapparse.y"{ yyval.integer = (int)DIVI; }    break;case 88:#line 255 "snapparse.y"{ yyval.integer = (int)GTI; }    break;case 89:#line 256 "snapparse.y"{ yyval.integer = (int)GEQI; }    break;case 90:#line 257 "snapparse.y"{ yyval.integer = (int)LTI; }    break;case 91:#line 258 "snapparse.y"{ yyval.integer = (int)LEQI; }    break;case 92:#line 261 "snapparse.y"{ value_t *_v; memalloc(_v,value_t *,sizeof(value_t));			  if ((yyvsp[0].integer > MAX_VINT) || (yyvsp[0].integer < MIN_VINT)) {			    fprintf(stderr,			      "%s:%d: int literal %d out of bounds (%d,%d)\n",			      __FILE__,__LINE__,yyvsp[0].integer,MIN_VINT,MAX_VINT);			    fflush(stderr);			    exit(1);			  }			  SET_TAG(*_v,INTV);			  SET_INT(*_v,yyvsp[0].integer);			  yyval.ptr = (void *)_v;                        }    break;case 93:#line 273 "snapparse.y"{ value_t *_v; #ifdef ADDR_IN_HEAP			  buffer_t b = 			    { sizeof(value_addr), (char *)&value_addr };			  int offs = newho(&b,__FILE__,__LINE__);#endif      			  memalloc(_v,value_t *,sizeof(value_t));                          SET_TAG(*_v,ADDRV);#ifndef ADDR_IN_HEAP			  SET_ADDR(*_v,value_addr,0 /* dummy arg */);#else			  SET_OFFS(*_v,offs);#endif			  yyval.ptr = (void *)_v;			}    break;case 94:#line 288 "snapparse.y"{ value_t *_v; #ifdef ADDR_IN_HEAP			  buffer_t b = 			    { sizeof(value_float), (char *)&value_float };			  int offs = newho(&b,__FILE__,__LINE__);#endif      			  memalloc(_v,value_t *,sizeof(value_t));                          SET_TAG(*_v,FLOATV);#ifndef ADDR_IN_HEAP			  SET_FLOAT(*_v,value_float,0 /* dummy arg */);#else			  SET_OFFS(*_v,offs);#endif			  yyval.ptr = (void *)_v;			}    break;case 95:#line 303 "snapparse.y"{ value_t *_v;                           int offs = newho(&value_str,__FILE__,__LINE__);/*  			  free(value_str.s); */			  memalloc(_v,value_t *,sizeof(value_t));			  SET_TAG(*_v,STRV);			  SET_OFFS(*_v,offs);			  yyval.ptr = (void *)_v;                        }    break;case 96:#line 311 "snapparse.y"

⌨️ 快捷键说明

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