📄 yacc_cis.c
字号:
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 + -