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

📄 yacc_cis.c

📁 pcmcia source code
💻 C
📖 第 1 页 / 共 3 页
字号:
0,0,0,0,0,0,0,0,0,0,"','","'-'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'='",0,0,"'@'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"']'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",0,"'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"STRING","NUMBER","FLOAT","VOLTAGE","CURRENT","SIZE","VERS_1","MANFID","FUNCID","CONFIG","CFTABLE","MFC","CHECKSUM","POST","ROM","BASE","LAST_INDEX","CJEDEC","AJEDEC","DEV_INFO","ATTR_DEV_INFO","NO_INFO","TIME","TIMING","WAIT","READY","RESERVED","VNOM","VMIN","VMAX","ISTATIC","IAVG","IPEAK","IDOWN","VCC","VPP1","VPP2","IO","MEM","DEFAULT","BVD","WP","RDYBSY","MWAIT","AUDIO","READONLY","PWRDOWN","BIT8","BIT16","LINES","RANGE","IRQ_NO","MASK","LEVEL","PULSE","SHARED",};char *yyrule[] = {"$accept : cis","cis : chain","cis : chain mfc","chain :","chain : chain tuple","mfc : MFC '{' chain '}'","mfc : mfc ',' '{' chain '}'","tuple : dev_info","tuple : attr_dev_info","tuple : vers_1","tuple : manfid","tuple : funcid","tuple : config","tuple : cftab","tuple : checksum","tuple : error","tuple : cjedec","tuple : ajedec","dev_info : DEV_INFO","dev_info : dev_info NUMBER TIME ',' SIZE","dev_info : dev_info NO_INFO","attr_dev_info : ATTR_DEV_INFO","attr_dev_info : attr_dev_info NUMBER TIME ',' SIZE","attr_dev_info : attr_dev_info NO_INFO","vers_1 : VERS_1 FLOAT","vers_1 : vers_1 ',' STRING","manfid : MANFID NUMBER ',' NUMBER","funcid : FUNCID NUMBER","funcid : funcid POST","funcid : funcid ROM","cjedec : CJEDEC NUMBER NUMBER","cjedec : cjedec ',' NUMBER NUMBER","ajedec : AJEDEC NUMBER NUMBER","ajedec : ajedec ',' NUMBER NUMBER","config : CONFIG BASE NUMBER MASK NUMBER LAST_INDEX NUMBER","pwr : VNOM VOLTAGE","pwr : VMIN VOLTAGE","pwr : VMAX VOLTAGE","pwr : ISTATIC CURRENT","pwr : IAVG CURRENT","pwr : IPEAK CURRENT","pwr : IDOWN CURRENT","pwrlist :","pwrlist : pwrlist pwr","timing : cftab TIMING","timing : timing WAIT TIME","timing : timing READY TIME","timing : timing RESERVED TIME","io : cftab IO NUMBER '-' NUMBER","io : io ',' NUMBER '-' NUMBER","io : io BIT8","io : io BIT16","io : io LINES '=' NUMBER ']'","io : io RANGE","mem : cftab MEM NUMBER '-' NUMBER '@' NUMBER","mem : mem ',' NUMBER '-' NUMBER '@' NUMBER","mem : mem BIT8","mem : mem BIT16","irq : cftab IRQ_NO NUMBER","irq : cftab IRQ_NO MASK NUMBER","irq : irq PULSE","irq : irq LEVEL","irq : irq SHARED","cftab : CFTABLE NUMBER","cftab : cftab DEFAULT","cftab : cftab BVD","cftab : cftab WP","cftab : cftab RDYBSY","cftab : cftab MWAIT","cftab : cftab AUDIO","cftab : cftab READONLY","cftab : cftab PWRDOWN","cftab : cftab VCC pwrlist","cftab : cftab VPP1 pwrlist","cftab : cftab VPP2 pwrlist","cftab : io","cftab : mem","cftab : irq","cftab : timing","checksum : CHECKSUM NUMBER '-' NUMBER '=' NUMBER",};#endif#ifdef YYSTACKSIZE#undef YYMAXDEPTH#define YYMAXDEPTH YYSTACKSIZE#else#ifdef YYMAXDEPTH#define YYSTACKSIZE YYMAXDEPTH#else#define YYSTACKSIZE 500#define YYMAXDEPTH 500#endif#endifint yydebug;int yynerrs;int yyerrflag;int yychar;short *yyssp;YYSTYPE *yyvsp;YYSTYPE yyval;YYSTYPE yylval;short yyss[YYSTACKSIZE];YYSTYPE yyvs[YYSTACKSIZE];#define yystacksize YYSTACKSIZE#line 391 "yacc_cis.y"static tuple_info_t *new_tuple(u_char type, cisparse_t *parse){    tuple_info_t *t = calloc(1, sizeof(tuple_info_t));    t->type = type;    t->parse = parse;    t->next = NULL;}void yyerror(char *msg, ...){    va_list ap;    char str[256];    va_start(ap, msg);    sprintf(str, "error at line %d: ", current_lineno);    vsprintf(str+strlen(str), msg, ap);    fprintf(stderr, "%s\n", str);    va_end(ap);}#ifdef DEBUGvoid main(int argc, char *argv[]){    if (argc > 1)	parse_cis(argv[1]);}#endif#line 520 "y.tab.c"#define YYABORT goto yyabort#define YYREJECT goto yyabort#define YYACCEPT goto yyaccept#define YYERROR goto yyerrlabintyyparse(){    register int yym, yyn, yystate;#if YYDEBUG    register char *yys;    extern char *getenv();    if (yys = getenv("YYDEBUG"))    {        yyn = *yys;        if (yyn >= '0' && yyn <= '9')            yydebug = yyn - '0';    }#endif    yynerrs = 0;    yyerrflag = 0;    yychar = (-1);    yyssp = yyss;    yyvsp = yyvs;    *yyssp = yystate = 0;yyloop:    if (yyn = yydefred[yystate]) goto yyreduce;    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, yystate, yychar, yys);        }#endif    }    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)    {#if YYDEBUG        if (yydebug)            printf("%sdebug: state %d, shifting to state %d\n",                    YYPREFIX, yystate, yytable[yyn]);#endif        if (yyssp >= yyss + yystacksize - 1)        {            goto yyoverflow;        }        *++yyssp = yystate = yytable[yyn];        *++yyvsp = yylval;        yychar = (-1);        if (yyerrflag > 0)  --yyerrflag;        goto yyloop;    }    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)    {        yyn = yytable[yyn];        goto yyreduce;    }    if (yyerrflag) goto yyinrecovery;#ifdef lint    goto yynewerror;#endifyynewerror:    yyerror("syntax error");#ifdef lint    goto yyerrlab;#endifyyerrlab:    ++yynerrs;yyinrecovery:    if (yyerrflag < 3)    {        yyerrflag = 3;        for (;;)        {            if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)            {#if YYDEBUG                if (yydebug)                    printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);#endif                if (yyssp >= yyss + yystacksize - 1)                {                    goto yyoverflow;                }                *++yyssp = yystate = yytable[yyn];                *++yyvsp = yylval;                goto yyloop;            }            else            {#if YYDEBUG                if (yydebug)                    printf("%sdebug: error recovery discarding state %d\n",                            YYPREFIX, *yyssp);#endif                if (yyssp <= yyss) goto yyabort;                --yyssp;                --yyvsp;            }        }    }    else    {        if (yychar == 0) goto yyabort;#if YYDEBUG        if (yydebug)        {            yys = 0;            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];            if (!yys) yys = "illegal-symbol";            printf("%sdebug: state %d, error recovery discards token %d (%s)\n",                    YYPREFIX, yystate, yychar, yys);        }#endif        yychar = (-1);        goto yyloop;    }yyreduce:#if YYDEBUG    if (yydebug)        printf("%sdebug: state %d, reducing by rule %d (%s)\n",                YYPREFIX, yystate, yyn, yyrule[yyn]);#endif    yym = yylen[yyn];    yyval = yyvsp[1-yym];    switch (yyn)    {case 1:#line 84 "yacc_cis.y"{ cis_root = yyvsp[0].tuple; }break;case 2:#line 86 "yacc_cis.y"{ cis_root = yyvsp[-1].tuple; }break;case 3:#line 90 "yacc_cis.y"{ yyval.tuple = NULL; }break;case 4:#line 92 "yacc_cis.y"{		    if (yyvsp[-1].tuple == NULL) {			yyval.tuple = yyvsp[0].tuple;		    } else if (yyvsp[0].tuple == NULL) {			yyval.tuple = yyvsp[-1].tuple;		    } else {			tuple_info_t *tail = yyvsp[-1].tuple;			while (tail->next != NULL) tail = tail->next;			tail->next = yyvsp[0].tuple;			yyval.tuple = yyvsp[-1].tuple;		    }		}break;case 5:#line 107 "yacc_cis.y"{ mfc[nf++] = yyvsp[-1].tuple; }break;case 6:#line 109 "yacc_cis.y"{ mfc[nf++] = yyvsp[-1].tuple; }break;case 7:#line 113 "yacc_cis.y"{ yyval.tuple = new_tuple(CISTPL_DEVICE, yyvsp[0].parse); }break;case 8:#line 115 "yacc_cis.y"{ yyval.tuple = new_tuple(CISTPL_DEVICE_A, yyvsp[0].parse); }break;case 9:#line 117 "yacc_cis.y"{ yyval.tuple = new_tuple(CISTPL_VERS_1, yyvsp[0].parse); }break;case 10:#line 119 "yacc_cis.y"{ yyval.tuple = new_tuple(CISTPL_MANFID, yyvsp[0].parse); }break;case 11:#line 121 "yacc_cis.y"{ yyval.tuple = new_tuple(CISTPL_FUNCID, yyvsp[0].parse); }break;case 12:#line 123 "yacc_cis.y"{ yyval.tuple = new_tuple(CISTPL_CONFIG, yyvsp[0].parse); }break;case 13:#line 125 "yacc_cis.y"{ yyval.tuple = new_tuple(CISTPL_CFTABLE_ENTRY, yyvsp[0].parse); }break;case 14:#line 127 "yacc_cis.y"{ yyval.tuple = NULL; }break;case 15:#line 129 "yacc_cis.y"{ yyval.tuple = NULL; }break;case 16:#line 131 "yacc_cis.y"{ yyval.tuple = new_tuple(CISTPL_JEDEC_C, yyvsp[0].parse); }break;case 17:#line 133 "yacc_cis.y"{ yyval.tuple = new_tuple(CISTPL_JEDEC_A, yyvsp[0].parse); }break;case 18:#line 137 "yacc_cis.y"

⌨️ 快捷键说明

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