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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fc-compile.cpp

?? 編譯原理的一個課程設(shè)計
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
{
	int i,cnt=0,m=2*n+1;
	for(i=1;i<m_iCode && cnt<m;i++)
		if(m_code[i].op==OP_NULL)
			cnt++;
	return i-1;
}

int CFCDlg::IdentIndex(char ident[IDENTLENGTH])
{
	int i;
	if(m_iFunction>=0)
	{
		for(i=m_function[m_iFunction].iIdent;i>=0;i--)//查找變量列表
			if(strcmp(ident,m_function[m_iFunction].ident[i].name)==0 && //標識符名相同
				 m_function[m_iFunction].ident[i].level>=0 )//變量在其作用域內(nèi)
				return i+m_function[m_iFunction].iParam;
		for(i=m_function[m_iFunction].iParam;i>=0;i--)//查找參數(shù)列表
			if(strcmp(ident,m_function[m_iFunction].param[i].name)==0)
				return i;
	}
	return -1;
}

int CFCDlg::FunctionIndex(char ident[IDENTLENGTH])
{
	for(int i=m_iFunction;i>=0;i--)
		if(strcmp(ident,m_function[i].name)==0)
			break;
	return i;
}

BOOL CFCDlg::RecycleMemory(void)
{
	if(m_function[m_iFunction].iIdent>m_function[m_iFunction].iMaxIdent)
		m_function[m_iFunction].iMaxIdent=m_function[m_iFunction].iIdent;
	for(int i=m_function[m_iFunction].iIdent-1;i>=0;i--)
		if(m_function[m_iFunction].ident[i].level>m_function[m_iFunction].level)
		{
			switch(m_function[m_iFunction].ident[i].type)
			{
			case IT_INTARRAY:
				if(!TestCode())
					return FALSE;
				m_code[m_iCode].op=OP_DELARRAYI;
				m_code[m_iCode].sd.iNumber=i+m_function[m_iFunction].iParam;
				m_iCode++;
				break;
			case IT_DOUBLEARRAY:
				if(!TestCode())
					return FALSE;
				m_code[m_iCode].op=OP_DELARRAYD;
				m_code[m_iCode].sd.iNumber=i+m_function[m_iFunction].iParam;
				m_iCode++;
				break;
			}
			m_function[m_iFunction].ident[i].level=-1;
			m_function[m_iFunction].iIdent--;
		}
	return TRUE;
}
// CFCDlg 編譯函數(shù)
BOOL CFCDlg::Compile(void)
{
	m_strEdit="編譯中...\r\n";
	UpdateData(FALSE);	//刷新輸出信息
	m_nCurNumber=0;		//當前整數(shù)
	m_dCurNumber=0.0;	//當前實數(shù)
	m_curElement=E_NULL;//當前ZElement
	m_iFunction=-1;		//函數(shù)數(shù)目計數(shù)
	m_iCount=0;			//源代碼字符計數(shù)
	m_iLine=0;			//源代碼行計數(shù)
	m_iCode=1;			//中間代碼計數(shù) -- 賦值 1 是為了在 0 處填入jump to main代碼
	m_iErrorCount=0;	//源代碼錯誤計數(shù)
	m_iContinue=-1;
	m_iBreak=-1;

	if(!GetElement())//獲取第一個函數(shù)的返回類型
		return FALSE;
	while(1)//循環(huán)處理函數(shù)
	{
		if(m_curElement==E_FILEEND)
			break;
		if(!DoFunction())
			return FALSE;
	}
	m_iFunction++;
	if(!SearchMain())
		return FALSE;
	return TRUE;
}

BOOL CFCDlg::DoFunction(void)
{
	if(m_iFunction==nFUNCTION)//函數(shù)數(shù)超過上限
	{
		ErrorReport(CFCErrorDlg::ET_MANYFUNCTION);
		return FALSE;
	}
	if(!TestCode())
		return FALSE;
	int head=m_iCode;
	m_code[head].op=OP_NULL;//函數(shù)開始標志
	m_iCode++;//預(yù)留空格以填入函數(shù)參數(shù)和變量所需的內(nèi)存大小
	switch(m_curElement)//登記函數(shù)的返回類型
	{
	case E_DOUBLE:
		m_function[m_iFunction+1].ReturnType=IT_DOUBLE;
		break;
	case E_INT:
		m_function[m_iFunction+1].ReturnType=IT_INT;
		break;
	case E_VOID:
		m_function[m_iFunction+1].ReturnType=IT_VOID;
		break;
	default://錯誤的函數(shù)返回類型
		ErrorReport(CFCErrorDlg::ET_UNKNOWNTYPE);
		return FALSE;
	}
	if(!GetElement())//獲取函數(shù)名
		return FALSE;
	if(m_curElement!=E_IDENT)//不是標識符
	{
		if(!ErrorReport(CFCErrorDlg::ET_LESSIDENT))
			return FALSE;
	}
	if(IT_FUNCTION==GetIdentType(m_curIdent))//已經(jīng)定義的函數(shù)?
	{
		if(!ErrorReport(CFCErrorDlg::ET_DEFINEDIDENT))
			return FALSE;
		//繼續(xù)編譯,權(quán)當此處函數(shù)名沒有重名
	}
	m_iFunction++;
	strcpy(m_function[m_iFunction].name,m_curIdent);//登記函數(shù)名
	if(!GetElement())//獲取函數(shù)參數(shù)前的左括號
		return FALSE;
	if(m_curElement!=E_LPAREN)//不是左小括號?
	{
		if(!ErrorReport(CFCErrorDlg::ET_LESSLPAREN))
			return FALSE;
		//繼續(xù)編譯,權(quán)當此處有一個左小括號
	}
	if(!GetElement())//獲取函數(shù)的第一個參數(shù)的類型或右小括號
		return FALSE;
	if(m_curElement==E_RPAREN)//右括號,即此函數(shù)時無參函數(shù)
		m_function[m_iFunction].iParam=0;
	else//處理函數(shù)參數(shù)
	{
		int iParam=0;
		m_function[m_iFunction].iParam=0;
		while(1)
		{
			if(iParam==nPARAM)//檢查參數(shù)數(shù)目
			{
				ErrorReport(CFCErrorDlg::ET_MANYPARAM);
				return FALSE;
			}
			switch(m_curElement)//登記參數(shù)類型
			{
			case E_INT:
				m_function[m_iFunction].param[iParam].type=IT_INT;
				break;
			case E_DOUBLE:
				m_function[m_iFunction].param[iParam].type=IT_DOUBLE;
				break;
			default:
				ErrorReport(CFCErrorDlg::ET_UNKNOWNTYPE);
				return FALSE;
			}
			if(!GetElement())//獲取參數(shù)名稱
				return FALSE;
			if(m_curElement!=E_IDENT)//不是標識符
			{
				if(!ErrorReport(CFCErrorDlg::ET_LESSIDENT))
					return FALSE;
			}
			if(GetIdentType(m_curIdent)!=IT_NULL)//參數(shù)重名
			{
				if(!ErrorReport(CFCErrorDlg::ET_DEFINEDIDENT))
					return FALSE;
				//繼續(xù)編譯,權(quán)當此處參數(shù)沒有重名
			}
			strcpy(m_function[m_iFunction].param[iParam].name,m_curIdent);//登記參數(shù)名稱
			if(!GetElement())//獲取逗號或右小括號
				return FALSE;
			iParam++;
			m_function[m_iFunction].iParam++;//參數(shù)數(shù)目加一
			if(m_curElement!=E_COMMA)//不是逗號,結(jié)束參數(shù)
				break;
			if(!GetElement())//獲取下一個參數(shù)類型
				return FALSE;
		}
		if(m_curElement!=E_RPAREN)
		{
			if(!ErrorReport(CFCErrorDlg::ET_LESSRPAREN))
				return FALSE;
			//繼續(xù)編譯,權(quán)當此處有一個右小括號
		}
		for(iParam=0;iParam<m_function[m_iFunction].iParam;iParam++)//處理參數(shù)傳遞
		{
			if(!TestCode())
				return FALSE;
			m_code[m_iCode].op=(m_function[m_iFunction].param[iParam].type==IT_INT?
				OP_PARAMTRANSI:OP_PARAMTRANSD);
			m_code[m_iCode].sd.iNumber=iParam;
			m_code[m_iCode].sd.nParam=m_function[m_iFunction].iParam;
			m_iCode++;
		}
	}
	if(!GetElement())//獲取函數(shù)頭部的左花括號
		return FALSE;
	if(m_curElement!=E_BEGIN)
	{
		if(!ErrorReport(CFCErrorDlg::ET_LESSBEGIN))
			return FALSE;
		//繼續(xù)編譯,權(quán)當此處有一個左花括號
	}
	m_function[m_iFunction].level=0;//初始嵌套層次為0
	m_function[m_iFunction].iIdent=0;
	if(!GetElement())//獲取語句的第一個 ZElement
		return FALSE;
	while(m_curElement!=E_END)//循環(huán)處理函數(shù)內(nèi)的語句
	{
		if(!DoStatement())
			return FALSE;
	}
	m_function[m_iFunction].level=-1;//函數(shù)已經(jīng)結(jié)束,回收所有變量占用的內(nèi)存
	if(!RecycleMemory())
		return FALSE;
	if(!GetElement())//獲取下一個函數(shù)的類型或源代碼結(jié)束符
		return FALSE;
	switch(m_function[m_iFunction].ReturnType)//處理函數(shù)默認返回
	{
	case IT_INT:
		if(!TestCode())
			return FALSE;
		m_code[m_iCode].op=OP_LOADCONSTI;
		m_code[m_iCode].sd.iNumber=0;
		m_iCode++;
		break;
	case IT_DOUBLE:
		if(!TestCode())
			return FALSE;
		m_code[m_iCode].op=OP_LOADCONSTD;
		m_code[m_iCode].sd.dNumber=0.0;
		m_iCode++;
		break;
	}
	if(!TestCode())
		return FALSE;
	m_code[m_iCode].op=OP_NULL;		//函數(shù)結(jié)束標志
	m_code[m_iCode].sd.iNumber=m_function[m_iFunction].iParam;
	m_iCode++;
	m_code[head].sd.iNumber=			//填入函數(shù)參數(shù)和變量所需的內(nèi)存大小
		m_function[m_iFunction].iMaxIdent+m_function[m_iFunction].iParam;
//	m_iFunction++;
	return TRUE;
}

BOOL CFCDlg::DoStatement(void)
{
	m_bDouble=FALSE;
	switch(m_curElement)
	{
	case E_FILEEND:							//源代碼結(jié)束
		ErrorReport(CFCErrorDlg::ET_SOURCENOEND);
		return FALSE;
	case E_OUTPUT:							//輸出語句
		return DoOutput();
	case E_BEGIN:								//復(fù)合語句
		m_function[m_iFunction].level++;
		if(!GetElement())
			return FALSE;
		while(1)
		{
			if(m_curElement==E_END || m_curElement==E_FILEEND)
				break;
			if(!DoStatement())
				return FALSE;
		}
		m_function[m_iFunction].level--;
		if(!RecycleMemory())
			return FALSE;
		if(!GetElement())//獲取下一語句開始的 ZElement
			return FALSE;
		break;
	case E_INT:case E_DOUBLE:		//定義語句
		return DoDefine();
	case E_IDENT:
		switch(GetIdentType(m_curIdent))
		{
		case IT_NULL:							//未知標識符
			if(!ErrorReport(CFCErrorDlg::ET_UNKNOWNIDENT))
				return FALSE;
			if(!GetElement())
				return FALSE;
			break;
		case IT_INT:							//賦值語句
		case IT_DOUBLE:
		case IT_INTARRAY:
		case IT_DOUBLEARRAY:
		case IT_INTINRANG:
		case IT_DOUBLEINRANG:
		case IT_IARRAYINRANG:
		case IT_DARRAYINRANG:
			if(!DoBecomes())
				return FALSE;
			break;
		case IT_FUNCTION:					//函數(shù)調(diào)用
			ZIdentType it=m_function[FunctionIndex(m_curIdent)].ReturnType;
			if(!DoCall())
				return FALSE;
			if(m_curElement!=E_SEMICOLON)//缺少分號
			{
				if(!ErrorReport(CFCErrorDlg::ET_LESSSEMICOLON))
					return FALSE;
			}
			if(it!=IT_VOID)
			{
				if(!TestCode())
					return FALSE;
				m_code[m_iCode].op=OP_DELETE;
				m_iCode++;
			}
			if(!GetElement())
				return FALSE;
			break;
		}
		break;
	case E_INPUT:								//輸入語句
		return DoInput();
	case E_CONTINUE:case E_BREAK:case E_EXIT:case E_RETURN://特殊語句
		return DoSpecial();
	case E_IF:									//判斷語句
		return DoIf();
	case E_WHILE:								//循環(huán)語句
		return DoWhile();
	case E_DO:									//重復(fù)語句
		return DoDoWhile();
	case E_SWITCH:							//選擇語句
		return DoSwitch();
	default:
		if(!ErrorReport(CFCErrorDlg::ET_WRONGSTATEMENT))
			return FALSE;
		if(!GetElement())
			return FALSE;
		break;
	}
	return TRUE;
}

BOOL CFCDlg::DoOutput(void)
{
	do
	{
		if(!GetElement())
			return FALSE;
		if(m_curElement==E_STRING)//輸出字符串
		{
			char *string=new char[m_curString.GetLength()+1];
			strcpy(string,m_curString);
			if(!TestCode())
				return FALSE;
			m_code[m_iCode].op=OP_OUTPUTS;
			m_code[m_iCode].sd.string=string;
			m_iCode++;
			if(!GetElement())
				return FALSE;
		}
		else//輸出表達式
		{
			m_bDouble=FALSE;
			if(!DoExpression())
				return FALSE;
			if(!TestCode())
				return FALSE;
			if(m_bDouble)
				m_code[m_iCode].op=OP_OUTPUTD;
			else
				m_code[m_iCode].op=OP_OUTPUTI;
			m_iCode++;
		}
	}
	while(m_curElement==E_COMMA);
	if(m_curElement!=E_SEMICOLON)
	{
		if(!ErrorReport(CFCErrorDlg::ET_LESSSEMICOLON))
			return FALSE;
		//繼續(xù)編譯,權(quán)當此處有一個分號
	}
	if(!GetElement())
		return FALSE;
	return TRUE;
}

BOOL CFCDlg::DoExpression(void)
{
	BOOL bDouble=FALSE;
	BOOL bMinus=FALSE;
	if(m_curElement==E_MINUS || m_curElement==E_PLUS)//處理表達式前的加減號
	{
		if(m_curElement==E_MINUS)
			bMinus=TRUE;
		if(!GetElement())
			return FALSE;
		if(!DoTerm())
			return FALSE;
		if(bMinus)
		{
			if(!TestCode())
				return FALSE;
			if(m_bDouble)m_code[m_iCode].op=OP_CHANGESIGNALD;
			else m_code[m_iCode].op=OP_CHANGESIGNALI;
			m_iCode++;
		}
	}
	else//表達式前沒有加減號
	{
		if(!DoTerm())
			return FALSE;
	}
	while(m_curElement==E_MINUS || m_curElement==E_PLUS)//循環(huán)處理項
	{
		bMinus=(m_curElement==E_MINUS);
		if(!GetElement())
			return FALSE;
		bDouble=m_bDouble;
		m_bDouble=FALSE;
		if(!DoTerm())
			return FALSE;
		if(!bDouble && m_bDouble)//原來不是double現(xiàn)在是
		{//作整數(shù)變實數(shù)
			if(!TestCode())
				return FALSE;
			m_code[m_iCode].op=OP_I2D;
			m_code[m_iCode].sd.iNumber=-1;//棧頂?shù)诙€數(shù)
			m_iCode++;
		}
		if(bDouble && !m_bDouble)//原來是double現(xiàn)在不是
		{//作整數(shù)變實數(shù)
			if(!TestCode())
				return FALSE;
			m_code[m_iCode].op=OP_I2D;
			m_code[m_iCode].sd.iNumber=0;//棧頂?shù)谝粋€數(shù)
			m_iCode++;
		}
		m_bDouble=(m_bDouble || bDouble);
		if(!TestCode())
			return FALSE;
		if(bMinus)
		{
			if(m_bDouble)m_code[m_iCode].op=OP_MINUSD;
			else m_code[m_iCode].op=OP_MINUSI;
		}
		else
		{
			if(m_bDouble)m_code[m_iCode].op=OP_PLUSD;
			else m_code[m_iCode].op=OP_PLUSI;
		}
		m_iCode++;
	}
	return TRUE;
}

BOOL CFCDlg::DoTerm(void)
{
	BOOL bDouble=FALSE;
	ZElement el;
	if(!DoFactor())
		return FALSE;
	while(m_curElement==E_TIMES || m_curElement==E_SLASH || m_curElement==E_MOD)//循環(huán)處理因子
	{
		el=m_curElement;
		if(!GetElement())
			return FALSE;
		bDouble=m_bDouble;
		m_bDouble=FALSE;
		if(!DoFactor())
			return FALSE;
		if(!bDouble && m_bDouble)//原來不是double現(xiàn)在是
		{//作整數(shù)變實數(shù)
			if(!TestCode())
				return FALSE;
			m_code[m_iCode].op=OP_I2D;
			m_code[m_iCode].sd.iNumber=-1;//棧頂?shù)诙€數(shù)
			m_iCode++;
		}
		if(bDouble && !m_bDouble)//原來是double現(xiàn)在不是
		{//作整數(shù)變實數(shù)
			if(!TestCode())
				return FALSE;
			m_code[m_iCode].op=OP_I2D;
			m_code[m_iCode].sd.iNumber=0;//棧頂?shù)谝粋€數(shù)
			m_iCode++;
		}
		m_bDouble=(bDouble || m_bDouble);
		if(!TestCode())
			return FALSE;
		switch(el)
		{
		case E_TIMES:
			if(m_bDouble)m_code[m_iCode].op=OP_TIMESD;
			else m_code[m_iCode].op=OP_TIMESI;
			break;
		case E_SLASH:
			if(m_bDouble)m_code[m_iCode].op=OP_SLASHD;
			else m_code[m_iCode].op=OP_SLASHI;
			break;
		case E_MOD:
			if(m_bDouble)
			{
				if(!ErrorReport(CFCErrorDlg::ET_DOUBLEMOD))
					return FALSE;
				//繼續(xù)編譯,權(quán)當此處不是浮點數(shù)參加余運算
			}
			m_code[m_iCode].op=OP_MOD;
			break;
		}//end switch
		m_iCode++;
	}
	return TRUE;
}

BOOL CFCDlg::DoFactor(void)
{
	BOOL bDouble=FALSE;
	m_bDouble=FALSE;
	ZIdentType it=IT_VOID;//強制類型轉(zhuǎn)換標志
	int index;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区公司| 欧美精品丝袜中出| 91久久香蕉国产日韩欧美9色| 欧美片网站yy| 中文字幕人成不卡一区| 欧美剧在线免费观看网站| 成人夜色视频网站在线观看| 欧美精品在线一区二区三区| 国产精品丝袜在线| 久久精品噜噜噜成人88aⅴ| 色综合久久久久综合体桃花网| 日韩精品一区在线观看| 亚洲成人免费看| 亚洲女人****多毛耸耸8| 91麻豆精品国产91久久久久久| 久久精品视频在线看| 水蜜桃久久夜色精品一区的特点 | 国产精品久久二区二区| 美女视频黄久久| 欧洲精品在线观看| 中文字幕日韩一区| 高清不卡一区二区在线| wwww国产精品欧美| 麻豆精品久久久| 制服.丝袜.亚洲.中文.综合| 亚洲最快最全在线视频| 91麻豆国产福利在线观看| 国产精品丝袜黑色高跟| 处破女av一区二区| 国产三级一区二区三区| 国产乱码字幕精品高清av| 欧美电影免费观看完整版| 图片区小说区国产精品视频| 欧美性猛片aaaaaaa做受| 亚洲综合无码一区二区| 欧美午夜免费电影| 亚洲国产精品麻豆| 欧美精品一卡二卡| 日韩成人一级片| 日韩精品一区二| 国产精品亚洲综合一区在线观看| 2024国产精品| 国产69精品久久777的优势| 国产亚洲一区二区在线观看| 国产成人aaa| 国产精品欧美一区喷水| 91天堂素人约啪| 亚洲国产乱码最新视频| 欧美精品一级二级| 精品一区二区日韩| 国产日韩一级二级三级| www.日韩精品| 亚洲国产精品尤物yw在线观看| 欧美麻豆精品久久久久久| 蜜芽一区二区三区| 久久久精品综合| 成人av在线观| 五月综合激情日本mⅴ| 日韩精品中文字幕一区二区三区 | 轻轻草成人在线| 久久麻豆一区二区| 99久久精品国产观看| 亚洲国产精品久久艾草纯爱| 日韩一区二区在线免费观看| 国产成人精品免费视频网站| 亚洲激情在线播放| 日韩欧美中文字幕公布| 国产精品性做久久久久久| 亚洲乱码一区二区三区在线观看| 91精品国产综合久久福利软件 | 欧美剧情片在线观看| 精品一区二区在线看| 国产精品久久久一本精品| 欧美丰满美乳xxx高潮www| 国产精品一区在线观看乱码| 亚洲国产一区二区在线播放| 久久精品在线免费观看| 欧美视频自拍偷拍| 国产盗摄一区二区| 婷婷综合五月天| 国产精品福利一区二区三区| 91精品蜜臀在线一区尤物| av中文字幕亚洲| 久久超碰97人人做人人爱| 亚洲免费伊人电影| 久久精品一区二区| 欧美日韩国产美| 91污在线观看| 粉嫩嫩av羞羞动漫久久久| 蜜臀av一区二区在线免费观看| 亚洲乱码中文字幕| 国产精品少妇自拍| 欧美精品一区二区三区视频| 欧美日韩国产首页| 97国产精品videossex| 国产一区二区三区免费在线观看| 亚洲成人动漫在线免费观看| **欧美大码日韩| 欧美经典一区二区三区| 日韩精品中文字幕一区二区三区| 欧美亚洲一区三区| 91美女视频网站| 91视频在线观看| a亚洲天堂av| 国产精品2024| 久久成人羞羞网站| 免费看欧美美女黄的网站| 亚洲成人精品影院| 亚洲小少妇裸体bbw| 亚洲色图制服诱惑 | 国产精品久久久久影院色老大 | 91麻豆精品91久久久久同性| 色久综合一二码| 成人av资源站| 成人在线一区二区三区| 国产高清精品在线| 国产成人综合在线| 国产大陆亚洲精品国产| 国模大尺度一区二区三区| 狠狠狠色丁香婷婷综合激情 | 日韩电影在线一区| 日韩电影在线免费看| 日韩电影在线看| 久久国产精品第一页| 久久精品噜噜噜成人av农村| 六月丁香婷婷色狠狠久久| 激情综合一区二区三区| 狠狠色丁香久久婷婷综合_中| 狠狠色丁香婷婷综合久久片| 懂色av噜噜一区二区三区av| 99在线精品一区二区三区| 91色porny在线视频| 欧美日韩一区在线| 欧美一级在线免费| 久久综合999| 国产精品对白交换视频| 一区二区在线观看视频| 亚洲一区电影777| 日韩在线一区二区| 国产一区二区三区四区在线观看| 粉嫩av一区二区三区| 在线视频观看一区| 日韩一区二区精品葵司在线| 久久婷婷综合激情| 亚洲色欲色欲www在线观看| 亚洲成人一二三| 国产成人精品一区二| 欧美亚洲国产一区二区三区| 欧美精品一卡两卡| 国产欧美一区二区在线观看| 亚洲视频在线一区| 喷水一区二区三区| 不卡的av网站| 69堂国产成人免费视频| 亚洲国产岛国毛片在线| 首页国产丝袜综合| 国产一本一道久久香蕉| 粉嫩绯色av一区二区在线观看| 一本到不卡免费一区二区| 日韩欧美在线观看一区二区三区| 中文在线免费一区三区高中清不卡| 一区二区不卡在线播放| 国产伦精品一区二区三区在线观看| 色综合欧美在线| 久久人人97超碰com| 亚洲一区二区三区国产| 国产精品99久久久久久久vr| 精品视频一区三区九区| 中文字幕免费观看一区| 日本aⅴ免费视频一区二区三区| 成人黄色免费短视频| 欧美r级在线观看| 午夜av一区二区三区| 成人白浆超碰人人人人| 欧美成人免费网站| 性做久久久久久| 91免费看视频| 国产精品久久三区| 国产一区 二区 三区一级| 欧美精品乱码久久久久久| 亚洲桃色在线一区| 大陆成人av片| 精品国产乱子伦一区| 日韩成人一级大片| 欧美福利电影网| 一区二区在线电影| 色欧美乱欧美15图片| 国产精品美女一区二区在线观看| 人妖欧美一区二区| 欧美日韩黄色一区二区| 1024精品合集| 99精品热视频| 国产精品福利av| 成人免费av资源| 国产精品免费免费| 93久久精品日日躁夜夜躁欧美| 日本一区二区三级电影在线观看| 国产剧情一区二区| 国产欧美精品在线观看| 国产成人av电影在线播放|