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

📄 yacc_config.c

📁 pcmcia source code
💻 C
📖 第 1 页 / 共 3 页
字号:
		    if ((yyvsp[0].num < yyvsp[-2].num) || (yyvsp[0].num > 0xffff)) {			yyerror("invalid port range 0x%x-0x%x", yyvsp[-2].num, yyvsp[0].num);			YYERROR;		    }		    yyval.adjust = calloc(sizeof(adjust_list_t), 1);		    yyval.adjust->adj.Resource = RES_IO_RANGE;		    yyval.adjust->adj.resource.io.BasePort = yyvsp[-2].num;		    yyval.adjust->adj.resource.io.NumPorts = yyvsp[0].num - yyvsp[-2].num + 1;		}break;case 16:#line 174 "yacc_config.y"{		    if (yyvsp[0].num < yyvsp[-2].num) {			yyerror("invalid address range 0x%x-0x%x", yyvsp[-2].num, yyvsp[0].num);			YYERROR;		    }		    yyval.adjust = calloc(sizeof(adjust_list_t), 1);		    yyval.adjust->adj.Resource = RES_MEMORY_RANGE;		    yyval.adjust->adj.resource.memory.Base = yyvsp[-2].num;		    yyval.adjust->adj.resource.memory.Size = yyvsp[0].num - yyvsp[-2].num + 1;		}break;case 17:#line 187 "yacc_config.y"{		    yyval.device = calloc(sizeof(device_info_t), 1);		    yyval.device->refs = 1;		    strcpy(yyval.device->dev_info, yyvsp[0].str);		    free(yyvsp[0].str);		}break;case 21:#line 199 "yacc_config.y"{		    yyval.card = calloc(sizeof(card_info_t), 1);		    yyval.card->refs = 1;		    yyval.card->name = yyvsp[0].str;		}break;case 30:#line 215 "yacc_config.y"{		    if (yyvsp[-1].card->ident_type) {			yyerror("ID method already defined for '%s'", yyvsp[-1].card->name);			YYERROR;		    }		    if (blank_card) {			yyerror("Anonymous card already defined");			YYERROR;		    }		    yyvsp[-1].card->ident_type = BLANK_IDENT;		    blank_card = yyvsp[-1].card;		}break;case 31:#line 230 "yacc_config.y"{		    if (yyvsp[-6].card->ident_type) {			yyerror("ID method already defined for '%s'", yyvsp[-6].card->name);			YYERROR;		    }		    yyvsp[-6].card->ident_type = TUPLE_IDENT;		    yyvsp[-6].card->id.tuple.code = yyvsp[-4].num;		    yyvsp[-6].card->id.tuple.ofs = yyvsp[-2].num;		    yyvsp[-6].card->id.tuple.info = yyvsp[0].str;		}break;case 32:#line 243 "yacc_config.y"{		    if (yyvsp[-4].card->ident_type & (EXCL_IDENT|MANFID_IDENT)) {			yyerror("ID method already defined for '%s'", yyvsp[-4].card->name);			YYERROR;		    }		    yyvsp[-4].card->ident_type |= MANFID_IDENT;		    yyvsp[-4].card->manfid.manf = yyvsp[-2].num;		    yyvsp[-4].card->manfid.card = yyvsp[0].num;		}break;case 33:#line 254 "yacc_config.y"{		    if (yyvsp[-4].card->ident_type) {			yyerror("ID method already defined for '%s'", yyvsp[-4].card->name);			YYERROR;		    }		    yyvsp[-4].card->ident_type = PCI_IDENT;		    yyvsp[-4].card->manfid.manf = yyvsp[-2].num;		    yyvsp[-4].card->manfid.card = yyvsp[0].num;		}break;case 34:#line 265 "yacc_config.y"{		    if (yyvsp[-2].card->ident_type & (EXCL_IDENT|VERS_1_IDENT)) {			yyerror("ID method already defined for '%s'", yyvsp[-2].card->name);			YYERROR;		    }		    yyvsp[-2].card->ident_type |= VERS_1_IDENT;		    yyvsp[-2].card->id.vers.ns = 1;		    yyvsp[-2].card->id.vers.pi[0] = yyvsp[0].str;		}break;case 35:#line 275 "yacc_config.y"{		    if (yyvsp[-2].card->id.vers.ns == 4) {			yyerror("too many version strings for '%s'", yyvsp[-2].card->name);			YYERROR;		    }		    yyvsp[-2].card->id.vers.pi[yyvsp[-2].card->id.vers.ns] = yyvsp[0].str;		    yyvsp[-2].card->id.vers.ns++;		}break;case 36:#line 286 "yacc_config.y"{		    if (yyvsp[-2].card->ident_type) {			yyerror("ID method already defined for '%s'", yyvsp[-2].card->name);			YYERROR;		    }		    yyvsp[-2].card->ident_type = FUNC_IDENT;		    yyvsp[-2].card->id.func.funcid = yyvsp[0].num;		}break;case 37:#line 297 "yacc_config.y"{ yyvsp[-2].card->cis_file = strdup(yyvsp[0].str); }break;case 38:#line 301 "yacc_config.y"{		    if (add_binding(yyvsp[-2].card, yyvsp[0].str, 0) != 0)			YYERROR;		}break;case 39:#line 306 "yacc_config.y"{		    if (add_binding(yyvsp[-4].card, yyvsp[-2].str, yyvsp[0].num) != 0)			YYERROR;		}break;case 40:#line 311 "yacc_config.y"{		    if (add_binding(yyvsp[-2].card, yyvsp[0].str, 0) != 0)			YYERROR;		}break;case 41:#line 316 "yacc_config.y"{		    if (add_binding(yyvsp[-4].card, yyvsp[-2].str, yyvsp[0].num) != 0)			YYERROR;		}break;case 42:#line 323 "yacc_config.y"{		    yyvsp[-1].device->needs_mtd = 1;		}break;case 43:#line 329 "yacc_config.y"{		    device_info_t *d;		    int i, found = 0;		    for (d = root_device; d; d = d->next) {			for (i = 0; i < d->modules; i++)			    if (strcmp(yyvsp[-2].str, d->module[i]) == 0) break;			if (i < d->modules) {			    if (d->opts[i])				free(d->opts[i]);			    d->opts[i] = strdup(yyvsp[0].str);			    found = 1;			}		    }		    free(yyvsp[-2].str); free(yyvsp[0].str);		    if (!found) {			yyerror("module name '%s' not found", yyvsp[-2].str);			YYERROR;		    }		}break;case 44:#line 351 "yacc_config.y"{		    if (add_module(yyvsp[-2].device, yyvsp[0].str) != 0)			YYERROR;		}break;case 45:#line 356 "yacc_config.y"{		    if (yyvsp[-2].device->opts[yyvsp[-2].device->modules-1] == NULL) {			yyvsp[-2].device->opts[yyvsp[-2].device->modules-1] = yyvsp[0].str;		    } else {			yyerror("too many module options for '%s'",				yyvsp[-2].device->module[yyvsp[-2].device->modules-1]);			YYERROR;		    }		}break;case 46:#line 366 "yacc_config.y"{		    if (add_module(yyvsp[-2].device, yyvsp[0].str) != 0)			YYERROR;		}break;case 47:#line 373 "yacc_config.y"{		    if (yyvsp[-2].device->class != NULL) {			yyerror("extra class string '%s'", yyvsp[0].str);			YYERROR;		    }		    yyvsp[-2].device->class = yyvsp[0].str;		}break;case 48:#line 383 "yacc_config.y"{		    yyval.mtd = calloc(sizeof(mtd_ident_t), 1);		    yyval.mtd->refs = 1;		    yyval.mtd->name = yyvsp[0].str;		}break;case 52:#line 394 "yacc_config.y"{		    if (yyvsp[-2].mtd->mtd_type) {			yyerror("ID method already defined for '%s'", yyvsp[-2].mtd->name);			YYERROR;		    }		    yyvsp[-2].mtd->mtd_type = DTYPE_MTD;		    yyvsp[-2].mtd->dtype = yyvsp[0].num;		}break;case 53:#line 405 "yacc_config.y"{		    if (yyvsp[-3].mtd->mtd_type) {			yyerror("ID method already defined for '%s'", yyvsp[-3].mtd->name);			YYERROR;		    }		    yyvsp[-3].mtd->mtd_type = JEDEC_MTD;		    yyvsp[-3].mtd->jedec_mfr = yyvsp[-1].num;		    yyvsp[-3].mtd->jedec_info = yyvsp[0].num;		}break;case 54:#line 417 "yacc_config.y"{		    if (yyvsp[-1].mtd->mtd_type) {			yyerror("ID method already defined for '%s'", yyvsp[-1].mtd->name);			YYERROR;		    }		    if (default_mtd) {			yyerror("Default MTD already defined");			YYERROR;		    }		    yyvsp[-1].mtd->mtd_type = DEFAULT_MTD;		    default_mtd = yyvsp[-1].mtd;		}break;case 55:#line 432 "yacc_config.y"{		    if (yyvsp[-2].mtd->module != NULL) {			yyerror("extra MTD entry for '%s'", yyvsp[-2].mtd->name);			YYERROR;		    }		    yyvsp[-2].mtd->module = yyvsp[0].str;		}break;case 56:#line 440 "yacc_config.y"{		    if (yyvsp[-2].mtd->opts == NULL) {			yyvsp[-2].mtd->opts = yyvsp[0].str;		    } else {			yyerror("too many module options for '%s'", yyvsp[-2].mtd->module);			YYERROR;		    }		}break;case 57:#line 451 "yacc_config.y"{		    mtd_ident_t *m;		    int found = 0;		    for (m = root_mtd; m; m = m->next)			if (strcmp(yyvsp[-2].str, m->module) == 0) break;		    if (m) {			if (m->opts) free(m->opts);			m->opts = strdup(yyvsp[0].str);			found = 1;		    }		    free(yyvsp[-2].str); free(yyvsp[0].str);		    if (!found) {			yyerror("MTD name '%s' not found", yyvsp[-2].str);			YYERROR;		    }		}break;#line 1042 "y.tab.c"    }    yyssp -= yym;    yystate = *yyssp;    yyvsp -= yym;    yym = yylhs[yyn];    if (yystate == 0 && yym == 0)    {#if YYDEBUG        if (yydebug)            printf("%sdebug: after reduction, shifting from state 0 to\ state %d\n", YYPREFIX, YYFINAL);#endif        yystate = YYFINAL;        *++yyssp = YYFINAL;        *++yyvsp = yyval;        if (yychar < 0)        {            if ((yychar = yylex()) < 0) yychar = 0;#if YYDEBUG            if (yydebug)            {                yys = 0;                if (yychar <= YYMAXTOKEN) yys = yyname[yychar];                if (!yys) yys = "illegal-symbol";                printf("%sdebug: state %d, reading %d (%s)\n",                        YYPREFIX, YYFINAL, yychar, yys);            }#endif        }        if (yychar == 0) goto yyaccept;        goto yyloop;    }    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)        yystate = yytable[yyn];    else        yystate = yydgoto[yym];#if YYDEBUG    if (yydebug)        printf("%sdebug: after reduction, shifting from state %d \to state %d\n", YYPREFIX, *yyssp, yystate);#endif    if (yyssp >= yysslim && yygrowstack())    {        goto yyoverflow;    }    *++yyssp = yystate;    *++yyvsp = yyval;    goto yyloop;yyoverflow:    yyerror("yacc stack overflow");yyabort:    return (1);yyaccept:    return (0);}

⌨️ 快捷键说明

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