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

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

?? fc-translate.cpp

?? 編譯原理的一個課程設計
?? CPP
字號:
#include "stdafx.h"
#include "FC.h"
#include "FCDlg.h"
#include "FCTranslateDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

void CFCDlg::Translate(void)
{
	CFCTranslateDlg dlg;
	dlg.m_bBlankLine	=m_bBlankLine;
	dlg.m_bExitWait		=m_bExitWait;
	dlg.m_bOpSpace		=m_bOpSpace;
	dlg.m_bOutPrecision	=m_bOutPrecision;
	dlg.m_bOutRuntime	=m_bOutRuntime;
	dlg.m_iBackChoice	=m_iBackChoice;
	dlg.m_strBack.Format("%d",m_iBack);
	if(m_strCppFile!="")
	{
		for(int i=m_strCppFile.GetLength()-1;i>=0;i--)
			if(m_strCppFile[i]=='.' || m_strCppFile[i]=='/' || m_strCppFile[i]=='\\')
				break;
		if(i<0)
			dlg.m_strObjectFile=m_strCppFile+".cpp";
		else if(m_strCppFile[i]=='.')
			dlg.m_strObjectFile=m_strCppFile.Left(i)+".cpp";
		else
			dlg.m_strObjectFile=m_strCppFile+".cpp";
	}
	if(dlg.DoModal()!=IDOK)
		return;
	m_bBlankLine	=dlg.m_bBlankLine;
	m_bExitWait		=dlg.m_bExitWait;
	m_bOpSpace		=dlg.m_bOpSpace;
	m_bOutPrecision	=dlg.m_bOutPrecision;
	m_bOutRuntime	=dlg.m_bOutRuntime;
	m_iBack			=atoi(dlg.m_strBack);
	m_iBackChoice	=dlg.m_iBackChoice;
	m_strCppFile	=dlg.m_strObjectFile;

	m_nCurNumber=0;		//當前整數
	m_dCurNumber=0.0;	//當前實數
	m_curElement=E_NULL;//當前ZElement
	m_iCount=0;			//源代碼字符計數
	m_iLine=0;			//源代碼行計數
	m_iLevel=0;

	m_fout.open(m_strCppFile);
	m_fout<<"// "<<m_strCppFile<<"\n";
	if(m_strFile=="")
		m_fout<<"// FC2.2 翻譯產生\n";
	else
		m_fout<<"// FC2.2 翻譯 “"<<m_strFile<<"” 產生\n";
	m_fout<<"// 版權所有 ZKF 2003.05\n";
	m_fout<<"\n";
	m_fout<<"// 注意:請檢查所定義的數組的長度,若不是定值請改寫為動態申請形式\n";
	m_fout<<"\n";
	m_fout<<"#include <iostream.h>\n";
	m_fout<<"#include <stdlib.h>\n";
	if(m_bOutRuntime)
	{
		m_fout<<"#include <time.h>\n";
		m_fout<<"\n";
		m_fout<<"// 下邊兩個全局變量用以統計程序運行時間;\n";
		m_fout<<"// 若main函數中使用了return語句或程序中調用了exit()函數,將無法統計程序運行時間;\n";
		m_fout<<"// 如果不需要統計程序運行時間,請刪除下一行,并刪除程序中使用了這兩個變量的所有語句\n";
		m_fout<<"clock_t tStart,tElapse;\n";
	}
	if(!m_bBlankLine)
		m_fout<<"\n";

	if(!GetElement())//獲取第一個函數的返回類型
		return;
	while(1)//循環處理函數
	{
		if(m_curElement==E_FILEEND)
			break;
		if(m_bBlankLine)
			m_fout<<"\n";
		TrsFunction();//獲取第一個函數的返回類型
	}
	m_fout.close();
	MessageBox("“"+m_strFile+"” 已經成功的翻譯到 “"+m_strCppFile+"”。","FC 2.2",MB_OK|MB_ICONINFORMATION);
}

void CFCDlg::TrsFunction(void)
{
	switch(m_curElement)
	{
	case E_VOID:
		m_fout<<"void ";
		break;
	case E_INT:
		m_fout<<"int ";
		break;
	case E_DOUBLE:
		m_fout<<"double ";
		break;
	}
	GetElement();//獲取函數名
	m_fout<<m_curIdent;
	m_bMainFunction= (strcmp(m_curIdent,"main")==0);
	GetElement();//獲取“(”
	m_fout<<"(";
	GetElement();//獲取第一個函數參數的類型或“)”
	if(m_curElement==E_RPAREN)
		m_fout<<"void";
	else
	{
		while(1)
		{
			switch(m_curElement)
			{
			case E_INT:
				m_fout<<"int ";
				break;
			case E_DOUBLE:
				m_fout<<"double ";
				break;
			}
			GetElement();//獲取參數名
			m_fout<<m_curIdent;
			GetElement();//獲取“,”或“)”
			if(m_curElement==E_RPAREN)
				break;
			m_fout<<",";
			GetElement();//獲取參數類型
		}
	}
	m_fout<<")\n";
	GetElement();//獲取“{”
	TrsMultStat();
}

void CFCDlg::TrsStatement()
{
	switch(m_curElement)
	{
	case E_OUTPUT:
		TrsOutput();
		break;
	case E_INPUT:
		TrsInput();
		break;
	case E_INT:
	case E_DOUBLE:
		TrsDefine();
		break;
	case E_CONTINUE:
	case E_BREAK:
	case E_EXIT:
	case E_RETURN:
		TrsSpecial();
		break;
	case E_IF:
		TrsIf();
		break;
	case E_WHILE:
		TrsWhile();
		break;
	case E_DO:
		TrsDoWhile();
		break;
	case E_SWITCH:
		TrsSwitch();
		break;
	case E_BEGIN:
		TrsMultStat();
		break;
	case E_IDENT:
		SpaceBack();
		m_fout<<m_curIdent;
		GetElement();
		if(m_curElement==E_LPAREN)
		{
			TrsParameter();
			m_fout<<";\n";
			GetElement();
			break;
		}
		if(m_curElement==E_LSUB)
		{
			m_fout<<"[";
			GetElement();
			TrsExpression();
			m_fout<<"]";
			GetElement();
		}
		OutOperator("=");
		GetElement();
		TrsExpression();
		m_fout<<";\n";
		GetElement();
		break;
	}
}

void CFCDlg::TrsMultStat()
{
	SpaceBack();
	m_fout<<"{\n";
	m_iLevel++;
	if(m_bMainFunction)
	{
		m_bMainFunction=FALSE;
		if(m_bOutPrecision)
		{
			SpaceBack();
			m_fout<<"// 下一行設置輸出精度,如果需要,可以將括號內的";
			m_fout<<m_strPrecision<<"改為0到15的任意整數值\n";
			SpaceBack();
			m_fout<<"cout.precision("<<m_strPrecision<<");\n\n";
		}
		if(m_bOutRuntime)
		{
			SpaceBack();
			m_fout<<"// 下兩行初始化程序運行計時\n";
			SpaceBack();
			m_fout<<"::tStart=clock();\n";
			SpaceBack();
			m_fout<<"::tElapse=0;\n";
			m_fout<<"\n";
		}
		GetElement();
		while(m_curElement!=E_END)
			TrsStatement();
		if(m_bOutRuntime)
		{
			m_fout<<"\n";
			SpaceBack();
			m_fout<<"// 輸出程序用時統計結果\n";
			SpaceBack();
			m_fout<<"cout<<\"\\n程序執行用時 \"<<clock()+::tElapse-::tStart<<\" 毫秒\\n\";\n";
		}
		if(m_bExitWait)
		{
			m_fout<<"\n";
			SpaceBack();
			m_fout<<"// 下三行的作用是在程序結束前等待用戶輸入任意字符,\n";
			SpaceBack();
			m_fout<<"// 以方便用戶查看程序運行結果,如不需要,請刪除之\n";
			SpaceBack();
			m_fout<<"cout<<\"\\n\";\n";
			SpaceBack();
			m_fout<<"cout.flush();\n";
			SpaceBack();
			m_fout<<"system(\"pause\");\n";
		}
		m_iLevel--;
		SpaceBack();
		m_fout<<"}\n";
		m_bMainFunction=FALSE;
	}
	else
	{
		GetElement();
		while(m_curElement!=E_END)
			TrsStatement();
		m_iLevel--;
		SpaceBack();
		m_fout<<"}\n";
	}
	GetElement();
}

void CFCDlg::TrsOutput()
{
	SpaceBack();
	m_fout<<"cout";
	OutOperator("<<");
	while(1)
	{
		GetElement();
		if(m_curElement==E_STRING)
		{
			m_fout<<"\"";
			int i,length=m_curString.GetLength();
			for(i=0;i<length;i++)
			{
				switch(m_curString[i])
				{
				case '\"':
					m_fout<<"\\\"";
					break;
				case '\r':
					break;
				case '\n':
					m_fout<<"\\n";
					break;
				case '\\':
					m_fout<<"\\\\";
					break;
				default:
					m_fout<<m_curString[i];
					break;
				}
			}
			m_fout<<"\"";
			GetElement();
		}
		else
			TrsExpression();
		if(m_curElement==E_SEMICOLON)
			break;
		OutOperator("<<");
	}
	m_fout<<";\n";
	GetElement();
}

void CFCDlg::TrsDefine()
{
	SpaceBack();
	switch(m_curElement)
	{
	case E_INT:
		m_fout<<"int ";
		break;
	case E_DOUBLE:
		m_fout<<"double ";
		break;
	}
	GetElement();
	while(1)
	{
		m_fout<<m_curIdent;
		GetElement();
		switch(m_curElement)
		{
		case E_BECOMES:
			OutOperator("=");
			GetElement();
			TrsExpression();
			break;
		case E_LSUB:
			m_fout<<"[";
			GetElement();
			TrsExpression();
			m_fout<<"]={0}";
			GetElement();
			break;
		default:
			OutOperator("=");
			m_fout<<"0";
			break;
		}
		if(m_curElement==E_SEMICOLON)
			break;
		m_fout<<",";
		GetElement();
	}
	m_fout<<";\n";
	GetElement();
}

void CFCDlg::TrsInput()
{
	if(m_bOutRuntime)
	{
		SpaceBack();
		m_fout<<"::tElapse+=clock()-::tStart;\n";
	}
	SpaceBack();
	m_fout<<"cin";
	OutOperator(">>");
	GetElement();
	while(1)
	{
		m_fout<<m_curIdent;
		GetElement();
		if(m_curElement==E_LSUB)
		{
			m_fout<<"[";
			TrsExpression();
			m_fout<<"]";
			GetElement();
		}
		if(m_curElement==E_SEMICOLON)
			break;
		OutOperator(">>");
		GetElement();
	}
	m_fout<<";\n";
	if(m_bOutRuntime)
	{
		SpaceBack();
		m_fout<<"::tStart=clock();\n";
	}
	GetElement();
}

void CFCDlg::TrsExpression()
{
	switch(m_curElement)
	{
	case E_MINUS:
		OutOperator("-");
		//此處沒有break
	case E_PLUS:
		GetElement();
		break;
	}
	TrsTerm();
	while(m_curElement==E_MINUS || m_curElement==E_PLUS)
	{
		switch(m_curElement)
		{
		case E_MINUS:
			OutOperator("-");
			break;
		case E_PLUS:
			OutOperator("+");
			break;
		}
		GetElement();
		TrsTerm();
	}
}

void CFCDlg::TrsTerm()
{
	while(1)
	{
		TrsFactor();
		switch(m_curElement)
		{
		case E_TIMES:
			OutOperator("*");
			break;
		case E_SLASH:
			OutOperator("/");
			break;
		case E_MOD:
			OutOperator("%");
			break;
		default:return;
		}
		GetElement();
	}
}

void CFCDlg::TrsFactor()
{
	switch(m_curElement)
	{
	case E_INUMBER:
		m_fout<<m_nCurNumber;
		GetElement();
		break;
	case E_DNUMBER:
		m_fout<<m_dCurNumber;
		GetElement();
		break;
	case E_INT:
	case E_DOUBLE:
		if(m_curElement==E_INT)
			m_fout<<"(int)";
		else
			m_fout<<"(double)";
		GetElement();
		//此處不需要break
	case E_LPAREN:
		m_fout<<"(";
		GetElement();
		TrsExpression();
		m_fout<<")";
		GetElement();
		break;
	case E_IDENT:/*//*/
		m_fout<<m_curIdent;
		GetElement();
		if(m_curElement==E_LSUB)
		{
			m_fout<<"[";
			GetElement();
			TrsExpression();
			m_fout<<"]";
			GetElement();
		}
		else if(m_curElement==E_LPAREN)
			TrsParameter();
		break;
	}
}

void CFCDlg::TrsParameter()
{
	m_fout<<"(";
	GetElement();
	while(1)
	{
		TrsExpression();
		if(m_curElement==E_RPAREN)
			break;
		m_fout<<",";
		GetElement();
	}
	m_fout<<")";
	GetElement();
}

void CFCDlg::TrsSpecial(void)
{
	SpaceBack();
	switch(m_curElement)
	{
	case E_BREAK:
		m_fout<<"break;\n";
		GetElement();
		GetElement();
		break;
	case E_CONTINUE:
		m_fout<<"continue;\n";
		GetElement();
		GetElement();
		break;
	case E_EXIT:
		m_fout<<"exit(0);\n";
		GetElement();
		GetElement();
		break;
	case E_RETURN:
		GetElement();
		if(m_curElement==E_SEMICOLON)
			m_fout<<"return;\n";
		else
		{
			m_fout<<"return ";
			TrsExpression();
			m_fout<<";\n";
		}
		GetElement();
		break;
	}
}

void CFCDlg::TrsIf()
{
	SpaceBack();
	m_fout<<"if(";
	GetElement();
	GetElement();
	TrsCondition();
	m_fout<<")\n";
	GetElement();
	if(m_curElement==E_BEGIN)
		TrsMultStat();
	else
	{
		m_iLevel++;
		TrsStatement();
		m_iLevel--;
	}
	if(m_curElement!=E_ELSE)
		return;
	SpaceBack();
	m_fout<<"else\n";
	GetElement();
	if(m_curElement==E_BEGIN)
		TrsStatement();
	else
	{
		m_iLevel++;
		TrsStatement();
		m_iLevel--;
	}
}

void CFCDlg::TrsCondition()
{
	while(1)
	{
		TrsAndCondition();
		if(m_curElement!=E_OR)
			return;
		m_fout<<" || ";
		GetElement();
	}
}

void CFCDlg::TrsAndCondition()
{
	while(1)
	{
		TrsSubCondition();
		if(m_curElement!=E_AND)
			return;
		m_fout<<" && ";
		GetElement();
	}
}

void CFCDlg::TrsSubCondition()
{
	if(m_curElement==E_NOT)
	{
		OutOperator("!");
		GetElement();
	}
	if(m_curElement==E_LPAREN)
	{
		m_fout<<"(";
		TrsCondition();
		m_fout<<")";
		GetElement();
	}
	else
	{
		TrsExpression();
		switch(m_curElement)
		{
		case E_EQUAL:
			OutOperator("==");
			break;
		case E_NOTEQUAL:
			OutOperator("!=");
			break;
		case E_LESS:
			OutOperator("<");
			break;
		case E_LESSEQUAL:
			OutOperator("<=");
			break;
		case E_GREAT:
			OutOperator(">");
			break;
		case E_GREATEQUAL:
			OutOperator(">=");
			break;
		}
		GetElement();
		TrsExpression();
	}
}

void CFCDlg::TrsWhile()
{
	SpaceBack();
	m_fout<<"while(";
	GetElement();
	GetElement();
	if(m_curElement==E_RPAREN)
		m_fout<<"1)\n";
	else
	{
		TrsCondition();
		m_fout<<")\n";
	}
	GetElement();
	if(m_curElement==E_BEGIN)
		TrsMultStat();
	else
	{
		m_iLevel++;
		TrsStatement();
		m_iLevel--;
	}
}

void CFCDlg::TrsDoWhile()
{
	SpaceBack();
	m_fout<<"do\n";
	GetElement();
	if(m_curElement==E_BEGIN)
		TrsMultStat();
	else
	{
		m_iLevel++;
		TrsStatement();
		m_iLevel--;
	}
	SpaceBack();
	m_fout<<"while(";
	GetElement();
	GetElement();
	TrsCondition();
	m_fout<<");\n";
	GetElement();
	GetElement();
}

void CFCDlg::TrsSwitch()
{
	SpaceBack();
	m_fout<<"switch(";
	GetElement();//獲取(
	GetElement();//獲取條件的第一個 ZElement
	TrsExpression();
	m_fout<<")\n";
	GetElement();//獲取{
	SpaceBack();
	m_fout<<"{\n";
	m_iLevel++;
	GetElement();//獲取case
	while(1)
	{
		if(m_curElement==E_CASE)
		{
			m_iLevel--;
			SpaceBack();
			m_fout<<"case ";
			GetElement();//獲取case后的整數
			m_fout<<m_nCurNumber;
			GetElement();//獲取冒號
			m_fout<<":\n";
			m_iLevel++;
			GetElement();
		}
		else if(m_curElement==E_DEFAULT)
		{
			m_iLevel--;
			SpaceBack();
			GetElement();//獲取冒號
			m_fout<<"default:\n";
			m_iLevel++;
			GetElement();
		}
		else if(m_curElement==E_END)
		{
			m_iLevel--;
			SpaceBack();
			m_fout<<"}\n";
			GetElement();
			return;
		}
		else
			TrsStatement();
	}
}

void CFCDlg::OutOperator(char op[])
{
	if(m_bOpSpace)m_fout<<' ';
	m_fout<<op;
	if(m_bOpSpace)m_fout<<' ';
}

void CFCDlg::SpaceBack()
{
	int i;
	if(m_iBackChoice==0)
		for(i=m_iLevel;i>0;i--)
			m_fout<<'\t';
	else
		for(int i=m_iBack*m_iLevel;i>0;i--)
			m_fout<<' ';
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品妹子av| 粉嫩蜜臀av国产精品网站| 国精产品一区一区三区mba桃花| 盗摄精品av一区二区三区| 欧美视频一区二区在线观看| 国产片一区二区| 男男gaygay亚洲| 91成人在线观看喷潮| 久久精品夜夜夜夜久久| 视频一区视频二区在线观看| 99热精品一区二区| 亚洲精品在线网站| 美女国产一区二区| 欧美色综合天天久久综合精品| 欧美极品xxx| 国产真实乱对白精彩久久| 欧美人牲a欧美精品| 亚洲一区二三区| 色诱亚洲精品久久久久久| 国产午夜精品一区二区三区视频| 日韩福利视频网| 欧美久久久影院| 亚洲午夜在线观看视频在线| 91美女片黄在线观看| 国产精品视频一区二区三区不卡| 精品在线观看免费| 欧美一区二区日韩| 日韩av中文字幕一区二区 | 久久久99精品免费观看| 日韩精品电影在线观看| 色综合久久综合网欧美综合网 | 国产麻豆精品theporn| 91精品国产麻豆国产自产在线| 亚洲人成在线观看一区二区| 成人av电影免费在线播放| 国产视频亚洲色图| 成人免费的视频| 国产精品久久久久久久久动漫 | 日韩一区二区三区三四区视频在线观看| 亚洲激情自拍视频| 欧洲视频一区二区| 亚洲第一在线综合网站| 欧美精品第一页| 麻豆精品一区二区综合av| 欧美成人猛片aaaaaaa| 国产一区二区三区综合| 久久久久久毛片| av午夜一区麻豆| 亚洲一区在线视频观看| 91精品国产综合久久精品图片| 喷水一区二区三区| 欧美成人精品1314www| 国产很黄免费观看久久| 国产精品久久久久久户外露出| 91视频国产资源| 日韩va亚洲va欧美va久久| 欧美大尺度电影在线| 国产91丝袜在线18| 亚洲精品伦理在线| 日韩一区二区三区视频| 国产69精品久久777的优势| 亚洲欧美日韩国产另类专区| 欧美日韩dvd在线观看| 国产精品综合久久| 亚洲男人电影天堂| 精品第一国产综合精品aⅴ| www.亚洲精品| 日本欧美在线看| 国产日韩欧美综合一区| 欧美日韩黄色一区二区| 国产精品影音先锋| 午夜天堂影视香蕉久久| 国产视频一区二区在线观看| 欧美日精品一区视频| 狠狠色丁香久久婷婷综合丁香| 国产精品二三区| 欧美成人精品福利| 在线欧美小视频| 国产大陆a不卡| 午夜电影久久久| 亚洲欧洲日韩一区二区三区| 91麻豆精品久久久久蜜臀| 99r国产精品| 激情国产一区二区| 视频一区二区中文字幕| 亚洲日穴在线视频| 精品蜜桃在线看| 欧美日韩午夜在线视频| 成人美女视频在线观看18| 粉嫩av一区二区三区粉嫩| 亚洲中国最大av网站| 国产精品伦理一区二区| 久久免费视频一区| 6080午夜不卡| 91久久精品一区二区| 成人av资源站| 国产美女精品人人做人人爽| 日本v片在线高清不卡在线观看| 亚洲免费三区一区二区| 国产精品三级在线观看| 26uuu国产一区二区三区| 91精品婷婷国产综合久久性色| 99精品视频一区二区| 成人黄色777网| 国产黄色91视频| 国产高清在线精品| 精品亚洲国产成人av制服丝袜| 日韩国产在线一| 亚州成人在线电影| 性欧美大战久久久久久久久| 亚洲免费在线观看视频| 亚洲欧洲国产日韩| 中文字幕一区二区5566日韩| 国产视频一区二区在线| 日本一区二区免费在线| 久久人人超碰精品| 国产欧美一区二区精品仙草咪| www久久久久| 国产亚洲va综合人人澡精品| 久久精品视频一区二区| 欧美视频精品在线观看| 精品av综合导航| 中文字幕av一区二区三区高| 国产精品视频第一区| 日韩精品一区二区三区四区视频| 欧美中文一区二区三区| 国产成人免费在线视频| 国内精品视频一区二区三区八戒| 日韩高清不卡一区二区| 免费看日韩精品| 亚洲综合色自拍一区| 天天免费综合色| 蜜臀久久99精品久久久久宅男| 亚洲国产精品激情在线观看| 国产欧美一区二区三区沐欲| 久久久综合网站| 久久综合九色欧美综合狠狠| 7777女厕盗摄久久久| 6080国产精品一区二区| 粉嫩aⅴ一区二区三区四区 | 欧美国产精品劲爆| 亚洲一区二区精品久久av| 欧美日韩aaa| 亚洲国产精品麻豆| 从欧美一区二区三区| 成人av网站免费| 成人av在线播放网址| 在线看国产一区二区| 欧美日韩黄色影视| 777亚洲妇女| 国产精品五月天| 日本不卡一二三区黄网| 精品在线你懂的| 不卡在线观看av| 欧美日韩国产精品成人| 日韩情涩欧美日韩视频| 久久网站最新地址| 亚洲天堂中文字幕| 精品伊人久久久久7777人| 白白色亚洲国产精品| 欧美视频一区二| 久久久久久久久久久电影| 亚洲精品乱码久久久久久久久 | 99久久精品国产导航| www.av精品| 精品久久久久一区| 亚洲与欧洲av电影| 日韩亚洲欧美一区二区三区| 一区二区日韩电影| 蜜臀av性久久久久av蜜臀妖精| 国产精品不卡在线| 三级欧美在线一区| 欧美日韩三级一区二区| 国产精品成人在线观看| 国产一区二区剧情av在线| 91精品国产综合久久香蕉麻豆| 国产精品乱人伦| 成人免费高清视频| 亚欧色一区w666天堂| 狠狠色伊人亚洲综合成人| 欧美日韩和欧美的一区二区| 中文字幕一区二区三区蜜月| 欧美日韩国产高清一区二区| 国产精品白丝jk白祙喷水网站| 亚洲第一二三四区| 欧美精品一区二区三区蜜臀 | 成人综合在线网站| 大尺度一区二区| 亚洲第一久久影院| 日韩一区二区三区在线| 日韩国产欧美视频| 精品捆绑美女sm三区| 国产大陆精品国产| 一区二区在线观看视频在线观看| 91免费国产在线观看| 免费黄网站欧美| 亚洲人成伊人成综合网小说| 欧美二区三区91| 天堂一区二区在线免费观看| 日本高清不卡一区|