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

📄 y_tab.c

📁 6个不同的词法语法分析程序源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
#line 164 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(OpK);
                   yyval->child[0] = yyattribute(1 - 3);
                   yyval->child[1] = yyattribute(3 - 3);
                   yyval->attr.op = AND;
                  
#line 470 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 23:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 170 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(OpK);
                   yyval->child[0] = yyattribute(1 - 3);
                   yyval->child[1] = yyattribute(3 - 3);
                   yyval->attr.op = OR;
                  
#line 487 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 24:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 175 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = yyattribute(1 - 1);
#line 500 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 25:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 178 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(OpK);
                   yyval->child[0] = yyattribute(1 - 3);
                   yyval->child[1] = yyattribute(3 - 3);
                   yyval->attr.op = LT;
                 
#line 517 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 26:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 184 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(OpK);
                   yyval->child[0] = yyattribute(1 - 3);
                   yyval->child[1] = yyattribute(3 - 3);
                   yyval->attr.op = MT;
                 
#line 534 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 27:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 190 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(OpK);
                   yyval->child[0] = yyattribute(1 - 3);
                   yyval->child[1] = yyattribute(3 - 3);
                   yyval->attr.op = LE;
                 
#line 551 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 28:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 196 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(OpK);
                   yyval->child[0] = yyattribute(1 - 3);
                   yyval->child[1] = yyattribute(3 - 3);
                   yyval->attr.op = ME;
                 
#line 568 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 29:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 202 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(OpK);
                   yyval->child[0] = yyattribute(1 - 3);
                   yyval->child[1] = yyattribute(3 - 3);
                   yyval->attr.op = EQ;
                 
#line 585 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 30:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 208 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(OpK);
                   yyval->child[0] = yyattribute(1 - 3);
                   yyval->child[1] = yyattribute(3 - 3);
                   yyval->attr.op = NE;
                 
#line 602 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 31:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 213 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = yyattribute(1 - 1); 
#line 615 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 32:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 216 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(OpK);
                   yyval->child[0] = yyattribute(1 - 3);
                   yyval->child[1] = yyattribute(3 - 3);
                   yyval->attr.op = PLUS;
                 
#line 632 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 33:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 222 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(OpK);
                   yyval->child[0] = yyattribute(1 - 3);
                   yyval->child[1] = yyattribute(3 - 3);
                   yyval->attr.op = MINUS;
                 
#line 649 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 34:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 227 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = yyattribute(1 - 1); 
#line 662 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 35:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 230 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(OpK);
                   yyval->child[0] = yyattribute(1 - 3);
                   yyval->child[1] = yyattribute(3 - 3);
                   yyval->attr.op = TIMES;
                 
#line 679 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 36:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 236 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(OpK);
                   yyval->child[0] = yyattribute(1 - 3);
                   yyval->child[1] = yyattribute(3 - 3);
                   yyval->attr.op = OVER;
                 
#line 696 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 37:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 241 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = yyattribute(1 - 1); 
#line 709 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 38:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 244 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = yyattribute(2 - 3); 
#line 722 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 39:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 246 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(IK);
                   yyval->attr.val.i = atoi(lookAhead);
                   yyval->type = Integer;
                 
#line 738 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 40:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 251 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(FK);
                   yyval->attr.val.f = atof(lookAhead);
                   yyval->type = Float;
                 
#line 754 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 41:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 256 "F:\\\261\340\322\353\\CCompiler\\parser.y"

                   yyval = newExpNode(CK);
                   yyval->attr.val.c = lookAhead[1];
                   yyval->type = Char;
                 
#line 771 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 42:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 261 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = yyattribute(1 - 1);
#line 784 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 43:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[3];
			yyinitdebug(yya, 3);
#endif
			{
#line 263 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(OpK);
                   yyval->child[0] = yyattribute(2 - 2);
                   yyval->attr.op = NOT;
                  
#line 800 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 44:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 267 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = NULL; 
#line 813 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 45:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 269 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 yyval = newExpNode(IdK);
                   yyval->attr.name =
                         copyString(tokenString);
                   yyval->lineno = lineno;
                   yyval->attr.isDecl = FALSE;
                 
#line 831 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 46:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 275 "F:\\\261\340\322\353\\CCompiler\\parser.y"
 savedName=
                         copyString(tokenString);
                   savedLineNo = lineno;
                 
#line 847 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	case 47:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[6];
			yyinitdebug(yya, 6);
#endif
			{
#line 280 "F:\\\261\340\322\353\\CCompiler\\parser.y"
   yyval = newExpNode(ArrK);
                   yyval->attr.name = savedName;
                   yyval->child[0] = yyattribute(4 - 5);                   
                   yyval->lineno = savedLineNo;
                   yyval->attr.isDecl = FALSE;
                 
#line 865 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
			}
		}
		break;
	default:
		yyassert(0);
		break;
	}
}
#line 288 "F:\\\261\340\322\353\\CCompiler\\parser.y"

void yyerror(char * message)
{ fprintf(listing,"Syntax error at line %d: %s\n",lineno,message);
  fprintf(listing,"Current token: ");
  printToken(yychar,tokenString);
  Error = TRUE;
//  return 0;
}

/* yylex calls getToken to make Yacc/Bison output
 * compatible with ealier versions of the TINY scanner
 */

#ifdef YYPROTOTYPE
int YYCDECL yygettoken(void)
#else
int YYCDECL yygettoken()
#endif
{
	return yylex();
}

static int yylex(void)
{ return getToken(); }

TreeNode * parse(void)
{ yyparse();
  return savedTree;
}


#line 906 "F:\\\261\340\322\353\\CCompiler\\y_tab.c"
#ifdef YYDEBUG
YYCONST yysymbol_t YYNEARFAR YYBASED_CODE YYDCDECL yysymbol[] = {
	{ "$end", 0 },
	{ "error", 256 },
	{ "IF", 257 },
	{ "ELSE", 258 },
	{ "WHILE", 259 },
	{ "MAIN", 261 },
	{ "BREAK", 265 },
	{ "RINT", 266 },
	{ "RFLOAT", 267 },
	{ "RCHAR", 268 },
	{ "ID", 269 },
	{ "FLOAT", 270 },
	{ "INT", 271 },
	{ "CHAR", 272 },
	{ "ASSIGN", 273 },
	{ "EQ", 274 },
	{ "NE", 275 },

⌨️ 快捷键说明

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