📄 yacc.c
字号:
case 38:
#line 213 "yacc.y"
{yyval.bt=bt_union;;
break;}
case 39:
#line 218 "yacc.y"
{yyval.stmt=yyvsp[0].stmt;;
break;}
case 40:
#line 220 "yacc.y"
{
appendObject(&yyvsp[-1].stmt, yyvsp[0].stmt);
yyval.stmt=yyvsp[-1].stmt;
;
break;}
case 41:
#line 229 "yacc.y"
{
yyval.stmt=newDeclStmt(yyvsp[-2].st, yyvsp[-1].sym, currentfile, lineno);
;
break;}
case 42:
#line 236 "yacc.y"
{;
break;}
case 43:
#line 238 "yacc.y"
{;
break;}
case 44:
#line 240 "yacc.y"
{;
break;}
case 45:
#line 245 "yacc.y"
{
if(yyvsp[0].sym->value.i==UNKNOWN)
yyvsp[0].sym->value.i=0;
yyval.sym = yyvsp[0].sym;
;
break;}
case 46:
#line 251 "yacc.y"
{
if(yyvsp[0].sym->value.i==UNKNOWN)
yyvsp[0].sym->value.i=yyvsp[-2].sym->value.i+1;
yyval.sym = yyvsp[0].sym;
;
break;}
case 47:
#line 260 "yacc.y"
{
yyval.sym = newEnumerator(yyvsp[0].val.s, NULL);
;
break;}
case 48:
#line 264 "yacc.y"
{
yyval.sym = newEnumerator(yyvsp[-2].val.s, yyvsp[0].exp);
;
break;}
case 49:
#line 271 "yacc.y"
{yyval.type = yyvsp[0].type;;
break;}
case 50:
#line 273 "yacc.y"
{yyval.type = compoundType(yyvsp[0].type, yyvsp[-1].type);;
break;}
case 51:
#line 278 "yacc.y"
{
yyval.type=newType(NULL, bt_pointer, NULL);
;
break;}
case 52:
#line 282 "yacc.y"
{
yyvsp[0].type->subtype = newType(NULL, bt_pointer, NULL);
yyval.type=yyvsp[0].type;
;
break;}
case 53:
#line 290 "yacc.y"
{yyval.sym=yyvsp[0].sym;;
break;}
case 54:
#line 292 "yacc.y"
{
appendObject(&yyvsp[-2].sym, yyvsp[0].sym);
yyval.sym=yyvsp[-2].sym;
;
break;}
case 55:
#line 300 "yacc.y"
{yyval.sym=yyvsp[0].sym;;
break;}
case 56:
#line 302 "yacc.y"
{
yyvsp[-2].sym->init = yyvsp[0].exp;
yyval.sym=yyvsp[-2].sym;
;
break;}
case 57:
#line 310 "yacc.y"
{yyval.sym=yyvsp[0].sym;;
break;}
case 58:
#line 312 "yacc.y"
{
appendObject(&yyvsp[-2].sym, yyvsp[0].sym);
yyval.sym = yyvsp[-2].sym;
;
break;}
case 59:
#line 320 "yacc.y"
{
yyvsp[0].sym->datatype = compoundType(yyvsp[0].sym->datatype, yyvsp[-1].type);
yyval.sym = yyvsp[0].sym;
;
break;}
case 60:
#line 325 "yacc.y"
{yyval.sym = yyvsp[0].sym;;
break;}
case 61:
#line 330 "yacc.y"
{
yyval.sym = newSymbol(yyvsp[0].val.s, UNKNOWN, NULL);
;
break;}
case 62:
#line 334 "yacc.y"
{yyval.sym=yyvsp[-1].sym;;
break;}
case 63:
#line 336 "yacc.y"
{
Type *extype = newType(NULL, bt_pointer, yyvsp[-1].exp);
yyvsp[-3].sym->datatype = compoundType(yyvsp[-3].sym->datatype, extype);
yyval.sym = yyvsp[-3].sym;
;
break;}
case 64:
#line 342 "yacc.y"
{
Type *extype = newType(NULL, bt_pointer, evaluate_void_exp());
yyvsp[-2].sym->datatype = compoundType(yyvsp[-2].sym->datatype, extype);
yyval.sym = yyvsp[-2].sym;
;
break;}
case 65:
#line 348 "yacc.y"
{
Type *func = newType(NULL, bt_func, NULL);
func->arglist = yyvsp[-1].sym;
yyvsp[-3].sym->datatype = compoundType(yyvsp[-3].sym->datatype, func);
yyval.sym = yyvsp[-3].sym;
;
break;}
case 66:
#line 355 "yacc.y"
{
Type *func = newType(NULL, bt_func, NULL);
func->arglist = newSymbol(NULL, UNKNOWN,
newType(NULL, bt_void, NULL));
yyvsp[-2].sym->datatype = compoundType(yyvsp[-2].sym->datatype, func);
yyval.sym = yyvsp[-2].sym;
;
break;}
case 67:
#line 366 "yacc.y"
{
yyval.sym=yyvsp[0].sym;
;
break;}
case 68:
#line 370 "yacc.y"
{
Symbol *one;
one = newSymbol("...", sc_arg, newType(NULL, bt_ellipsis, NULL));
appendObject(&yyvsp[-2].sym, one);
yyval.sym = yyvsp[-2].sym;
;
break;}
case 69:
#line 380 "yacc.y"
{
yyval.sym = yyvsp[0].sym;
;
break;}
case 70:
#line 384 "yacc.y"
{
appendObject(&yyvsp[-2].sym, yyvsp[0].sym);
yyval.sym = yyvsp[-2].sym;
;
break;}
case 71:
#line 392 "yacc.y"
{
yyvsp[0].sym->storage_class = sc_arg;
yyvsp[0].sym->datatype = compoundType(yyvsp[0].sym->datatype, yyvsp[-1].type);
yyval.sym=yyvsp[0].sym;
;
break;}
case 72:
#line 398 "yacc.y"
{
yyval.sym=newSymbol(NULL, sc_arg, compoundType(yyvsp[0].type, yyvsp[-1].type));
;
break;}
case 73:
#line 405 "yacc.y"
{
yyval.exp = yyvsp[0].exp;
;
break;}
case 74:
#line 409 "yacc.y"
{
yyval.exp = evaluate_brace_exp(yyvsp[-1].exp);
;
break;}
case 75:
#line 416 "yacc.y"
{
yyval.exp = yyvsp[0].exp;
;
break;}
case 76:
#line 420 "yacc.y"
{
appendObject(&yyvsp[-2].exp, yyvsp[0].exp);
yyval.exp = yyvsp[-2].exp;
;
break;}
case 77:
#line 428 "yacc.y"
{yyval.stmt=yyvsp[0].stmt;;
break;}
case 78:
#line 430 "yacc.y"
{yyval.stmt=yyvsp[0].stmt;;
break;}
case 79:
#line 432 "yacc.y"
{yyval.stmt=yyvsp[0].stmt;;
break;}
case 80:
#line 434 "yacc.y"
{yyval.stmt=yyvsp[0].stmt;;
break;}
case 81:
#line 436 "yacc.y"
{yyval.stmt=yyvsp[0].stmt;;
break;}
case 82:
#line 438 "yacc.y"
{yyval.stmt=yyvsp[0].stmt;;
break;}
case 83:
#line 440 "yacc.y"
{
yyval.stmt=local_define(yyvsp[0].stmt->spec, yyvsp[0].stmt->declist);//return init exp statement
;
break;}
case 84:
#line 447 "yacc.y"
{
if(yyvsp[0].stmt->labelno == UNKNOWN)
yyvsp[0].stmt->labelno = newlabelno++;
add_named_label(yyvsp[-2].val.s,yyvsp[0].stmt->labelno);
yyval.stmt=yyvsp[0].stmt;
;
break;}
case 85:
#line 454 "yacc.y"
{
if(yyvsp[0].stmt->labelno ==UNKNOWN)
yyvsp[0].stmt->labelno = newlabelno++;
yyval.stmt = newCalcStmt(stmt_case, yyvsp[-2].exp, yyvsp[0].stmt, NULL, NULL, currentfile, lineno);
yyval.stmt ->labelno = yyvsp[0].stmt->labelno;
;
break;}
case 86:
#line 461 "yacc.y"
{
if(yyvsp[0].stmt->labelno ==UNKNOWN)
yyvsp[0].stmt->labelno = newlabelno++;
yyval.stmt = newCalcStmt(stmt_default, NULL, yyvsp[0].stmt, NULL, NULL, currentfile, lineno);
yyval.stmt ->labelno = yyvsp[0].stmt->labelno;
;
break;}
case 87:
#line 471 "yacc.y"
{
yyval.stmt = newCalcStmt(stmt_compound, NULL, NULL, NULL, NULL, currentfile, lineno);
;
break;}
case 88:
#line 475 "yacc.y"
{
if(blocklevel++)
enter_block();
;
break;}
case 89:
#line 480 "yacc.y"
{
yyval.stmt = newCalcStmt(stmt_compound, NULL, yyvsp[-1].stmt, NULL, NULL, currentfile, lineno);
if(--blocklevel)
leave_block();
;
break;}
case 90:
#line 489 "yacc.y"
{yyval.stmt=yyvsp[0].stmt;;
break;}
case 91:
#line 491 "yacc.y"
{
appendObject(&yyvsp[-1].stmt, yyvsp[0].stmt);
yyval.stmt = yyvsp[-1].stmt;
;
break;}
case 92:
#line 499 "yacc.y"
{
yyval.stmt = newCalcStmt(stmt_exp, yyvsp[-1].exp, NULL, NULL, NULL, currentfile, lineno);
;
break;}
case 93:
#line 506 "yacc.y"
{
yyval.stmt = newCalcStmt(stmt_if, yyvsp[-2].exp, NULL, yyvsp[0].stmt, NULL, currentfile, lineno);
;
break;}
case 94:
#line 510 "yacc.y"
{
yyval.stmt = newCalcStmt(stmt_if, yyvsp[-4].exp, NULL, yyvsp[-2].stmt, yyvsp[0].stmt, currentfile, lineno);
;
break;}
case 95:
#line 514 "yacc.y"
{
yyval.stmt = newCalcStmt(stmt_switch, yyvsp[-2].exp, yyvsp[0].stmt, NULL, NULL, currentfile, lineno);
;
break;}
case 96:
#line 521 "yacc.y"
{
yyval.stmt = newCalcStmt(stmt_while, yyvsp[-2].exp, yyvsp[0].stmt, NULL, NULL, currentfile, lineno);
;
break;}
case 97:
#line 525 "yacc.y"
{
yyval.stmt = newCalcStmt(stmt_do, yyvsp[-2].exp, yyvsp[-5].stmt, NULL, NULL, currentfile, lineno);
;
break;}
case 98:
#line 529 "yacc.y"
{
yyval.stmt = newCalcStmt(stmt_for, yyvsp[-4].exp, yyvsp[0].stmt, yyvsp[-5].stmt,
newCalcStmt(stmt_exp, yyvsp[-2].exp, NULL, NULL, NULL, currentfile, lineno),
currentfile, lineno);
;
break;}
case 99:
#line 535 "yacc.y"
{
int tmp=blocklevel;
enter_block();
blocklevel=0;//do like aguments
yyval.stmt=local_define(yyvsp[0].stmt->spec, yyvsp[0].stmt->declist);//return init exp statement
yyval.stmt->lineno = tmp;
;
break;}
case 100:
#line 544 "yacc.y"
{
//need to record the defined symbols
yyval.stmt = newCalcStmt(stmt_for, yyvsp[-4].exp, yyvsp[0].stmt, yyvsp[-5].stmt,
newCalcStmt(stmt_exp, yyvsp[-2].exp, NULL, NULL, NULL, currentfile, lineno),
currentfile, lineno);
leave_block();
blocklevel=yyvsp[-5].stmt->lineno;
;
break;}
case 101:
#line 557 "yacc.y"
{
ExpNode *aexp = evaluate_label_exp(yyvsp[-1].val.s);
yyval.stmt = newCalcStmt(stmt_goto, aexp, NULL, NULL, NULL, currentfile, lineno);
;
break;}
case 102:
#line 562 "yacc.y"
{
yyval.stmt = newCalcStmt(stmt_continue, NULL, NULL, NULL, NULL, currentfile, lineno);
;
break;}
case 103:
#line 566 "yacc.y"
{
yyval.stmt = newCalcStmt(stmt_break, NULL, NULL, NULL, NULL, currentfile, lineno);
;
break;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -