亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? scpascal.cpp

?? pascal編譯器
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
						head=head->next;
					}
				head->nodes->id_type=temp_element1->type_num;
				head->nodes->id_type_type=temp_element1->type_type;
				head->nodes->function_type=0;
				type_pop();
				break;

			case 25:
				temp_element1=type_pop();
				
				para_head=new struct para_list;
				para_head->nodes=head;
				para_head->next=NULL;

				while (!(head->next==NULL))
					{
						head->nodes->id_type=temp_element1->type_num;
						head->nodes->id_type_type=temp_element1->type_type;
						head->nodes->function_type=0;
						head=head->next;
					}
				head->nodes->id_type=temp_element1->type_num;
				head->nodes->id_type_type=temp_element1->type_type;
				head->nodes->function_type=0;
						
				type_pop();
				break;	
////////////////////////////////////////////////////////////////////////////////////////////////			
			case 31:
				temp_element1=type_pop();
				temp_element2=type_pop();
				if ((temp_element1->type_num==1)&&(temp_element2->type_num==2))
				{
					temp_element2->type_nodes->enter->id_type=2;
				}else if  (temp_element1->type_num!=temp_element2->type_num)
				{
					printf("The type of expression has fault in line %d\n",temp_element2->type_nodes->lnum);
				}
				break;

			case 34:
				temp_element1=type_pop();
				if (temp_element1->type_num!=3)
				{
					printf("The type of expression has fault in line %d\n",temp_element1->type_nodes->lnum);
				}
				break;

			case 35:
				temp_element1=type_pop();
				if (temp_element1->type_num!=3)
				{
					printf("The type of expression has fault in line %d\n",temp_element1->type_nodes->lnum);
				}
				break;

			case 36:
				type_pop();
				break;

			case 37:
				type_pop();
				break;
///////////////////////////////////////////////////////////////////////////////////////
			case 39:
				temp_element1=type_pop();
				temp_element2=type_pop();	
				if (temp_element1->type_num!=1)
				{
					printf("The type of expression has fault in line %d\n",temp_element2->type_nodes->lnum);
				}
				type_push(temp_element2);
				break;

			case 40:
				type_pop();
				break;

			case 41:
				type_pop();				
				temp_element1=type_pop();
				if (temp_element1->type_nodes->enter->function_para!=expr_list)
				{
					printf("The type of expression has fault in line %d\n",temp_element1->type_nodes->lnum);
				}
				break;

			case 42:
				temp_element1=type_pop();
				expr_num++;
				j=temp_element1->type_num;
				for (i=0;i<expr_num;i++)
				{
					j=j*10;
				}
				expr_list=expr_list+j;

				break;

			case 43:
				expr_num=0;
				temp_element1=type_pop();
				expr_list=temp_element1->type_num;				
				type_push(temp_element1);
				break;

			case 44:
				temp_element1=type_pop();
				temp_element2=type_pop();
				if	(((temp_element1->type_num==1) && (temp_element2->type_num==2))
					|| ((temp_element1->type_num==2) && (temp_element2->type_num==1))
					|| (temp_element1->type_num==temp_element2->type_num))
					{
						temp_element1->type_num=3;
						temp_element1->type_type=0;
						type_push(temp_element1);
					}
				else {
						if (temp_element2->type_nodes->enter!=NULL)
						{
							printf("The type of expression has fault in line %d\n",temp_element2->type_nodes->lnum);
						}else if (temp_element2->type_nodes->enter!=NULL)
						{
							printf("The type of expression has fault in line %d\n",temp_element1->type_nodes->lnum);
						}
						temp_element1->type_num=3;
						temp_element1->type_type=0;
						type_push(temp_element1);
					}
				break;

			case 48:
				temp_element1=type_pop();
				temp_element2=type_pop();
				if	((temp_element1->type_num==1) && (temp_element2->type_num==2))
					{
						type_push(temp_element2);
					}
				else if	((temp_element1->type_num==2) && (temp_element2->type_num==1))
					{
						type_push(temp_element1);
					}
				else if	((temp_element1->type_num==1) && (temp_element2->type_num==1))
					{
						type_push(temp_element1);
					}
				else if	((temp_element1->type_num==2) && (temp_element2->type_num==2))
					{
						type_push(temp_element1);
					}
				else {
						if (temp_element2->type_nodes->enter!=NULL)
						{
							printf("The type of expression has fault in line %d\n",temp_element2->type_nodes->lnum);
						}else if (temp_element2->type_nodes->enter!=NULL)
						{
							printf("The type of expression has fault in line %d\n",temp_element1->type_nodes->lnum);
						}
						temp_element1->type_num=1;
						type_push(temp_element1);
					}
				break;

			case 49:
				temp_element1=type_pop();
				temp_element2=type_pop();
				if	((temp_element1->type_num==1) && (temp_element2->type_num==2))
					{
						type_push(temp_element2);
					}
				else if	((temp_element1->type_num==2) && (temp_element2->type_num==1))
					{
						type_push(temp_element1);
					}
				else if	((temp_element1->type_num==1) && (temp_element2->type_num==1))
					{
						type_push(temp_element1);
					}
				else if	((temp_element1->type_num==2) && (temp_element2->type_num==2))
					{
						type_push(temp_element1);
					}
				else {
						if (temp_element2->type_nodes->enter!=NULL)
						{
							printf("The type of expression has fault in line %d\n",temp_element2->type_nodes->lnum);
						}else if (temp_element2->type_nodes->enter!=NULL)
						{
							printf("The type of expression has fault in line %d\n",temp_element1->type_nodes->lnum);
						}
						temp_element1->type_num=1;
						type_push(temp_element1);
					}
				break;

			case 52:
				temp_element1=type_pop();
				temp_element2=type_pop();
				
				if	(temp_element1->type_num!=1)
				{
					printf("The type of expression has fault in line %d\n",temp_element2->type_nodes->lnum);
				}

				type_push(temp_element2);
				break;
		}
	}
}








///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
/////weilei////////////////////////////////////////////////////////////////////////////////////////////////


void pusherrorelement(int);			//壓入元素錯誤棧
int poperrorelement(int);			//錯誤棧彈出
struct label_stream* errorRecover(struct label_stream *);			//錯誤恢復函數
void shifthandle(L_ListNodePtr x);				//移進時將val_stack進棧
void translate(int);							//目標代碼生成函數

int parse(){									//語法分析函數
	int parse_a,parse_A,parse_S;
	struct actionItem aItem;
	struct gotoItem gItem;
	union action_types Action_Type;
	parseState = ok;
	push(0);
	parse_a = getLabel();
	while(1){
		parse_S = stateStack[top(1)];
		aItem = actionTable[parse_S][parse_a];
		
		printf("%d %d\n",parse_S,parse_a);
		if (aItem.typ == shift){
			pusherrorelement(parse_a);
			push(aItem.ai.state);
			if (parseState == ok){
				shifthandle(currentPtr);
				Action_Type.shift_type=currentPtr;
				type_check(0,Action_Type);
			}
			parse_a = getLabel();
			printf("shift\n");
		}else if (aItem.typ == reduce){
			pop(aItem.ai.ri.length);
			poperrorelement(aItem.ai.ri.length);
			parse_S = stateStack[top(1)];
			parse_A = aItem.ai.ri.leftsym;
			gItem = gotoTable[parse_S][parse_A];
			if (gItem.typ == ok){
				pusherrorelement(parse_A);
				push(gItem.gi.state);
			}else{
				(*gItem.gi.p)();
				break;
			}
			if (parseState == ok){
				translate(aItem.ai.ri.formula);
				Action_Type.production_num=aItem.ai.ri.formula;
				type_check(1,Action_Type);
			}
			printf("reduce by %d\n",aItem.ai.ri.formula);
		}else if (aItem.typ == acc){
			printf("acc\n");
			return 1;
		}else if (aItem.typ == error){
			parseState = error;
			currentPtr = errorRecover(currentPtr);
			parse_S = stateStack[top(1)];
			parse_a = getLabel();
		}
	}
	return 0;
}







//------------------------
void InitTranslate(){
//---------------------------------------------------------------------------------------------------/
//初始化
//新建并打開C語言的文件
	char name[]="c.c";          //name為文件名
    fp=fopen(name,"w");         //主程序中打開文件
//-------------------------------------------------------------------------------------------------/
}
void closeTranslate(){
//關閉C語言的文件
	fclose(fp);                 //主程序中關閉文件
//------------------------------------------------------------------------------------------------

}


//錯誤處理
int * errorstack;
int errortop;
void InitErrorstack(){				//初始化錯誤棧
	errorstack = new int[ERRORSTACKNUMBER];
	errortop = -1;
}

void pusherrorelement(int pushx){
	switch(NowState){

	case 0:if (pushx == rw_program) NowState=1;
			break;
		case 1:if((pushx == rw_var)||(pushx == declarations)) NowState=2;
			break;
		case 2:if((pushx == rw_function)||(pushx == rw_procedure)) NowState=3;
					else if(pushx == rw_begin) NowState=8;
			break;
		case 3:if((pushx == rw_var)||(pushx == declarations)) NowState=4;
			break;
		case 4:if(pushx == rw_begin) NowState=5;
			break;
		case 5:if(pushx == rw_end) NowState=6;
			break;
		case 6:if(pushx == sem) NowState=2;
					else if (pushx == rw_begin)NowState=5;
			break;
		case 7:if(pushx == subproc_declarations)NowState=2;
			break;
		case 8:if(pushx == rw_end)NowState=9;
			break;
		case 9:if(pushx == node)NowState=10;
					else if (pushx == rw_begin)NowState=8;
			break;
		case 10:
			break;
		default:cout<<"In ERROR STATE!!"<<endl;
			break;
	}
	errorstack[++errortop] = pushx;
}

int poperrorelement(int popnum){
	if (errortop-popnum>-1)
		errortop=errortop-popnum;
	return errorstack[errortop];
}

int topoferror(int topnum){			//查看從棧頂起第topnum個元素
	return errorstack[errortop-topnum];
}



struct label_stream * errorRecover(struct label_stream * errorptr){			//錯誤恢復函數
cout<<errorptr->lnum<<" Line have a Error"<<endl;
	switch (NowState){
		case 0:{//開始狀態,沒接受到programe
				cout<<": expect 'program' there!"<<endl;
				
				struct label_stream *newerrorptr = new struct label_stream;
				struct label_stream *nullptr = new struct label_stream;
				nullptr->next=newerrorptr;
				newerrorptr->label_type = rw_program;
				newerrorptr->next = errorptr;
				
				errorptr = nullptr;
							
				return errorptr;
		}
			break;
		case 1:{//主程序申明狀態
				cout<<"main program declaration parameter ERROR!"<<endl;
				switch(topoferror(0)){
					case rpare:{
						if ((topoferror(1) == identifier_list)&&((errorptr->label_type == rw_var)||(errorptr->label_type == rw_begin)||(errorptr->label_type == rw_function)||(errorptr->label_type == rw_procedure))){
							cout<<": expect ';' there!"<<endl;
				
							struct label_stream *newerrorptr = new struct label_stream;
							struct label_stream *nullptr = new struct label_stream;
							nullptr->next=newerrorptr;
							newerrorptr->label_type = sem;
							newerrorptr->next = errorptr;
				
							errorptr = nullptr;
							
							return errorptr;
						}
						break;
					default:
						{
							cout<<"main declaration auto recovery!"<<endl;
							while(topoferror(0) != rw_program){
								pop(1);
								poperrorelement(1);
							}
							while((errorptr->label_type != rw_var)&&(errorptr->label_type != rw_begin)&&(errorptr->label_type != rw_function)&&(errorptr->label_type != rw_procedure)){
								errorptr=errorptr->next;
							}
							
							struct label_stream *newerrorptr1 = new struct label_stream;
							struct label_stream *newerrorptr2 = new struct label_stream;
							struct label_stream *newerrorptr3 = new struct label_stream;
							struct label_stream *newerrorptr4 = new struct label_stream;
							struct label_stream *newerrorptr5 = new struct label_stream;

							struct label_stream *nullptr = new struct label_stream;
							
							newerrorptr1->label_type = id;
							newerrorptr2->label_type = lpare;
							newerrorptr3->label_type = id;
							newerrorptr4->label_type = rpare;
							newerrorptr5->label_type = sem;

							newerrorptr5->next = errorptr;
							newerrorptr4->next = newerrorptr5;
							newerrorptr3->next = newerrorptr4;
							newerrorptr2->next = newerrorptr3;
							newerrorptr1->next = newerrorptr2;
							nullptr->next=newerrorptr1;
							
							errorptr=nullptr;
							
							return errorptr;
						}
						break;
						
					}
				}
				
		}
			break;
		case 2:{//var狀態,即是申明狀態
				cout<<"main declaration error!"<<endl;
				switch (topoferror(0)){//棧頂的符號
					case rw_end:
						{
							cout<<": expect ';' there! "<<endl;
							struct label_stream *newerrorptr = new struct label_stream;
							struct label_stream *nullptr = new struct label_stream;
							nullptr->next=newerrorptr;
							newerrorptr->label_type = sem;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜一区二区| 一区二区三区四区激情| 欧美日韩三级一区二区| 91福利在线观看| 欧美色视频在线| 精品电影一区二区三区| 国产精品一区不卡| 亚洲亚洲精品在线观看| 色综合色狠狠天天综合色| 色综合婷婷久久| 日韩欧美激情一区| 中文字幕中文字幕一区二区 | 国产精品国产自产拍高清av| 久久久综合视频| 91精品国产91热久久久做人人| www精品美女久久久tv| 日韩欧美国产系列| 亚洲综合无码一区二区| 久久成人免费电影| 福利一区二区在线| 亚洲综合激情网| 精品久久久久久久久久久久久久久| 狠狠色伊人亚洲综合成人| 蜜桃视频在线一区| 色爱区综合激月婷婷| 亚洲国产成人在线| 欧美三级视频在线播放| 欧美精品欧美精品系列| 一本一本久久a久久精品综合麻豆| 日韩欧美激情一区| 精品国产一区二区三区四区四| 欧美日韩国产美| 欧美男男青年gay1069videost | 国产精品一区二区在线观看不卡| 日产国产欧美视频一区精品| 色播五月激情综合网| 日韩一区二区高清| 亚洲国产成人精品视频| 亚洲欧美精品午睡沙发| 91伊人久久大香线蕉| 欧美浪妇xxxx高跟鞋交| 一区二区三区美女视频| 精久久久久久久久久久| 狠狠色丁香婷婷综合| 欧美成人精精品一区二区频| 午夜精品久久久久久久99水蜜桃| 色婷婷av一区| 久久久久国产精品厨房| 一区二区视频免费在线观看| 99在线精品免费| 中文字幕一区二区不卡| 麻豆成人久久精品二区三区红| 欧美日韩亚洲不卡| 国产精品不卡在线| 国产a视频精品免费观看| 欧美日韩一区中文字幕| 亚洲国产综合色| 色呦呦国产精品| 亚洲卡通欧美制服中文| 欧美视频中文字幕| 国内精品伊人久久久久影院对白| 91啦中文在线观看| 中文字幕一区二区三中文字幕| 午夜免费久久看| 欧美乱熟臀69xxxxxx| 宅男在线国产精品| 中文字幕一区二区三区蜜月 | 99久久综合国产精品| 国产午夜精品一区二区三区嫩草| 99综合影院在线| 欧美日韩色一区| 国产在线播放一区| 欧美午夜寂寞影院| 国产精品一级片| 91精品国产综合久久福利| 三级久久三级久久| 欧美美女黄视频| 国产福利视频一区二区三区| 亚洲视频综合在线| 欧美色窝79yyyycom| 亚洲色图丝袜美腿| 欧美体内she精高潮| 亚洲国产精品二十页| 欧美不卡激情三级在线观看| 免费欧美高清视频| 亚洲综合视频网| 亚洲欧洲性图库| 91亚洲国产成人精品一区二三| 亚洲欧美一区二区三区国产精品| 另类欧美日韩国产在线| 亚洲自拍与偷拍| 日韩欧美国产麻豆| 国产又黄又大久久| 一本到不卡精品视频在线观看| 国产综合色在线视频区| 免费观看久久久4p| 免费高清成人在线| 亚洲6080在线| 五月天丁香久久| 日日夜夜精品视频免费| 日韩高清一区在线| 日本成人超碰在线观看| 日韩精品一二区| 精品亚洲国产成人av制服丝袜 | 成人动漫一区二区| 成人小视频免费观看| 成人国产免费视频| 91麻豆免费在线观看| 欧美午夜宅男影院| 欧美一区二区三区四区久久 | 国产一区二区三区观看| 国产精品影视在线观看| 成人av网址在线| 色老汉一区二区三区| 91精品国产色综合久久ai换脸| 欧美一区在线视频| 国产精品天天摸av网| 樱桃国产成人精品视频| 美女视频黄 久久| 粉嫩欧美一区二区三区高清影视| 99精品热视频| 欧美成人精品1314www| 中文字幕制服丝袜成人av| 亚洲成人激情社区| 国产中文字幕一区| 欧美性淫爽ww久久久久无| 亚洲精品在线三区| 亚洲激情中文1区| 国产一区二区三区精品欧美日韩一区二区三区| 国产凹凸在线观看一区二区| 欧美一区二视频| 午夜视频在线观看一区| 欧美探花视频资源| 午夜国产精品一区| 日韩欧美成人一区| 经典三级视频一区| 欧美一级爆毛片| 精东粉嫩av免费一区二区三区| 日韩精品一区二| 成人性色生活片| 亚洲精品欧美综合四区| 欧美日韩在线直播| 免费成人在线观看视频| 久久蜜桃av一区二区天堂| 国产成a人无v码亚洲福利| 中文字幕一区二区三区四区不卡| 91浏览器在线视频| 日本不卡一区二区| 国产欧美在线观看一区| 日本道色综合久久| 蜜桃视频在线观看一区| 国产精品视频看| 欧美精选一区二区| 粉嫩av一区二区三区粉嫩| 亚洲一本大道在线| 亚洲小说春色综合另类电影| 理论电影国产精品| 日韩午夜三级在线| 美腿丝袜亚洲一区| 国产日韩精品视频一区| 国产v综合v亚洲欧| 国产精品久久精品日日| av成人老司机| 午夜一区二区三区视频| 日韩你懂的在线观看| 国产91精品久久久久久久网曝门| 国产精品嫩草99a| 色婷婷精品大视频在线蜜桃视频| 天天色天天操综合| 日本一区二区三区国色天香| 91原创在线视频| 三级久久三级久久久| 久久久久久久精| 91捆绑美女网站| 蜜臀99久久精品久久久久久软件 | 久久久亚洲高清| 91久久线看在观草草青青 | 成人免费观看男女羞羞视频| 国产精品视频在线看| 欧美日韩激情一区二区三区| 国产一区二区看久久| 亚洲日本乱码在线观看| 欧美日韩免费观看一区二区三区| 免费av网站大全久久| 国产精品麻豆久久久| 色先锋资源久久综合| 久久国产精品99久久久久久老狼 | 欧美性videosxxxxx| 亚洲自拍偷拍综合| 久久婷婷一区二区三区| av激情综合网| 中文字幕亚洲视频| 99re在线精品| 亚洲高清视频在线| 日韩欧美在线123| 一本一本大道香蕉久在线精品| 午夜精品免费在线观看| 亚洲欧美综合另类在线卡通| 精品国产免费人成在线观看| 91精品国产综合久久精品图片|