📄 parse_yy.c
字号:
break;
case 30:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[3];
yyinitdebug(yya, 3);
#endif
{
#line 201 ".\\parse_yy.y"
TreeNode * t = yyattribute(1 - 2);
if (t != NULL)
{ while (t->sibling != NULL)
t = t->sibling;
t->sibling = yyattribute(2 - 2);
yyval = yyattribute(1 - 2); }
else yyval = yyattribute(2 - 2);
#line 649 "parse_yy.c"
}
}
break;
case 31:
{
#line 210 ".\\parse_yy.y"
yyval = NULL;
#line 657 "parse_yy.c"
}
break;
case 32:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 212 ".\\parse_yy.y"
yyval = yyattribute(1 - 1);
#line 669 "parse_yy.c"
}
}
break;
case 33:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 213 ".\\parse_yy.y"
yyval = yyattribute(1 - 1);
#line 682 "parse_yy.c"
}
}
break;
case 34:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 214 ".\\parse_yy.y"
yyval = yyattribute(1 - 1);
#line 695 "parse_yy.c"
}
}
break;
case 35:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 215 ".\\parse_yy.y"
yyval = yyattribute(1 - 1);
#line 708 "parse_yy.c"
}
}
break;
case 36:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 216 ".\\parse_yy.y"
yyval = yyattribute(1 - 1);
#line 721 "parse_yy.c"
}
}
break;
case 37:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[3];
yyinitdebug(yya, 3);
#endif
{
#line 219 ".\\parse_yy.y"
yyval = yyattribute(1 - 2);
#line 734 "parse_yy.c"
}
}
break;
case 38:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 221 ".\\parse_yy.y"
yyval = NULL;
#line 747 "parse_yy.c"
}
}
break;
case 39:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[6];
yyinitdebug(yya, 6);
#endif
{
#line 224 ".\\parse_yy.y"
yyval = newStmtNode(SelectionK);
yyval -> child[0] = yyattribute(3 - 5);
yyval -> child[1] = yyattribute(5 - 5);
#line 763 "parse_yy.c"
}
}
break;
case 40:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[8];
yyinitdebug(yya, 8);
#endif
{
#line 229 ".\\parse_yy.y"
yyval = newStmtNode(SelectionK);
yyval -> child[0] = yyattribute(3 - 7);
yyval -> child[1] = yyattribute(5 - 7);
yyval -> child[2] = yyattribute(7 - 7);
#line 780 "parse_yy.c"
}
}
break;
case 41:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[6];
yyinitdebug(yya, 6);
#endif
{
#line 236 ".\\parse_yy.y"
yyval = newStmtNode(IterationK);
yyval -> child[0] = yyattribute(3 - 5);
yyval -> child[1] = yyattribute(5 - 5);
#line 796 "parse_yy.c"
}
}
break;
case 42:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[3];
yyinitdebug(yya, 3);
#endif
{
#line 242 ".\\parse_yy.y"
yyval = newStmtNode(ReturnK);
yyval -> child[0] = NULL;
#line 811 "parse_yy.c"
}
}
break;
case 43:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 246 ".\\parse_yy.y"
yyval = newStmtNode(ReturnK);
yyval -> child[0] = yyattribute(2 - 3);
#line 826 "parse_yy.c"
}
}
break;
case 44:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 251 ".\\parse_yy.y"
yyval = newExpNode(AssignK);
yyval -> child[0] = yyattribute(1 - 3);
yyval -> child[1] = yyattribute(3 - 3);
#line 842 "parse_yy.c"
}
}
break;
case 45:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 256 ".\\parse_yy.y"
yyval = yyattribute(1 - 1);
#line 855 "parse_yy.c"
}
}
break;
case 46:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 259 ".\\parse_yy.y"
yyval = newExpNode(IdK);
yyval -> attr.name = savedIdName;
#line 870 "parse_yy.c"
}
}
break;
case 47:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[5];
yyinitdebug(yya, 5);
#endif
{
#line 263 ".\\parse_yy.y"
yyval = newExpNode(IdK);
yyval -> attr.name = savedIdName;
yyval -> child[0] = yyattribute(3 - 4);
#line 886 "parse_yy.c"
}
}
break;
case 48:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 269 ".\\parse_yy.y"
yyval = newExpNode(OpK);
yyval -> child[0] = yyattribute(1 - 3);
yyval -> child[1] = yyattribute(3 - 3);
yyval -> attr.op = LT;
yyval -> type = Boolean;
#line 904 "parse_yy.c"
}
}
break;
case 49:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 276 ".\\parse_yy.y"
yyval = newExpNode(OpK);
yyval -> child[0] = yyattribute(1 - 3);
yyval -> child[1] = yyattribute(3 - 3);
yyval -> attr.op = LTEQ;
yyval -> type = Boolean;
#line 922 "parse_yy.c"
}
}
break;
case 50:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 283 ".\\parse_yy.y"
yyval = newExpNode(OpK);
yyval -> child[0] = yyattribute(1 - 3);
yyval -> child[1] = yyattribute(3 - 3);
yyval -> attr.op = GT;
yyval -> type = Boolean;
#line 940 "parse_yy.c"
}
}
break;
case 51:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 290 ".\\parse_yy.y"
yyval = newExpNode(OpK);
yyval -> child[0] = yyattribute(1 - 3);
yyval -> child[1] = yyattribute(3 - 3);
yyval -> attr.op = GTEQ;
yyval -> type = Boolean;
#line 958 "parse_yy.c"
}
}
break;
case 52:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 297 ".\\parse_yy.y"
yyval = newExpNode(OpK);
yyval -> child[0] = yyattribute(1 - 3);
yyval -> child[1] = yyattribute(3 - 3);
yyval -> attr.op = EQ;
yyval -> type = Boolean;
#line 976 "parse_yy.c"
}
}
break;
case 53:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 304 ".\\parse_yy.y"
yyval = newExpNode(OpK);
yyval -> child[0] = yyattribute(1 - 3);
yyval -> child[1] = yyattribute(3 - 3);
yyval -> attr.op = NOEQ;
yyval -> type = Boolean;
#line 994 "parse_yy.c"
}
}
break;
case 54:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 311 ".\\parse_yy.y"
yyval = newExpNode(OpK);
yyval -> child[0] = yyattribute(1 - 3);
yyval -> child[1] = yyattribute(3 - 3);
yyval -> attr.op = PLUS;
#line 1011 "parse_yy.c"
}
}
break;
case 55:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 317 ".\\parse_yy.y"
yyval = newExpNode(OpK);
yyval -> child[0] = yyattribute(1 - 3);
yyval -> child[1] = yyattribute(3 - 3);
yyval -> attr.op = MINUS;
#line 1028 "parse_yy.c"
}
}
break;
case 56:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 323 ".\\parse_yy.y"
yyval = newExpNode(OpK);
yyval -> child[0] = yyattribute(1 - 3);
yyval -> child[1] = yyattribute(3 - 3);
yyval -> attr.op = TIMES;
#line 1045 "parse_yy.c"
}
}
break;
case 57:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 329 ".\\parse_yy.y"
yyval = newExpNode(OpK);
yyval -> child[0] = yyattribute(1 - 3);
yyval -> child[1] = yyattribute(3 - 3);
yyval -> attr.op = OVER;
#line 1062 "parse_yy.c"
}
}
break;
case 58:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 335 ".\\parse_yy.y"
yyval = yyattribute(1 - 1);
#line 1075 "parse_yy.c"
}
}
break;
case 59:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 339 ".\\parse_yy.y"
yyval = yyattribute(2 - 3);
#line 1088 "parse_yy.c"
}
}
break;
case 60:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 341 ".\\parse_yy.y"
yyval = yyattribute(1 - 1);
#line 1101 "parse_yy.c"
}
}
break;
case 61:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 343 ".\\parse_yy.y"
yyval = yyattribute(1 - 1);
#line 1114 "parse_yy.c"
}
}
break;
case 62:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 345 ".\\parse_yy.y"
yyval = newExpNode(ConstK);
yyval -> type = Integer;
yyval -> attr.val.i = atoi(tokenString);
#line 1130 "parse_yy.c"
}
}
break;
case 63:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[5];
yyinitdebug(yya, 5);
#endif
{
#line 351 ".\\parse_yy.y"
yyval = newExpNode(CallK);
yyval -> attr.name = yyattribute(1 - 4) -> attr.name;
yyval -> child[0] = yyattribute(3 - 4);
#line 1146 "parse_yy.c"
}
}
break;
case 64:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 357 ".\\parse_yy.y"
TreeNode * t = yyattribute(1 - 3);
if (t != NULL)
{ while (t->sibling != NULL)
t = t->sibling;
t->sibling = yyattribute(3 - 3);
yyval = yyattribute(1 - 3); }
else yyval = yyattribute(3 - 3);
#line 1166 "parse_yy.c"
}
}
break;
case 65:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 366 ".\\parse_yy.y"
yyval = yyattribute(1 - 1);
#line 1179 "parse_yy.c"
}
}
break;
case 66:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 369 ".\\parse_yy.y"
yyval = yyattribute(1 - 1);
#line 1192 "parse_yy.c"
}
}
break;
case 67:
{
#line 371 ".\\parse_yy.y"
yyval = NULL;
#line 1200 "parse_yy.c"
}
break;
default:
yyassert(0);
break;
}
}
#ifdef YYDEBUG
YYCONST yysymbol_t YYNEARFAR YYBASED_CODE YYDCDECL yysymbol[] = {
{ "$end", 0 },
{ "error", 256 },
{ "IF", 259 },
{ "ELSE", 260 },
{ "RETURN", 261 },
{ "WHILE", 262 },
{ "INT", 263 },
{ "VOID", 264 },
{ "ID", 265 },
{ "NUM", 266 },
{ "PLUS", 267 },
{ "MINUS", 268 },
{ "TIMES", 269 },
{ "OVER", 270 },
{ "LT", 271 },
{ "LTEQ", 272 },
{ "GT", 273 },
{ "GTEQ", 274 },
{ "EQ", 275 },
{ "NOEQ", 276 },
{ "ASSIGN", 277 },
{ "SEMI", 278 },
{ "COMMA", 279 },
{ "LPAREN", 280 },
{ "RPAREN", 281 },
{ "LBRA", 282 },
{ "RBRA", 283 },
{ "LBRACE", 284 },
{ "RBRACE", 285 },
{ NULL, 0 }
};
YYCONST char *YYCONST YYNEARFAR YYBASED_CODE YYDCDECL yyrule[] = {
"$accept: program",
"program: dec_list",
"dec_list: dec_list dec",
"dec_list: dec",
"dec: var_dec",
"dec: fun_dec",
"dec: fun_def",
"id: ID",
"fid:",
"var_dec: type_spec id_list SEMI",
"id_list: id_list COMMA var",
"id_list: var",
"id_list: id_list COMMA id ASSIGN simple_exp",
"id_list: id ASSIGN simple_exp",
"type_spec: INT",
"type_spec: VOID",
"fun_def: type_spec id fid LPAREN params RPAREN comp_stmt",
"fun_def: id fid LPAREN params RPAREN comp_stmt",
"fun_dec: type_spec id fid LPAREN params RPAREN SEMI",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -