📄 c-.tab.c
字号:
union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyoverflowlab; YYSTACK_RELOCATE (yyss); YYSTACK_RELOCATE (yyvs);# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); }# endif#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup;/*-----------.| yybackup. |`-----------*/yybackup:/* 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 63 "c-.y" {yyval.symptr=newLeaf("ID"); symrec *id; id=getsym(yyvsp[0].val, scope); if(id==NULL) { yyerror(); yynerrs++; printf("---error messege(%d,%d):identifier \"%s\" not defined, first used here\n", currLine, column, yyvsp[0].val); }else { //$$->symTab=add2Table($1,funcType,scope); yyval.symptr->symTab=id; } curIDNode = yyval.symptr;lastIDNode=yyval.symptr; ;} break; case 3:#line 76 "c-.y" {yyval.symptr=newLeaf("INT_V"); strcpy(yyval.symptr->value,yyvsp[0].val);;} break; case 4:#line 77 "c-.y" {yyval.symptr=newLeaf("CHAR_V"); if(yyvsp[0].val[1]!='\\') { yyvsp[0].val[0]=yyvsp[0].val[1]; yyvsp[0].val[1]='\0'; }else{ if( yyvsp[0].val[2]<'0' || yyvsp[0].val[2]>'9'){ yyvsp[0].val[0]=yyvsp[0].val[2]; yyvsp[0].val[1]='\0'; }else{ int i; char asc[10]; for(i=2; i<strlen(yyvsp[0].val); i++){ asc[i-2]=yyvsp[0].val[i]; } asc[i-2]='\0'; i=atoi(asc); //printf("char i: %d\n", i); yyvsp[0].val[0]=i; yyvsp[0].val[1]='\0'; } } sprintf(yyval.symptr->value, "%d",(int)(yyvsp[0].val[0])); ;} break; case 5:#line 100 "c-.y" {yyval.symptr=newLeaf("FLT_V"); float f; f=atof(yyvsp[0].val); sprintf(yyval.symptr->value,"%d", *( (unsigned int *)(&f))); //printf("%s : %s\n", $1, $$->value); //strcpy($$->value,$1); ;} break; case 6:#line 107 "c-.y" {yyval.symptr=newLeaf("HEX_V"); strcpy(yyval.symptr->value,yyvsp[0].val);;} break; case 7:#line 108 "c-.y" {yyval.symptr=newLeaf("EP_V"); strcpy(yyval.symptr->value,yyvsp[0].val);;} break; case 8:#line 109 "c-.y" {strcpy(literals[strCount],yyvsp[0].val);yyval.symptr=setStrIndex(newLeaf("STRING"),strCount);strCount++;;} break; case 9:#line 110 "c-.y" {yyval.symptr=yyvsp[-1].symptr;;} break; case 10:#line 114 "c-.y" {yyval.symptr=yyvsp[0].symptr;;} break; case 11:#line 115 "c-.y" { yyval.symptr=addSibling(addNext(newLeaf("offset"),yyvsp[-3].symptr), addNext(newLeaf("exp"),yyvsp[-1].symptr)); yyval.symptr->sibling->symTab=curIDNode->symTab; strcpy(yyval.symptr->sibling->value,lastIDNode->value); ;} break; case 12:#line 121 "c-.y" {yyval.symptr=yyvsp[-2].symptr;;} break; case 13:#line 122 "c-.y" {yyval.symptr=addSibling(yyvsp[-3].symptr,yyvsp[-1].symptr);;} break; case 14:#line 123 "c-.y" {yyval.symptr=addSibling(addNext(newLeaf("offset"),yyvsp[-2].symptr), newLeaf("member")); strcpy(yyval.symptr->sibling->value, yyvsp[0].val); yyval.symptr->sibling->symTab=curIDNode->symTab; lastIDNode=yyval.symptr->sibling; ;} break; case 15:#line 129 "c-.y" {yyval.symptr=addSibling(addNext(newLeaf(yyvsp[-1].val),yyvsp[-2].symptr), newLeaf("ID"));;} break; case 16:#line 130 "c-.y" {yyval.symptr=addSibling(newLeaf("unaryOp"),yyvsp[-1].symptr); strcpy(yyval.symptr->value,"O+"); yyval.symptr->symTab=curIDNode->symTab; ;} break; case 17:#line 134 "c-.y" {yyval.symptr=addSibling(newLeaf("unaryOp"),yyvsp[-1].symptr); strcpy(yyval.symptr->value,"O-"); yyval.symptr->symTab=curIDNode->symTab; ;} break; case 18:#line 141 "c-.y" {yyval.symptr=yyvsp[0].symptr;;} break; case 19:#line 142 "c-.y" {yyval.symptr=addSibling(addNext(newLeaf("asgnExp"),yyvsp[0].symptr),addNext(newLeaf("argExpLst"),yyvsp[-2].symptr));;} break; case 20:#line 146 "c-.y" {yyval.symptr=yyvsp[0].symptr;;} break; case 21:#line 147 "c-.y" {yyval.symptr=addSibling(newLeaf("unaryOp"), yyvsp[0].symptr); strcpy(yyval.symptr->value,"+O"); yyval.symptr->symTab=curIDNode->symTab; ;} break; case 22:#line 151 "c-.y" {yyval.symptr=addSibling(newLeaf("unaryOp"), yyvsp[0].symptr); strcpy(yyval.symptr->value,"-O"); yyval.symptr->symTab=curIDNode->symTab; ;} break; case 23:#line 155 "c-.y" {yyval.symptr=addSibling(yyvsp[-1].symptr,yyvsp[0].symptr);;} break; case 24:#line 156 "c-.y" {yyval.symptr=addSibling(newLeaf("sizeof"), yyvsp[0].symptr);;} break; case 25:#line 157 "c-.y" {yyval.symptr=addSibling(newLeaf("sizeof"), yyvsp[-1].symptr);;} break; case 26:#line 161 "c-.y" {yyval.symptr=newLeaf("&");;} break; case 27:#line 162 "c-.y" {yyval.symptr=newLeaf("*");;} break; case 28:#line 163 "c-.y" {yyval.symptr=newLeaf("+");;} break; case 29:#line 164 "c-.y" {yyval.symptr=newLeaf("-");;} break; case 30:#line 165 "c-.y" {yyval.symptr=newLeaf("!");;} break; case 31:#line 169 "c-.y" {yyval.symptr=yyvsp[0].symptr;;} break; case 32:#line 170 "c-.y" {yyval.symptr=addSibling(new
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -