📄 myparser.c
字号:
yyval->child[1] = yyattribute(3 - 3);
// printf("*************\n");
yyval->op = LE;
#line 657 "myparser.c"
}
}
break;
case 27:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 255 ".\\myparser.y"
++total;
yyval=newExprNode(Exprk,total);
yyval->child[0] = yyattribute(1 - 3);
yyval->child[1] = yyattribute(3 - 3);
// printf("*************\n");
yyval->op = GE;
#line 677 "myparser.c"
}
}
break;
case 28:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 263 ".\\myparser.y"
++total;
yyval=newExprNode(Exprk,total);
yyval->child[0] = yyattribute(1 - 3);
yyval->child[1] = yyattribute(3 - 3);
// printf("*************\n");
yyval->op = NEQ;
#line 697 "myparser.c"
}
}
break;
case 29:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 271 ".\\myparser.y"
yyval=yyattribute(1 - 1);
#line 710 "myparser.c"
}
}
break;
case 30:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[3];
yyinitdebug(yya, 3);
#endif
{
#line 276 ".\\myparser.y"
++total;
yyval=newExprNode(Exprk,total);
yyval->child[0] = yyattribute(2 - 2);
yyval->op=NOT;
#line 728 "myparser.c"
}
}
break;
case 31:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 283 ".\\myparser.y"
++total;
//printf("%d: Expr op: + \n",total);
yyval=newExprNode(Exprk,total);
yyval->child[0] = yyattribute(1 - 3);
yyval->child[1] = yyattribute(3 - 3);
yyval->op=PLUS;
#line 748 "myparser.c"
}
}
break;
case 32:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 291 ".\\myparser.y"
//printf("%d: Expr op: - \n",total);
++total;
yyval=newExprNode(Exprk,total);
yyval->child[0] = yyattribute(1 - 3);
yyval->child[1] = yyattribute(3 - 3);
yyval->op=MINUS;
#line 768 "myparser.c"
}
}
break;
case 33:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 299 ".\\myparser.y"
yyval=yyattribute(1 - 1);
#line 781 "myparser.c"
}
}
break;
case 34:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 301 ".\\myparser.y"
++total;
// printf("%d: Term op: * \n",total);
yyval=newExprNode(Exprk,total);
yyval->child[0] = yyattribute(1 - 3);
yyval->child[1] = yyattribute(3 - 3);
yyval->op=TIMES;
#line 801 "myparser.c"
}
}
break;
case 35:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 310 ".\\myparser.y"
// printf("%d: Term op: / \n",total);
++total;
yyval=newExprNode(Exprk,total);
yyval->child[0] = yyattribute(1 - 3);
yyval->child[1] = yyattribute(3 - 3);
yyval->op=OVER;
#line 821 "myparser.c"
}
}
break;
case 36:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 318 ".\\myparser.y"
yyval=yyattribute(1 - 1);
#line 834 "myparser.c"
}
}
break;
case 37:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 321 ".\\myparser.y"
yyval=yyattribute(2 - 3);
#line 847 "myparser.c"
}
}
break;
case 38:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 322 ".\\myparser.y"
yyval=yyattribute(1 - 1);
#line 860 "myparser.c"
}
}
break;
case 39:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 323 ".\\myparser.y"
yyval=yyattribute(1 - 1);
#line 873 "myparser.c"
}
}
break;
case 40:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 325 ".\\myparser.y"
++total; //printf("%d: ID Declaration symbol:%s \n",total,yytext);
yyval =newExprNode(IDk,total);
//$$->name=yytext;
strcpy(yyval->name,yytext);
// insert_st($$->name);
#line 891 "myparser.c"
}
}
break;
case 41:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 339 ".\\myparser.y"
++total; //printf("%d: Const Declaration symbol:%d \n",total,atoi(yytext));
yyval = newExprNode(Constk,total);
yyval->val=atoi(yytext);
#line 907 "myparser.c"
}
}
break;
case 42:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 347 ".\\myparser.y"
++total;//$$ =newIDNode(Typek,total,"Char");
#line 921 "myparser.c"
}
}
break;
case 43:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 349 ".\\myparser.y"
++total;//$$ =newIDNode(Typek,total,"Integer");
#line 935 "myparser.c"
}
}
break;
case 44:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 351 ".\\myparser.y"
++total;//$$ =newIDNode(Typek,total,"Double");
#line 949 "myparser.c"
}
}
break;
default:
yyassert(0);
break;
}
}
#ifdef YYDEBUG
YYCONST yysymbol_t YYNEARFAR YYBASED_CODE YYDCDECL yysymbol[] = {
{ "$end", 0 },
{ "error", 256 },
{ "ID", 257 },
{ "NUM", 258 },
{ "EQ", 259 },
{ "IF", 260 },
{ "CHAR", 261 },
{ "DOUBLE", 262 },
{ "INT", 263 },
{ "LT", 265 },
{ "PLUS", 266 },
{ "MINUS", 267 },
{ "TIMES", 268 },
{ "OVER", 269 },
{ "LPAREN", 270 },
{ "RPAREN", 271 },
{ "SEMI", 272 },
{ "WHILE", 273 },
{ "LEFTBIG", 274 },
{ "RIGHTBIG", 275 },
{ "MAIN", 276 },
{ "COMMON", 277 },
{ "FOR", 278 },
{ "PRINT", 279 },
{ "EQ_OP", 280 },
{ "LE", 281 },
{ "GT", 282 },
{ "GE", 283 },
{ "NEQ", 284 },
{ "INPUT", 285 },
{ "AND", 286 },
{ "OR", 287 },
{ "NOT", 288 },
{ NULL, 0 }
};
YYCONST char *YYCONST YYNEARFAR YYBASED_CODE YYDCDECL yyrule[] = {
"$accept: lines",
"lines: MAIN LPAREN RPAREN compound_statement",
"type_statement: type_specifier id_list SEMI",
"id_list: id",
"id_list: id_list COMMON id",
"assign_statement: id EQ expr SEMI",
"selection_statement: IF LPAREN expr RPAREN statement",
"repeat_statement: WHILE LPAREN expr RPAREN statement",
"repeat_statement: FOR LPAREN expr RPAREN statement",
"print_statement: PRINT LPAREN expr RPAREN SEMI",
"input_statement: INPUT LPAREN id RPAREN SEMI",
"statement: assign_statement",
"statement: selection_statement",
"statement: repeat_statement",
"statement: type_statement",
"statement: print_statement",
"statement: compound_statement",
"statement: input_statement",
"statement_list: statement",
"statement_list: statement_list statement",
"compound_statement: LEFTBIG RIGHTBIG",
"compound_statement: LEFTBIG statement_list RIGHTBIG",
"expr: uexpr AND uexpr",
"expr: uexpr OR uexpr",
"expr: uexpr",
"uexpr: simple_exp LT simple_exp",
"uexpr: simple_exp EQ_OP simple_exp",
"uexpr: simple_exp GT simple_exp",
"uexpr: simple_exp LE simple_exp",
"uexpr: simple_exp GE simple_exp",
"uexpr: simple_exp NEQ simple_exp",
"uexpr: simple_exp",
"simple_exp: NOT simple_exp",
"simple_exp: simple_exp PLUS term",
"simple_exp: simple_exp MINUS term",
"simple_exp: term",
"term: term TIMES factor",
"term: term OVER factor",
"term: factor",
"factor: LPAREN expr RPAREN",
"factor: id",
"factor: num",
"id: ID",
"num: NUM",
"type_specifier: CHAR",
"type_specifier: INT",
"type_specifier: DOUBLE"
};
#endif
YYCONST yyreduction_t YYNEARFAR YYBASED_CODE YYDCDECL yyreduction[] = {
{ 0, 1, -1 },
{ 1, 4, 0 },
{ 2, 3, 1 },
{ 3, 1, 2 },
{ 3, 3, 3 },
{ 4, 4, 4 },
{ 5, 5, 5 },
{ 6, 5, 6 },
{ 6, 5, 7 },
{ 7, 5, 8 },
{ 8, 5, 9 },
{ 9, 1, 10 },
{ 9, 1, 11 },
{ 9, 1, 12 },
{ 9, 1, 13 },
{ 9, 1, 14 },
{ 9, 1, 15 },
{ 9, 1, 16 },
{ 10, 1, 17 },
{ 10, 2, 18 },
{ 11, 2, -1 },
{ 11, 3, 19 },
{ 12, 3, 20 },
{ 12, 3, 21 },
{ 12, 1, 22 },
{ 13, 3, 23 },
{ 13, 3, 24 },
{ 13, 3, 25 },
{ 13, 3, 26 },
{ 13, 3, 27 },
{ 13, 3, 28 },
{ 13, 1, 29 },
{ 14, 2, 30 },
{ 14, 3, 31 },
{ 14, 3, 32 },
{ 14, 1, 33 },
{ 15, 3, 34 },
{ 15, 3, 35 },
{ 15, 1, 36 },
{ 16, 3, 37 },
{ 16, 1, 38 },
{ 16, 1, 39 },
{ 17, 1, 40 },
{ 18, 1, 41 },
{ 19, 1, 42 },
{ 19, 1, 43 },
{ 19, 1, 44 }
};
int YYNEAR YYDCDECL yytokenaction_size = 67;
YYCONST yytokenaction_t YYNEARFAR YYBASED_CODE YYDCDECL yytokenaction[] = {
{ 71, YYAT_SHIFT, 8 },
{ 71, YYAT_SHIFT, 9 },
{ 71, YYAT_SHIFT, 10 },
{ 71, YYAT_SHIFT, 11 },
{ 69, YYAT_SHIFT, 38 },
{ 44, YYAT_SHIFT, 60 },
{ 44, YYAT_SHIFT, 61 },
{ 44, YYAT_SHIFT, 62 },
{ 87, YYAT_SHIFT, 61 },
{ 87, YYAT_SHIFT, 62 },
{ 33, YYAT_SHIFT, 52 },
{ 86, YYAT_SHIFT, 61 },
{ 86, YYAT_SHIFT, 62 },
{ 71, YYAT_SHIFT, 12 },
{ 71, YYAT_SHIFT, 5 },
{ 33, YYAT_SHIFT, 53 },
{ 69, YYAT_SHIFT, 39 },
{ 73, YYAT_SHIFT, 93 },
{ 71, YYAT_SHIFT, 14 },
{ 71, YYAT_SHIFT, 15 },
{ 44, YYAT_SHIFT, 63 },
{ 44, YYAT_SHIFT, 64 },
{ 44, YYAT_SHIFT, 65 },
{ 44, YYAT_SHIFT, 66 },
{ 44, YYAT_SHIFT, 67 },
{ 71, YYAT_SHIFT, 16 },
{ 85, YYAT_SHIFT, 61 },
{ 85, YYAT_SHIFT, 62 },
{ 84, YYAT_SHIFT, 61 },
{ 84, YYAT_SHIFT, 62 },
{ 83, YYAT_SHIFT, 61 },
{ 83, YYAT_SHIFT, 62 },
{ 82, YYAT_SHIFT, 68 },
{ 82, YYAT_SHIFT, 69 },
{ 81, YYAT_SHIFT, 68 },
{ 81, YYAT_SHIFT, 69 },
{ 80, YYAT_SHIFT, 61 },
{ 80, YYAT_SHIFT, 62 },
{ 56, YYAT_SHIFT, 61 },
{ 56, YYAT_SHIFT, 62 },
{ 45, YYAT_SHIFT, 68 },
{ 45, YYAT_SHIFT, 69 },
{ 43, YYAT_SHIFT, 58 },
{ 43, YYAT_SHIFT, 59 },
{ 72, YYAT_SHIFT, 92 },
{ 67, YYAT_SHIFT, 40 },
{ 55, YYAT_SHIFT, 76 },
{ 54, YYAT_SHIFT, 75 },
{ 53, YYAT_SHIFT, 7 },
{ 51, YYAT_SHIFT, 73 },
{ 50, YYAT_SHIFT, 72 },
{ 49, YYAT_SHIFT, 71 },
{ 48, YYAT_SHIFT, 70 },
{ 42, YYAT_SHIFT, 57 },
{ 27, YYAT_SHIFT, 36 },
{ 20, YYAT_SHIFT, 35 },
{ 16, YYAT_SHIFT, 32 },
{ 15, YYAT_SHIFT, 31 },
{ 14, YYAT_SHIFT, 30 },
{ 12, YYAT_SHIFT, 29 },
{ 8, YYAT_SHIFT, 28 },
{ 5, YYAT_SHIFT, 13 },
{ 4, YYAT_SHIFT, 5 },
{ 3, YYAT_SHIFT, 4 },
{ 2, YYAT_ACCEPT, 0 },
{ 1, YYAT_SHIFT, 3 },
{ 0, YYAT_SHIFT, 1 }
};
YYCONST yystateaction_t YYNEARFAR YYBASED_CODE YYDCDECL yystateaction[] = {
{ -210, 1, YYAT_ERROR, 0 },
{ -205, 1, YYAT_ERROR, 0 },
{ 64, 1, YYAT_ERROR, 0 },
{ -208, 1, YYAT_ERROR, 0 },
{ -212, 1, YYAT_ERROR, 0 },
{ -214, 1, YYAT_DEFAULT, 71 },
{ 0, 0, YYAT_REDUCE, 1 },
{ 0, 0, YYAT_REDUCE, 42 },
{ -210, 1, YYAT_ERROR, 0 },
{ 0, 0, YYAT_REDUCE, 44 },
{ 0, 0, YYAT_REDUCE, 46 },
{ 0, 0, YYAT_REDUCE, 45 },
{ -211, 1, YYAT_ERROR, 0 },
{ 0, 0, YYAT_REDUCE, 20 },
{ -212, 1, YYAT_ERROR, 0 },
{ -213, 1, YYAT_ERROR, 0 },
{ -214, 1, YYAT_ERROR, 0 },
{ 0, 0, YYAT_REDUCE, 16 },
{ 0, 0, YYAT_REDUCE, 14 },
{ 0, 0, YYAT_DEFAULT, 53 },
{ -204, 1, YYAT_ERROR, 0 },
{ 0, 0, YYAT_REDUCE, 11 },
{ 0, 0, YYAT_REDUCE, 12 },
{ 0, 0, YYAT_REDUCE, 18 },
{ 0, 0, YYAT_REDUCE, 13 },
{ 0, 0, YYAT_REDUCE, 15 },
{ 0, 0, YYAT_REDUCE, 17 },
{ -221, 1, YYAT_DEFAULT, 71 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ 0, 0, YYAT_DEFAULT, 53 },
{ -262, 1, YYAT_ERROR, 0 },
{ 0, 0, YYAT_REDUCE, 3 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ 0, 0, YYAT_REDUCE, 21 },
{ 0, 0, YYAT_REDUCE, 19 },
{ 0, 0, YYAT_REDUCE, 43 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ 0, 0, YYAT_REDUCE, 40 },
{ -218, 1, YYAT_ERROR, 0 },
{ -244, 1, YYAT_REDUCE, 24 },
{ -260, 1, YYAT_REDUCE, 31 },
{ -228, 1, YYAT_REDUCE, 35 },
{ 0, 0, YYAT_REDUCE, 38 },
{ 0, 0, YYAT_REDUCE, 41 },
{ -219, 1, YYAT_ERROR, 0 },
{ -220, 1, YYAT_ERROR, 0 },
{ -221, 1, YYAT_ERROR, 0 },
{ -222, 1, YYAT_ERROR, 0 },
{ 0, 0, YYAT_REDUCE, 2 },
{ -209, 1, YYAT_ERROR, 0 },
{ -225, 1, YYAT_ERROR, 0 },
{ -225, 1, YYAT_ERROR, 0 },
{ -228, 1, YYAT_REDUCE, 32 },
{ 0, 0, YYAT_DEFAULT, 71 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ 0, 0, YYAT_DEFAULT, 69 },
{ 0, 0, YYAT_DEFAULT, 69 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ -243, 1, YYAT_DEFAULT, 69 },
{ 0, 0, YYAT_DEFAULT, 69 },
{ -254, 1, YYAT_DEFAULT, 53 },
{ 0, 0, YYAT_DEFAULT, 71 },
{ -260, 1, YYAT_DEFAULT, 53 },
{ -228, 1, YYAT_ERROR, 0 },
{ -255, 1, YYAT_ERROR, 0 },
{ 0, 0, YYAT_REDUCE, 4 },
{ 0, 0, YYAT_REDUCE, 5 },
{ 0, 0, YYAT_REDUCE, 39 },
{ 0, 0, YYAT_REDUCE, 6 },
{ 0, 0, YYAT_REDUCE, 22 },
{ 0, 0, YYAT_REDUCE, 23 },
{ -230, 1, YYAT_REDUCE, 25 },
{ -234, 1, YYAT_REDUCE, 33 },
{ -236, 1, YYAT_REDUCE, 34 },
{ -236, 1, YYAT_REDUCE, 26 },
{ -238, 1, YYAT_REDUCE, 28 },
{ -240, 1, YYAT_REDUCE, 27 },
{ -255, 1, YYAT_REDUCE, 29 },
{ -258, 1, YYAT_REDUCE, 30 },
{ 0, 0, YYAT_REDUCE, 36 },
{ 0, 0, YYAT_REDUCE, 37 },
{ 0, 0, YYAT_REDUCE, 7 },
{ 0, 0, YYAT_REDUCE, 8 },
{ 0, 0, YYAT_REDUCE, 9 },
{ 0, 0, YYAT_REDUCE, 10 }
};
int YYNEAR YYDCDECL yynontermgoto_size = 46;
YYCONST yynontermgoto_t YYNEARFAR YYBASED_CODE YYDCDECL yynontermgoto[] = {
{ 71, 18 },
{ 70, 90 },
{ 71, 21 },
{ 71, 22 },
{ 71, 24 },
{ 71, 25 },
{ 71, 26 },
{ 71, 91 },
{ 19, 33 },
{ 71, 17 },
{ 69, 89 },
{ 69, 41 },
{ 69, 47 },
{ 67, 87 },
{ 67, 45 },
{ 71, 20 },
{ 68, 88 },
{ 71, 19 },
{ 62, 82 },
{ 62, 46 },
{ 59, 79 },
{ 59, 44 },
{ 19, 34 },
{ 39, 55 },
{ 39, 43 },
{ 5, 23 },
{ 5, 27 },
{ 66, 86 },
{ 65, 85 },
{ 64, 84 },
{ 63, 83 },
{ 61, 81 },
{ 60, 80 },
{ 58, 78 },
{ 57, 77 },
{ 53, 74 },
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -