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

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

?? main.cpp

?? 編譯器很好用
?? CPP
字號:
#include<iostream.h>
#include<fstream.h>
#include"scanner.h"
#include"function&struct.h"
#include"stack.h"
///////////////////////////////////////////////////////////////////////////////////////////
//全局變量定義
int flag=1;					//判斷程序是否出錯,開始時置1為正確
extern int lineno;			//行號,于Scanner.h中定義
char token[11];				//字符緩沖區
table* t_first,*t_last;		//總程序數據區的首指針,末指針
quad* q_first,*q_last;		//四元式鏈的首,末指針
char label_temp[10][11];	//標識符的臨時數組,只是在IDT中用到,默認只能存十個
stack<int> Stack;
int temp_vary=2001;			//生成四元式時用到的臨時變量序號
int numoflabel;				//標識符緩沖區
int lev;
///////////////////////////////////////////////////////////////////////////////////////////


//語義函數定義
int BLK(ifstream&,int);
int constant(ifstream&,int,table*& tp0,int& dp);
int vary(ifstream&,int,table*& tp0,int& dp);
int funcpro(ifstream&,int,table*& tp0,int& dp);
int CS(ifstream&,int,int&,table*,int& dp);
int IDT(ifstream&,int);
int sentence(ifstream&,int,int&,table*,int& dp);
int ET(ifstream&,int,table*,int& dp);
int CE(ifstream&,int,int&,int&,table*,int& dp);
int E(ifstream&,int,table*,int& dp);
int T(ifstream&,int,table*,int& dp);
int F(ifstream&,int,table*,int& dp);
//出錯函數
void error(int);
///////////////////////////////////////////////////////////////////////////////////////////

void main( )
{
	int a;
	lev=0;
	
	ifstream sf("c:\\file.txt");
	if(sf.fail())
	{
		cerr<<"error opening file file.txt\n";
		return;
	}
	a=scanner(sf);

	if(a==13)		a=scanner(sf);
	if(a==21)		a=scanner(sf);
	if(a!=24)		
		error(13);
	else
		a=scanner(sf);

	a=BLK(sf,a);


	if(a!=26)	
	error(14);

	cout<<"this syntax has been completed!"<<endl;
	if(flag)
		cout<<"this grammar of source program is regular."<<endl;
	else
		cout<<"this grammar of source program is wrong!"<<endl;
	
	sf.close();

	quad* p=q_first;
	while(p!=NULL)
	{
		cout<<p->num<<"( "<<p->OP<<","<<p->arg1<<","<<p->arg2<<","<<p->result<<")"<<endl;
		p=p->next;
	}
}
///////////////////////////////////////////////////////////////////////////////////////////

void error(int err)
{
	cout<<lineno<<" line! :";
	switch(err)
	{
	case 0: cout<<" expected'('"<<endl;		break;
	case 1: cout<<" expected'因子'"<<endl;	break;
	case 2: cout<<" expected':='"<<endl;	break;
	case 3: cout<<" expected'then'"<<endl;	break;
	case 4: cout<<" expected'do'"<<endl;	break;
	case 5: cout<<" expected')'"<<endl;		break;
	case 6: cout<<" expected'begin'"<<endl;	break;
	case 7: cout<<" expected'end'"<<endl;	break;
	case 8: cout<<" expected'標識符'"<<endl;break;
	case 9: cout<<" expected'常量'"<<endl;	break;
	case 10: cout<<" expected'='"<<endl;	break;
	case 11: cout<<" expected':'"<<endl;	break;
	case 12: cout<<" 缺interger說明"<<endl;	break;
	case 13: cout<<" expected';'"<<endl;	break;
	case 14: cout<<" expected'.'"<<endl;	break;
	case 15: cout<<" 不認識字符"<<endl;		break;
	case 16: cout<<" 標識符重定義"<<endl;	break;
	case 17: cout<<" 整數越界"<<endl;		break;
	case 18: cout<<" 標識符未定義"<<endl;	break;
	default: cout<<"其他"<<endl;			break;
	}
	flag=0;                       //出錯同時置出錯標志flag=0
}


///////////////////////////////////////////////////////////////////////////////////////////
int BLK(ifstream& sf,int a)
{
	int S_CHAIN,cp0;
	int dp=5;					//局部變量的起始地址
	table* tp0=NULL;
	 
	if(q_last==NULL)
		 cp0=1;
	 else
		 cp0=q_last->num+1;

	Gen("j",0,-1,-1);
	
	if(a==27)							//過程定義
	{
		a=scanner(sf);					
		//缺處理形參
		if(a!=28)						//存在形參的處理
		{
			a=IDT(sf,a);
			if(a!=25)					//缺:
				error(11);
			else
				a=scanner(sf);

			if(a!=9)					//缺interger
				error(12);
			else
			{
				int temp=0;
				while(temp<numoflabel)
					fill(label_temp[temp++],0,lev,tp0,dp);	//此處需填表
				a=scanner(sf);
			}
		}

		if(a!=28)					//缺 )
			error(5);	
		else
			a=scanner(sf);

		if(a!=25)					//缺:
			error(11);
		else
			a=scanner(sf);

	if(a!=9)						//缺interger
		error(12);
	else
		a=scanner(sf);
	
	if(a!=24)						//缺;
		error(13);
	else
		a=scanner(sf);
	}
	
	if(a==2)			//常量定義
	{
		a=scanner(sf);
		a=constant(sf,a,tp0,dp);
	}
	
	if(a==18)   	//變量說明
	{
		a=scanner(sf);
		a=vary(sf,a,tp0,dp);		
	}
	if(a==7)		//函數說明
	{
		a=scanner(sf);
		a=funcpro(sf,a,tp0,dp);	
	}
	while(a==7)
	{
		a=scanner(sf);
		a=funcpro(sf,a,tp0,dp);
	}

	backpatch(cp0,q_last->num+1);
	Gen("prt",dp,-1,-1);			

	if(a!=1)							//復合語句
		error(6);
	else
	{
		a=scanner(sf);
		a=CS(sf,a,S_CHAIN,tp0,dp);
	}

	
	if(a!=24&&a!=26)					//缺';'或者'.'
	{
		error(13);
	}
	
	backpatch(S_CHAIN,q_last->num+1);
	Gen("ret",0,-1,-1);

	return a;
}

///////////////////////////////////////////////////////////////////////////////////////////
int constant(ifstream& sf,int a,table*& tp0,int& dp)
{
	if(a==21)	a=scanner(sf);
	if(a==38)   a=scanner(sf);
	if(a==22)
	{
		fill(token,1,lev,tp0,dp);//填表
		a=scanner(sf);
	}
	
	while(a==23)
	{
		a=scanner(sf);
		if(a==21)	a=scanner(sf);
		if(a==38)   a=scanner(sf);
		if(a==22)		
		{
			fill(token,1,lev,tp0,dp);//填表
			a=scanner(sf);
		}
	}

	if(a==24)
		a=scanner(sf);
	else
		error(13);

	return a;
}

///////////////////////////////////////////////////////////////////////////////////////////
int vary(ifstream& sf,int a,table*& tp0,int& dp)	
{	
	int temp=0;
	a=IDT(sf,a);
	
	if(a==25)	a=scanner(sf);

	if(a==9)	
	{
		while(temp<numoflabel)
			fill(label_temp[temp++],0,lev,tp0,dp);	//此處需填表
			
		a=scanner(sf);
	}
	if(a==24)	
		a=scanner(sf);
	else
		error(13);

	return a;
}
///////////////////////////////////////////////////////////////////////////////////////////
int funcpro(ifstream& sf,int a,table*& tp0,int& dp)
{

	if(a==21)	
	{
		fill(token,2,lev,tp0,dp);
		a=scanner(sf);
	}
	lev++;
	a=BLK(sf,a);

	if(a!=24)
		error(13);
	else
		a=scanner(sf);

	lev-=1;
	return a;
}

///////////////////////////////////////////////////////////////////////////////////////////
int CS(ifstream& sf,int a,int& C_CHAIN,table* tp0,int& dp)
{
	a=sentence(sf,a,C_CHAIN,tp0,dp);
	
	while(a==24)
	{
		int NXQ=q_last->num+1;
		a=scanner(sf);
		backpatch(C_CHAIN,NXQ);
		a=sentence(sf,a,C_CHAIN,tp0,dp);
	}
	
	if(a!=6)
		error(7);
	else
		a=scanner(sf);

	return a;
}

///////////////////////////////////////////////////////////////////////////////////////////
int IDT(ifstream& sf,int a)
{
	numoflabel=0;
	if(a==21)
	{	
		strcpy(label_temp[numoflabel++],token);	
		a=scanner(sf);
	}

	while(a==23)
	{
		a=scanner(sf);
		if(a==21)
		{	
			strcpy(label_temp[numoflabel++],token);	
			a=scanner(sf);
		}
	}

	return a;
}

///////////////////////////////////////////////////////////////////////////////////////////
int sentence(ifstream& sf,int a,int& S_CHAIN,table* tp0,int& dp)
{
	int temp=0;
	int E_TC,E_FC,S1_CHAIN,S2_CHAIN,W_QUAD;
	table* p;
	switch(a)
	{
	case 21:
				p=entry(token,lev,tp0);
				a=scanner(sf);
				if(a==44)				//賦值語句及函數返回
				{
					if(p->cat==0&&p->level<=lev)
					{
						if(p->level==lev)			//訪問同層的變量
						{
							Stack.Push(p->addr);
						}else{						//訪問上層的變量
							int i,j=0;
							for( i=lev;i>=p->level;i--)
							{
								j=j*10+i;
							}

							j=j*10+p->addr;
							Stack.Push(j);
							}
					
						a=scanner(sf);					
						a=E(sf,a,tp0,dp);
					Gen(":=",Stack.Pop(),Stack.Pop(),-1);
						S_CHAIN=0;
					}else{
						if(p->cat==2)
						{
							a=scanner(sf);					
							a=E(sf,a,tp0,dp);
							Gen(":=",0,Stack.Pop(),-1);
								S_CHAIN=0;
						}
					}
				}
				break;
	case 1:		a=scanner(sf);
				a=CS(sf,a,S1_CHAIN,tp0,dp);					//復合語句
				S_CHAIN=0;
				break;
	case 8:				
				a=scanner(sf);
				a=CE(sf,a,E_TC,E_FC,tp0,dp);					//if語句
				
				if(a!=16)	
					error(3);
				else{
					backpatch(E_TC,q_last->num+1);
					a=scanner(sf);
				}

				a=sentence(sf,a,S1_CHAIN,tp0,dp);

				if(a==5)
				{
					int NXQ=q_last->num+1;
					a=scanner(sf);
					Gen("j",0,-1,-1);
					backpatch(E_FC,q_last->num+1);
					S1_CHAIN=merg(S1_CHAIN,NXQ);
					a=sentence(sf,a,S2_CHAIN,tp0,dp);
					
					S_CHAIN=merg(S1_CHAIN,S2_CHAIN);
					
					return a;
				}
				
				S_CHAIN=merg(E_FC,S1_CHAIN);
				break;
	case 19:	W_QUAD=q_last->num+1;
				a=scanner(sf);
				a=CE(sf,a,E_TC,E_FC,tp0,dp);					//while語句
				
				if(a==4)
				{
					a=scanner(sf);
					backpatch(E_TC,q_last->num+1);
					a=sentence(sf,a,S1_CHAIN,tp0,dp);
					backpatch(S1_CHAIN,W_QUAD);
					Gen("j",W_QUAD,-1,-1);
					S_CHAIN=E_FC;
				}
				else
					error(4);
				break;
	case 14:	a=scanner(sf);
				if(a==27)					//read語句
					a=scanner(sf);
				else
					error(0);

				a=IDT(sf,a);

				if(a==28)
				{
					table* p;
					while(temp<numoflabel)
					{
						p=entry(label_temp[temp++],lev,tp0);
						if(p->cat==0)						//常量不能read
							Gen("in",p->addr,-1,-1);
					}
					a=scanner(sf);
				}
				else
					error(5);
				S_CHAIN=0;
				break;

	case 20:	a=scanner(sf);
				if(a==27)					//write語句
					a=scanner(sf);
				else
					error(0);

				a=ET(sf,a,tp0,dp);

				if(a==28)
				{
					stack<int> tempstack;	//建立一個臨時棧,完成Stack棧的倒棧
					while(!Stack.IsEmpty())
						tempstack.Push(Stack.Pop());//
					while(!tempstack.IsEmpty())
						Gen("out",tempstack.Pop(),-1,-1);
					a=scanner(sf);
				}
				else
					error(5);
				S_CHAIN=0;
				break;
	default:	
				S_CHAIN=0;
				break;
	}

	return a;
}

///////////////////////////////////////////////////////////////////////////////////////////
int ET(ifstream& sf,int a,table* tp0,int& dp)
{
	a=E(sf,a,tp0,dp);
	while(a==23)
	{
		a=scanner(sf);
		a=E(sf,a,tp0,dp);
	}

	return a;
}

///////////////////////////////////////////////////////////////////////////////////////////
int CE(ifstream& sf,int a,int& E_TC,int& E_FC,table* tp0,int& dp)
{	
	a=E(sf,a,tp0,dp);
	
	while(a>=38&&a<=43)
	{
		int temp=a;
		a=scanner(sf);
		a=E(sf,a,tp0,dp);
		switch(temp)
		{
		case 38:	E_TC=q_last->num+1;
					E_FC=q_last->num+2;
					Gen("jeq",0,Stack.Pop(),Stack.Pop());
					Gen("j",0,-1,-1);
					break;
		case 39:	E_TC=q_last->num+1;
					E_FC=q_last->num+2;
					Gen("jl",0,Stack.Pop(),Stack.Pop());
					Gen("j",0,-1,-1);
					break;
		case 40:	E_TC=q_last->num+1;
					E_FC=q_last->num+2;
					Gen("jg",0,Stack.Pop(),Stack.Pop());
					Gen("j",0,-1,-1);
					break;
		case 41:	E_TC=q_last->num+1;
					E_FC=q_last->num+2;
					Gen("jne",0,Stack.Pop(),Stack.Pop());
					Gen("j",0,-1,-1);
					break;
		case 42:	E_TC=q_last->num+1;
					E_FC=q_last->num+2;
					Gen("jle",0,Stack.Pop(),Stack.Pop());
					Gen("j",0,-1,-1);
					break;
		case 43:	E_TC=q_last->num+1;
					E_FC=q_last->num+2;
					Gen("jge",0,Stack.Pop(),Stack.Pop());
					Gen("j",0,-1,-1);
					break;
		}

	}

	return a;
}


///////////////////////////////////////////////////////////////////////////////////////////
int E(ifstream& sf,int a,table* tp0,int& dp)			//沒有處理單目運算符
{
	a=T(sf,a,tp0,dp);

	while(a==34||a==35)
	{
		int temp=a;
		a=scanner(sf);
		a=T(sf,a,tp0,dp);
		switch(temp)
		{
		case 34:	Gen("+",temp_vary,Stack.Pop(),Stack.Pop());
						Stack.Push(temp_vary++);
								break;
		case 35:	Gen("-",temp_vary,Stack.Pop(),Stack.Pop());
						Stack.Push(temp_vary++);
								break;
		}
	}

	return a;
}

///////////////////////////////////////////////////////////////////////////////////////////
int T(ifstream& sf,int a,table* tp0,int& dp)
{
	a=F(sf,a,tp0,dp);

	while(a==3||a==36||a==37)
	{
		int temp=a;
		a=scanner(sf);
		a=F(sf,a,tp0,dp);
		switch(temp)
		{
		case 3:		Gen("div",temp_vary,Stack.Pop(),Stack.Pop());
						Stack.Push(temp_vary++);
								break;
		case 36:	Gen("*",temp_vary,Stack.Pop(),Stack.Pop());
						Stack.Push(temp_vary++);
								break;
		case 37:	Gen("/",temp_vary,Stack.Pop(),Stack.Pop());
						Stack.Push(temp_vary++);
								break;
		}		
	}

	return a;
}

///////////////////////////////////////////////////////////////////////////////////////////
int F(ifstream& sf,int a,table* tp0,int& dp)				//因子文法沒有改寫
{
	table* p;
	switch(a)
	{
	case 21:	p=entry(token,lev,tp0);
				
				if(p->cat==0)
				{				
					if(p->cat==0&&p->level<=lev)	
					{
						if(p->level==lev)		//訪問同層的變量
						{
							Stack.Push(p->addr);
						}else{					//訪問上層的變量
							int i,j=0;
							for( i=lev;i>=p->level;i--)
							{
								j=j*10+i;
							}

							j=j*10+p->addr;
							Stack.Push(j);
							}
					}
					a=scanner(sf);
				}else{
					if(p->cat==1)
					{
						Stack.Push(1000+p->val);
						a=scanner(sf);
					}else{						//函數調用

						int i,temp;
						stack<int> ss;
						a=scanner(sf);
						if(a==27)				//存在實參
						{
							a=scanner(sf);
							temp=1;
							a=E(sf,a,tp0,dp);
							while(a==23)
							{
								a=scanner(sf);
								temp++;
								a=E(sf,a,tp0,dp);
							}
					
							if(a==28)	a=scanner(sf);

							for( i=0;i<temp;i++)
								ss.Push(Stack.Pop());
							for(i=0;i<temp;i++)
								Gen(":=",dp+5+i,ss.Pop(),-1);
							}
						temp=lev-p->level;
						Gen("jsr",p->addr,-1,temp);
						Gen(":=",temp_vary,dp,-1);
						Stack.Push(temp_vary++);
					}
				}
								//調用結束

				if(a==27)
				{
					a=scanner(sf);
					a=ET(sf,a,tp0,dp);
					
					if(a!=28)
						error(5);
					else
						a=scanner(sf);
				}
					break;
	case 27:	a=scanner(sf);
				a=E(sf,a,tp0,dp);
					
				if(a!=28)
					error(5);
				else
					a=scanner(sf);

				break;
	case 22:	Stack.Push(getconst());
				a=scanner(sf);
				break;
	}

	return a;
}
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99精品久久久| 亚洲三级小视频| 欧洲一区在线电影| 成人性生交大片| 国内精品久久久久影院色| 日本不卡一区二区| 午夜激情一区二区三区| 尤物视频一区二区| 成人免费视频在线观看| 国产精品国产成人国产三级 | 欧美丰满嫩嫩电影| 欧美性猛片xxxx免费看久爱| 色哟哟一区二区在线观看| 成人sese在线| 91在线无精精品入口| 99精品桃花视频在线观看| 99精品国产99久久久久久白柏 | 91麻豆福利精品推荐| 成人av中文字幕| 91麻豆swag| 欧美日韩一区中文字幕| 欧美性一级生活| 欧美猛男超大videosgay| 欧美三级韩国三级日本一级| 国产午夜精品一区二区三区四区| 日韩欧美国产一区二区在线播放| 欧美精品色一区二区三区| 欧美群妇大交群中文字幕| 欧美精品xxxxbbbb| 久久久亚洲精品石原莉奈| 国产欧美一二三区| 亚洲女同女同女同女同女同69| 亚洲精品免费播放| 蜜臀99久久精品久久久久久软件| 久久国产精品免费| 不卡的av中国片| 欧美调教femdomvk| 精品欧美一区二区在线观看| 国产视频亚洲色图| 亚洲伦理在线免费看| 日韩精品一二三区| 国产精品综合网| 色老汉av一区二区三区| 8x8x8国产精品| 久久久久88色偷偷免费| 亚洲男人天堂一区| 青青草国产精品97视觉盛宴| 床上的激情91.| 欧美精品色综合| 国产精品日日摸夜夜摸av| 亚洲成人午夜电影| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 日韩av在线发布| 国产传媒一区在线| 欧美色精品在线视频| 久久精品亚洲精品国产欧美| 一区二区三区视频在线观看| 国产尤物一区二区| 欧美日韩精品一区二区三区四区| 久久精品视频一区| 日韩经典中文字幕一区| av一二三不卡影片| 欧美精品一区男女天堂| 亚洲国产一区二区三区| 成人免费黄色在线| 日韩欧美一区二区视频| 亚洲综合一区二区精品导航| 成人看片黄a免费看在线| 日韩午夜电影在线观看| 午夜精品视频在线观看| 99久久精品国产一区| 久久精品视频免费| 精品一区二区三区久久久| 欧美日韩中文另类| 亚洲综合在线视频| 99久久久久久99| 欧美极品xxx| 国产揄拍国内精品对白| 日韩欧美高清dvd碟片| 亚洲国产精品久久久男人的天堂| 99国产精品视频免费观看| 国产偷v国产偷v亚洲高清| 卡一卡二国产精品| 日韩欧美一区二区免费| 日本在线观看不卡视频| 欧美日韩在线播放一区| 亚洲午夜电影在线观看| 96av麻豆蜜桃一区二区| 1000精品久久久久久久久| 成人精品在线视频观看| 久久久久99精品一区| 国产精品一区2区| 国产亚洲短视频| 国产成人av电影在线观看| 久久久久久久久久久久电影| 国产麻豆视频精品| 欧美精品一区二区三区高清aⅴ | 99视频热这里只有精品免费| 日本一区二区动态图| 国产成人精品网址| 国产精品乱码人人做人人爱| 成人免费毛片app| 亚洲婷婷在线视频| 欧美人妖巨大在线| 麻豆精品一区二区| 2023国产精华国产精品| 91精品国产高清一区二区三区蜜臀| 色综合 综合色| 久久综合五月天婷婷伊人| 日韩1区2区3区| 精品国产91亚洲一区二区三区婷婷| 美国十次综合导航| 亚洲国产精品成人综合色在线婷婷 | 丝袜a∨在线一区二区三区不卡| 欧美蜜桃一区二区三区| 蜜臀久久久久久久| 欧美极品xxx| 欧美日韩国产123区| 国产一区二区三区在线观看精品 | 美国三级日本三级久久99| 久久久久国产精品人| 色综合久久中文综合久久牛| 丝袜美腿亚洲色图| 日本一区二区在线不卡| 欧美中文字幕一区二区三区| 久久精品国产亚洲一区二区三区| 国产精品久线观看视频| 在线91免费看| 成人免费毛片a| 日本欧美一区二区在线观看| 国产精品欧美一区二区三区| 欧美精品九九99久久| 处破女av一区二区| 午夜电影一区二区三区| 国产精品免费视频观看| 欧美一区二区免费观在线| 本田岬高潮一区二区三区| 免费在线看一区| 亚洲激情综合网| 国产日本一区二区| 日韩欧美一区二区久久婷婷| 91久久国产最好的精华液| 国产精品一区一区三区| 日韩—二三区免费观看av| 亚洲欧美国产三级| 国产精品的网站| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产综合久久久久久鬼色| 亚洲自拍与偷拍| 亚洲色图另类专区| 欧美极品aⅴ影院| 久久久综合网站| 精品理论电影在线| 日韩一区二区三区电影在线观看| 91久久久免费一区二区| 99精品视频一区二区| 豆国产96在线|亚洲| 激情偷乱视频一区二区三区| 日韩影院在线观看| 亚洲国产欧美在线人成| 亚洲一区在线看| 亚洲欧美一区二区三区国产精品| 国产精品免费看片| 国产欧美一区二区精品仙草咪 | 艳妇臀荡乳欲伦亚洲一区| 亚洲天堂av一区| 亚洲三级在线看| 亚洲精品久久久蜜桃| 亚洲精品成人天堂一二三| 亚洲美女免费视频| 亚洲蜜臀av乱码久久精品| 亚洲综合av网| 日韩成人av影视| 蜜桃视频第一区免费观看| 另类人妖一区二区av| 精品一区中文字幕| 国产一区999| av中文字幕在线不卡| a亚洲天堂av| 99精品黄色片免费大全| 色综合视频在线观看| 欧美日韩专区在线| 制服丝袜中文字幕一区| 欧美一区二区三区在线观看 | 亚洲国产视频一区二区| 亚洲国产美女搞黄色| 日韩精品国产精品| 久久精品国产在热久久| 国产成人夜色高潮福利影视| 97se亚洲国产综合在线| 欧美视频日韩视频在线观看| 欧美一级片免费看| 欧美极品xxx| 亚洲成人免费视| 国产精品正在播放| 日本丰满少妇一区二区三区| 91精品婷婷国产综合久久| 久久一日本道色综合| 亚洲精品欧美二区三区中文字幕| 日本亚洲电影天堂|