📄 cond.tab.c
字号:
/* 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 + -