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

📄 cond.tab.c

📁 winNT技术操作系统,国外开放的原代码和LIUX一样
💻 C
📖 第 1 页 / 共 4 页
字号:
/* Do appropriate processing given the current state.  */
/* Read a lookahead token if we need one and don't already have one.  */
/* yyresume: */

  /* First try to decide what to do without reference to lookahead token.  */

  yyn = yypact[yystate];
  if (yyn == YYPACT_NINF)
    goto yydefault;

  /* Not known => get a lookahead token if don't already have one.  */

  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
  if (yychar == YYEMPTY)
    {
      YYDPRINTF ((stderr, "Reading a token: "));
      yychar = YYLEX;
    }

  if (yychar <= YYEOF)
    {
      yychar = yytoken = YYEOF;
      YYDPRINTF ((stderr, "Now at end of input.\n"));
    }
  else
    {
      yytoken = YYTRANSLATE (yychar);
      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
    }

  /* If the proper action on seeing token YYTOKEN is to reduce or to
     detect an error, take that action.  */
  yyn += yytoken;
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
    goto yydefault;
  yyn = yytable[yyn];
  if (yyn <= 0)
    {
      if (yyn == 0 || yyn == YYTABLE_NINF)
	goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
    }

  if (yyn == YYFINAL)
    YYACCEPT;

  /* Shift the lookahead token.  */
  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));

  /* Discard the token being shifted unless it is eof.  */
  if (yychar != YYEOF)
    yychar = YYEMPTY;

  *++yyvsp = yylval;


  /* Count tokens shifted since error; after three, turn off error
     status.  */
  if (yyerrstatus)
    yyerrstatus--;

  yystate = yyn;
  goto yynewstate;


/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state.  |
`-----------------------------------------------------------*/
yydefault:
  yyn = yydefact[yystate];
  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 garbage.
     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];


  YY_REDUCE_PRINT (yyn);
  switch (yyn)
    {
        case 2:
#line 137 "./cond.y"
    {
            COND_input* cond = (COND_input*) info;
            cond->result = yyvsp[0].value;
        ;}
    break;

  case 3:
#line 145 "./cond.y"
    {
            yyval.value = yyvsp[0].value;
        ;}
    break;

  case 4:
#line 149 "./cond.y"
    {
            yyval.value = yyvsp[-2].value || yyvsp[0].value;
        ;}
    break;

  case 5:
#line 156 "./cond.y"
    {
            yyval.value = yyvsp[0].value;
        ;}
    break;

  case 6:
#line 160 "./cond.y"
    {
            yyval.value = yyvsp[-2].value && yyvsp[0].value;
        ;}
    break;

  case 7:
#line 167 "./cond.y"
    {
            yyval.value = yyvsp[0].value;
        ;}
    break;

  case 8:
#line 171 "./cond.y"
    {
            yyval.value = ! yyvsp[0].value;
        ;}
    break;

  case 9:
#line 179 "./cond.y"
    {
            yyval.value = yyvsp[0].value;
        ;}
    break;

  case 10:
#line 183 "./cond.y"
    {
            yyval.value = (yyvsp[0].string && yyvsp[0].string[0]) ? MSICONDITION_TRUE : MSICONDITION_FALSE;
            msi_free( yyvsp[0].string );
        ;}
    break;

  case 11:
#line 188 "./cond.y"
    {
            yyval.value = yyvsp[-1].fn_comp_int( yyvsp[-2].value, yyvsp[0].value );
        ;}
    break;

  case 12:
#line 192 "./cond.y"
    {
            yyval.value = yyvsp[-1].fn_comp_str( yyvsp[-2].string, yyvsp[0].string, FALSE );
            msi_free( yyvsp[-2].string );
            msi_free( yyvsp[0].string );
        ;}
    break;

  case 13:
#line 198 "./cond.y"
    {
            yyval.value = yyvsp[-1].fn_comp_str( yyvsp[-3].string, yyvsp[0].string, TRUE );
            msi_free( yyvsp[-3].string );
            msi_free( yyvsp[0].string );
        ;}
    break;

  case 14:
#line 204 "./cond.y"
    {
            yyval.value = yyvsp[-1].fn_comp_m1( yyvsp[-2].string, yyvsp[0].value );
            msi_free( yyvsp[-2].string );
        ;}
    break;

  case 15:
#line 209 "./cond.y"
    {
            yyval.value = yyvsp[-1].fn_comp_m2( yyvsp[-2].value, yyvsp[0].string );
            msi_free( yyvsp[0].string );
        ;}
    break;

  case 16:
#line 214 "./cond.y"
    {
            yyval.value = yyvsp[-1].value;
        ;}
    break;

  case 17:
#line 222 "./cond.y"
    {
            yyval.fn_comp_int = comp_eq_i;
        ;}
    break;

  case 18:
#line 226 "./cond.y"
    {
            yyval.fn_comp_int = comp_ne_i;
        ;}
    break;

  case 19:
#line 230 "./cond.y"
    {
            yyval.fn_comp_int = comp_lt_i;
        ;}
    break;

  case 20:
#line 234 "./cond.y"
    {
            yyval.fn_comp_int = comp_gt_i;
        ;}
    break;

  case 21:
#line 238 "./cond.y"
    {
            yyval.fn_comp_int = comp_le_i;
        ;}
    break;

  case 22:
#line 242 "./cond.y"
    {
            yyval.fn_comp_int = comp_ge_i;
        ;}
    break;

  case 23:
#line 247 "./cond.y"
    {
            yyval.fn_comp_int = comp_bitand;
        ;}
    break;

  case 24:
#line 251 "./cond.y"
    {
            yyval.fn_comp_int = comp_highcomp;
        ;}
    break;

  case 25:
#line 255 "./cond.y"
    {
            yyval.fn_comp_int = comp_lowcomp;
        ;}
    break;

  case 26:
#line 263 "./cond.y"
    {
            yyval.fn_comp_str = comp_eq_s;
        ;}
    break;

  case 27:
#line 267 "./cond.y"
    {
            yyval.fn_comp_str = comp_ne_s;
        ;}
    break;

  case 28:
#line 271 "./cond.y"
    {
            yyval.fn_comp_str = comp_lt_s;
        ;}
    break;

  case 29:
#line 275 "./cond.y"
    {
            yyval.fn_comp_str = comp_gt_s;
        ;}
    break;

  case 30:
#line 279 "./cond.y"
    {
            yyval.fn_comp_str = comp_le_s;
        ;}
    break;

  case 31:
#line 283 "./cond.y"
    {
            yyval.fn_comp_str = comp_ge_s;
        ;}
    break;

  case 32:
#line 288 "./cond.y"
    {
            yyval.fn_comp_str = comp_substring;
        ;}
    break;

  case 33:
#line 292 "./cond.y"
    {
            yyval.fn_comp_str = comp_start;
        ;}
    break;

  case 34:
#line 296 "./cond.y"
    {
            yyval.fn_comp_str = comp_end;
        ;}
    break;

  case 35:
#line 304 "./cond.y"
    {
            yyval.fn_comp_m1 = comp_eq_m1;
        ;}
    break;

  case 36:
#line 308 "./cond.y"
    {
            yyval.fn_comp_m1 = comp_ne_m1;
        ;}
    break;

  case 37:
#line 312 "./cond.y"
    {
            yyval.fn_comp_m1 = comp_lt_m1;
        ;}
    break;

  case 38:
#line 316 "./cond.y"
    {
            yyval.fn_comp_m1 = comp_gt_m1;
        ;}
    break;

  case 39:
#line 320 "./cond.y"
    {
            yyval.fn_comp_m1 = comp_le_m1;
        ;}
    break;

  case 40:
#line 324 "./cond.y"
    {
            yyval.fn_comp_m1 = comp_ge_m1;
        ;}
    break;

  case 41:
#line 329 "./cond.y"
    {
            yyval.fn_comp_m1 = 0;
        ;}
    break;

  case 42:
#line 333 "./cond.y"
    {
            yyval.fn_comp_m1 = 0;
        ;}
    break;

  case 43:
#line 337 "./cond.y"
    {
            yyval.fn_comp_m1 = 0;
        ;}
    break;

  case 44:
#line 345 "./cond.y"
    {
            yyval.fn_comp_m2 = comp_eq_m2;
        ;}
    break;

  case 45:
#line 349 "./cond.y"
    {
            yyval.fn_comp_m2 = comp_ne_m2;
        ;}
    break;

  case 46:
#line 353 "./cond.y"
    {
            yyval.fn_comp_m2 = comp_lt_m2;
        ;}
    break;

  case 47:
#line 357 "./cond.y"
    {
            yyval.fn_comp_m2 = comp_gt_m2;
        ;}
    break;

  case 48:
#line 361 "./cond.y"
    {
            yyval.fn_comp_m2 = comp_le_m2;
        ;}
    break;

  case 49:
#line 365 "./cond.y"
    {
            yyval.fn_comp_m2 = comp_ge_m2;
        ;}
    break;

  case 50:
#line 370 "./cond.y"
    {
            yyval.fn_comp_m2 = 0;
        ;}
    break;

  case 51:
#line 374 "./cond.y"
    {
            yyval.fn_comp_m2 = 0;
        ;}
    break;

  case 52:
#line 378 "./cond.y"
    {
            yyval.fn_comp_m2 = 0;
        ;}
    break;

  case 53:
#line 385 "./cond.y"
    {
            yyval.value = yyvsp[0].value;
        ;}
    break;

  case 54:
#line 389 "./cond.y"
    {
            yyval.value = yyvsp[0].value;
        ;}
    break;

  case 55:
#line 396 "./cond.y"
    {
        yyval.string = yyvsp[0].string;
    ;}
    break;

  case 56:
#line 400 "./cond.y"
    {
        yyval.string = yyvsp[0].string;
    ;}
    break;

  case 57:
#line 407 "./cond.y"
    {
            yyval.string = COND_GetLiteral(&yyvsp[0].str);
            if( !yyval.string )
                YYABORT;
        ;}
    break;

  case 58:
#line 416 "./cond.y"
    {
            COND_input* cond = (COND_input*) info;
            INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN;
      
            MSI_GetComponentStateW(cond->package, yyvsp[0].string, &install, &action );
            yyval.value = action;
            msi_free( yyvsp[0].string );
        ;}
    break;

  case 59:
#line 425 "./cond.y"
    {
            COND_input* cond = (COND_input*) info;
            INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN;
      
            MSI_GetComponentStateW(cond->package, yyvsp[0].string, &install, &action );
            yyval.value = install;
            msi_free( yyvsp[0].string );
        ;}
    break;

  case 60:
#line 434 "./cond.y"
    {
            COND_input* cond = (COND_input*) info;
            INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN;
      
            MSI_GetFeatureStateW(cond->package, yyvsp[0].string, &install, &action );
            yyval.value = action;
            msi_free( yyvsp[0].string );
        ;}
    break;

  case 61:
#line 443 "./cond.y"
    {
            COND_input* cond = (COND_input*) info;
            INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN;
      
            MSI_GetFeatureStateW(cond->package, yyvsp[0].string, &install, &action );
            yyval.value = install;
            msi_free( yyvsp[0].string );
        ;}
    break;

  case 62:
#line 455 "./cond.y"
    {
            DWORD sz;
            COND_input* cond = (COND_input*) info;

            sz = 0;
            MSI_GetPropertyW(cond->package, yyvsp[0].string, NULL, &sz);
            if (sz == 0)
            {
                yyval.string = msi_alloc( sizeof(WCHAR));
                yyval.string[0] = 0;
            }

⌨️ 快捷键说明

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