⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parse.cpp

📁 完成一个简化的C语言编译程序
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	"var: id",
	"var: id LBRACKET expression RBRACKET",
	"expression: or_expression",
	"or_expression: or_expression OR and_expression",
	"or_expression: and_expression",
	"and_expression: and_expression AND simple_expression",
	"and_expression: simple_expression",
	"simple_expression: additive_expression GE additive_expression",
	"simple_expression: additive_expression GT additive_expression",
	"simple_expression: additive_expression LE additive_expression",
	"simple_expression: additive_expression LT additive_expression",
	"simple_expression: additive_expression EQ additive_expression",
	"simple_expression: additive_expression NE additive_expression",
	"simple_expression: additive_expression",
	"additive_expression: additive_expression PLUS term",
	"additive_expression: additive_expression MINUS term",
	"additive_expression: term",
	"term: term TIMES factor",
	"term: term OVER factor",
	"term: factor",
	"factor: LPAREN expression RPAREN",
	"factor: var",
	"factor: call",
	"factor: NUM",
	"factor: FLOATNUM",
	"factor: CONSTCHAR",
	"factor: NOT factor",
	"call: id LPAREN args RPAREN",
	"call: id LPAREN RPAREN",
	"args: arg_list",
	"arg_list: expression COMMA arg_list",
	"arg_list: expression"
};
#endif

YYCONST yyreduction_t YYNEARFAR YYBASED_CODE YYDCDECL yyreduction[] = {
	{ 0, 1, -1 },
	{ 1, 1, 0 },
	{ 2, 2, 1 },
	{ 2, 1, 2 },
	{ 3, 1, 3 },
	{ 3, 1, 4 },
	{ 4, 3, 5 },
	{ 5, 0, 6 },
	{ 4, 7, 7 },
	{ 6, 1, 8 },
	{ 6, 1, 9 },
	{ 6, 1, 10 },
	{ 6, 1, 11 },
	{ 7, 1, 12 },
	{ 8, 6, 13 },
	{ 8, 6, 14 },
	{ 8, 5, 15 },
	{ 9, 1, 16 },
	{ 10, 3, 17 },
	{ 10, 1, 18 },
	{ 11, 2, 19 },
	{ 11, 4, 20 },
	{ 12, 3, 21 },
	{ 12, 4, 22 },
	{ 12, 2, 23 },
	{ 12, 3, 24 },
	{ 13, 2, 25 },
	{ 13, 1, 26 },
	{ 14, 2, 27 },
	{ 14, 1, 28 },
	{ 15, 1, 29 },
	{ 15, 1, 30 },
	{ 15, 1, 31 },
	{ 15, 1, 32 },
	{ 15, 1, 33 },
	{ 15, 1, 34 },
	{ 15, 1, 35 },
	{ 16, 2, 36 },
	{ 16, 1, -1 },
	{ 17, 7, 37 },
	{ 17, 5, 38 },
	{ 18, 5, 39 },
	{ 19, 2, 40 },
	{ 19, 3, 41 },
	{ 20, 4, 42 },
	{ 21, 2, 43 },
	{ 22, 1, 44 },
	{ 22, 4, 45 },
	{ 23, 1, 46 },
	{ 24, 3, 47 },
	{ 24, 1, 48 },
	{ 25, 3, 49 },
	{ 25, 1, 50 },
	{ 26, 3, 51 },
	{ 26, 3, 52 },
	{ 26, 3, 53 },
	{ 26, 3, 54 },
	{ 26, 3, 55 },
	{ 26, 3, 56 },
	{ 26, 1, 57 },
	{ 27, 3, 58 },
	{ 27, 3, 59 },
	{ 27, 1, 60 },
	{ 28, 3, 61 },
	{ 28, 3, 62 },
	{ 28, 1, 63 },
	{ 29, 3, 64 },
	{ 29, 1, 65 },
	{ 29, 1, 66 },
	{ 29, 1, 67 },
	{ 29, 1, 68 },
	{ 29, 1, 69 },
	{ 29, 2, 70 },
	{ 30, 4, 71 },
	{ 30, 3, 72 },
	{ 31, 1, 73 },
	{ 32, 3, 74 },
	{ 32, 1, 75 }
};

YYCONST yytokenaction_t YYNEARFAR YYBASED_CODE YYDCDECL yytokenaction[] = {
	{ 62, YYAT_SHIFT, 90 },
	{ 62, YYAT_SHIFT, 91 },
	{ 62, YYAT_SHIFT, 92 },
	{ 62, YYAT_SHIFT, 93 },
	{ 62, YYAT_SHIFT, 94 },
	{ 62, YYAT_SHIFT, 95 },
	{ 40, YYAT_SHIFT, 33 },
	{ 40, YYAT_SHIFT, 34 },
	{ 40, YYAT_SHIFT, 35 },
	{ 62, YYAT_SHIFT, 96 },
	{ 62, YYAT_SHIFT, 97 },
	{ 48, YYAT_SHIFT, 1 },
	{ 48, YYAT_SHIFT, 2 },
	{ 48, YYAT_SHIFT, 3 },
	{ 48, YYAT_SHIFT, 4 },
	{ 15, YYAT_SHIFT, 18 },
	{ 124, YYAT_SHIFT, 36 },
	{ 40, YYAT_SHIFT, 40 },
	{ 124, YYAT_SHIFT, 37 },
	{ 124, YYAT_SHIFT, 38 },
	{ 124, YYAT_SHIFT, 39 },
	{ 0, YYAT_SHIFT, 4 },
	{ 121, YYAT_SHIFT, 98 },
	{ 121, YYAT_SHIFT, 99 },
	{ 78, YYAT_SHIFT, 14 },
	{ 124, YYAT_SHIFT, 26 },
	{ 130, YYAT_SHIFT, 133 },
	{ 124, YYAT_SHIFT, 42 },
	{ 15, YYAT_SHIFT, 19 },
	{ 48, YYAT_SHIFT, 81 },
	{ 78, YYAT_SHIFT, 16 },
	{ 46, YYAT_SHIFT, 79 },
	{ 40, YYAT_SHIFT, 43 },
	{ 46, YYAT_SHIFT, 80 },
	{ 0, YYAT_ERROR, 0 },
	{ 30, YYAT_SHIFT, 1 },
	{ 30, YYAT_SHIFT, 2 },
	{ 30, YYAT_SHIFT, 3 },
	{ 30, YYAT_SHIFT, 4 },
	{ 6, YYAT_SHIFT, 1 },
	{ 6, YYAT_SHIFT, 2 },
	{ 6, YYAT_SHIFT, 3 },
	{ 6, YYAT_SHIFT, 4 },
	{ 120, YYAT_SHIFT, 98 },
	{ 120, YYAT_SHIFT, 99 },
	{ 119, YYAT_SHIFT, 96 },
	{ 119, YYAT_SHIFT, 97 },
	{ 118, YYAT_SHIFT, 96 },
	{ 118, YYAT_SHIFT, 97 },
	{ 117, YYAT_SHIFT, 96 },
	{ 117, YYAT_SHIFT, 97 },
	{ 116, YYAT_SHIFT, 96 },
	{ 116, YYAT_SHIFT, 97 },
	{ 115, YYAT_SHIFT, 96 },
	{ 115, YYAT_SHIFT, 97 },
	{ 114, YYAT_SHIFT, 96 },
	{ 114, YYAT_SHIFT, 97 },
	{ 63, YYAT_SHIFT, 98 },
	{ 63, YYAT_SHIFT, 99 },
	{ 112, YYAT_SHIFT, 89 },
	{ 111, YYAT_SHIFT, 129 },
	{ 108, YYAT_SHIFT, 128 },
	{ 107, YYAT_SHIFT, 127 },
	{ 105, YYAT_SHIFT, 126 },
	{ 102, YYAT_SHIFT, 125 },
	{ 101, YYAT_SHIFT, 124 },
	{ 83, YYAT_SHIFT, 110 },
	{ 80, YYAT_SHIFT, 106 },
	{ 76, YYAT_SHIFT, 104 },
	{ 74, YYAT_SHIFT, 103 },
	{ 66, YYAT_SHIFT, 100 },
	{ 60, YYAT_SHIFT, 89 },
	{ 59, YYAT_SHIFT, 88 },
	{ 58, YYAT_SHIFT, 87 },
	{ 57, YYAT_SHIFT, 86 },
	{ 49, YYAT_SHIFT, 84 },
	{ 39, YYAT_SHIFT, 73 },
	{ 38, YYAT_SHIFT, 72 },
	{ 37, YYAT_SHIFT, 71 },
	{ 36, YYAT_SHIFT, 70 },
	{ 31, YYAT_SHIFT, 69 },
	{ 28, YYAT_SHIFT, 66 },
	{ 26, YYAT_SHIFT, 41 },
	{ 24, YYAT_SHIFT, 31 },
	{ 22, YYAT_SHIFT, 30 },
	{ 21, YYAT_SHIFT, 29 },
	{ 19, YYAT_SHIFT, 26 },
	{ 18, YYAT_SHIFT, 25 },
	{ 14, YYAT_SHIFT, 17 },
	{ 13, YYAT_SHIFT, 15 },
	{ 10, YYAT_SHIFT, 12 },
	{ 5, YYAT_ACCEPT, 0 }
};
int YYNEAR YYDCDECL yytokenaction_size = 92;

YYCONST yystateaction_t YYNEARFAR YYBASED_CODE YYDCDECL yystateaction[] = {
	{ -239, 1, YYAT_DEFAULT, 15 },
	{ 0, 0, YYAT_REDUCE, 9 },
	{ 0, 0, YYAT_REDUCE, 10 },
	{ 0, 0, YYAT_REDUCE, 11 },
	{ 0, 0, YYAT_REDUCE, 12 },
	{ 91, 1, YYAT_ERROR, 0 },
	{ -218, 1, YYAT_REDUCE, 1 },
	{ 0, 0, YYAT_REDUCE, 3 },
	{ 0, 0, YYAT_REDUCE, 4 },
	{ 0, 0, YYAT_REDUCE, 5 },
	{ -174, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_REDUCE, 2 },
	{ 0, 0, YYAT_REDUCE, 13 },
	{ -183, 1, YYAT_DEFAULT, 78 },
	{ -173, 1, YYAT_ERROR, 0 },
	{ -245, 1, YYAT_DEFAULT, 30 },
	{ 0, 0, YYAT_REDUCE, 6 },
	{ 0, 0, YYAT_REDUCE, 7 },
	{ -186, 1, YYAT_REDUCE, 12 },
	{ -188, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_DEFAULT, 10 },
	{ -188, 1, YYAT_ERROR, 0 },
	{ -193, 1, YYAT_REDUCE, 17 },
	{ 0, 0, YYAT_REDUCE, 19 },
	{ -188, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_DEFAULT, 19 },
	{ -193, 1, YYAT_DEFAULT, 48 },
	{ 0, 0, YYAT_REDUCE, 16 },
	{ -189, 1, YYAT_REDUCE, 20 },
	{ 0, 0, YYAT_DEFAULT, 19 },
	{ -222, 1, YYAT_ERROR, 0 },
	{ -196, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_REDUCE, 15 },
	{ 0, 0, YYAT_REDUCE, 69 },
	{ 0, 0, YYAT_REDUCE, 70 },
	{ 0, 0, YYAT_REDUCE, 71 },
	{ -193, 1, YYAT_ERROR, 0 },
	{ -194, 1, YYAT_ERROR, 0 },
	{ -199, 1, YYAT_ERROR, 0 },
	{ -200, 1, YYAT_DEFAULT, 40 },
	{ -255, 1, YYAT_DEFAULT, 10 },
	{ 0, 0, YYAT_REDUCE, 24 },
	{ 0, 0, YYAT_REDUCE, 38 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_REDUCE, 27 },
	{ 0, 0, YYAT_DEFAULT, 10 },
	{ -239, 1, YYAT_REDUCE, 46 },
	{ 0, 0, YYAT_REDUCE, 31 },
	{ -246, 1, YYAT_DEFAULT, 49 },
	{ -200, 1, YYAT_DEFAULT, 83 },
	{ 0, 0, YYAT_REDUCE, 29 },
	{ 0, 0, YYAT_REDUCE, 30 },
	{ 0, 0, YYAT_REDUCE, 32 },
	{ 0, 0, YYAT_REDUCE, 33 },
	{ 0, 0, YYAT_REDUCE, 34 },
	{ 0, 0, YYAT_REDUCE, 35 },
	{ 0, 0, YYAT_REDUCE, 36 },
	{ -202, 1, YYAT_ERROR, 0 },
	{ -205, 1, YYAT_REDUCE, 67 },
	{ -214, 1, YYAT_REDUCE, 48 },
	{ -214, 1, YYAT_REDUCE, 50 },
	{ 0, 0, YYAT_REDUCE, 52 },
	{ -279, 1, YYAT_REDUCE, 59 },
	{ -233, 1, YYAT_REDUCE, 62 },
	{ 0, 0, YYAT_REDUCE, 65 },
	{ 0, 0, YYAT_REDUCE, 68 },
	{ -201, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_REDUCE, 14 },
	{ 0, 0, YYAT_REDUCE, 18 },
	{ 0, 0, YYAT_REDUCE, 8 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_REDUCE, 45 },
	{ 0, 0, YYAT_REDUCE, 42 },
	{ -207, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_REDUCE, 67 },
	{ -205, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_REDUCE, 72 },
	{ -246, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ -206, 1, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_REDUCE, 22 },
	{ 0, 0, YYAT_REDUCE, 26 },
	{ -209, 1, YYAT_DEFAULT, 124 },
	{ 0, 0, YYAT_REDUCE, 25 },
	{ 0, 0, YYAT_REDUCE, 28 },
	{ 0, 0, YYAT_REDUCE, 37 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_REDUCE, 21 },
	{ -208, 1, YYAT_ERROR, 0 },
	{ -209, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_REDUCE, 43 },
	{ 0, 0, YYAT_REDUCE, 66 },
	{ -208, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_REDUCE, 74 },
	{ -215, 1, YYAT_REDUCE, 77 },
	{ -212, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_REDUCE, 75 },
	{ 0, 0, YYAT_REDUCE, 23 },
	{ -216, 1, YYAT_ERROR, 0 },
	{ -226, 1, YYAT_REDUCE, 49 },
	{ 0, 0, YYAT_REDUCE, 51 },
	{ -233, 1, YYAT_REDUCE, 57 },
	{ -235, 1, YYAT_REDUCE, 56 },
	{ -237, 1, YYAT_REDUCE, 55 },
	{ -239, 1, YYAT_REDUCE, 54 },
	{ -241, 1, YYAT_REDUCE, 53 },
	{ -243, 1, YYAT_REDUCE, 58 },
	{ -247, 1, YYAT_REDUCE, 60 },
	{ -268, 1, YYAT_REDUCE, 61 },
	{ 0, 0, YYAT_REDUCE, 63 },
	{ 0, 0, YYAT_REDUCE, 64 },
	{ -249, 1, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_DEFAULT, 124 },
	{ 0, 0, YYAT_REDUCE, 47 },
	{ 0, 0, YYAT_DEFAULT, 40 },
	{ 0, 0, YYAT_REDUCE, 73 },
	{ 0, 0, YYAT_REDUCE, 44 },
	{ -240, 1, YYAT_REDUCE, 40 },
	{ 0, 0, YYAT_REDUCE, 41 },
	{ 0, 0, YYAT_REDUCE, 76 },
	{ 0, 0, YYAT_DEFAULT, 124 },
	{ 0, 0, YYAT_REDUCE, 39 }
};

YYCONST yystategoto_t YYNEARFAR YYBASED_CODE YYDCDECL yystategoto[] = {
	{ 22, 58 },
	{ 23, 74 },
	{ 23, 76 },
	{ 15, 85 },
	{ 29, 77 },
	{ 6, 20 },
	{ 4, 44 },
	{ 32, 132 },
	{ 7, 13 },
	{ 27, 114 },
	{ 27, 115 },
	{ 27, 116 },
	{ 27, 117 },
	{ 27, 118 },
	{ 27, 119 },
	{ 12, 27 },
	{ 6, 45 },
	{ 26, 113 },
	{ 7, 28 },
	{ 25, 112 },
	{ 6, 20 },
	{ 12, 32 },
	{ 22, 58 },
	{ 22, 58 },
	{ 14, 83 },
	{ 12, 67 },
	{ 28, 120 },
	{ 28, 121 },
	{ 4, 82 },
	{ 11, 68 },
	{ 3, 11 },
	{ -1, -1 },
	{ 23, 101 },
	{ 23, 102 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ 15, 85 },
	{ 6, 45 },
	{ -1, -1 },
	{ -1, -1 },
	{ 23, 105 },
	{ 23, 107 },
	{ 7, 78 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ 23, 111 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ 22, 58 },
	{ -1, -1 },
	{ 29, 122 },
	{ 29, 123 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ 15, 130 },
	{ 15, 131 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ 15, 134 },
	{ -1, -1 },
	{ 23, 107 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ 22, 58 },
	{ 22, 58 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ -1, -1 },
	{ 22, 58 }
};
int YYNEAR YYDCDECL yystategoto_size = 108;

YYCONST yynontermgoto_t YYNEARFAR YYBASED_CODE YYDCDECL yynontermgoto[] = {
	{ 0, -1 },
	{ 0, 5 },
	{ 0, 6 },
	{ 24, 7 },
	{ -20, 8 },
	{ 0, 24 },
	{ -10, 10 },
	{ -2, 46 },
	{ 0, 9 },
	{ 0, 21 },
	{ 0, 22 },
	{ -1, 23 },
	{ -4, 47 },
	{ 0, 48 },
	{ -24, 49 },
	{ -46, 50 },
	{ 0, 51 },
	{ 0, 52 },
	{ 0, 53 },
	{ 0, 54 },
	{ 0, 55 },
	{ 0, 56 },
	{ -26, 75 },
	{ -38, 57 },
	{ 0, 59 },
	{ -69, 60 },
	{ -72, 61 },
	{ -81, 62 },
	{ -70, 63 },
	{ -39, 64 },
	{ 0, 65 },
	{ 0, 108 },
	{ -120, 109 }
};

YYCONST yydestructor_t YYNEARFAR *YYNEAR YYDCDECL yydestructorptr = NULL;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -