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

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

?? fc-interactive.cpp

?? 編譯原理的一個課程設計
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "stdafx.h"
#include "FC.h"
#include "FCDlg.h"

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

void CFCDlg::On_AboutEdit()
{
	m_source=m_strEdit;
	m_iStatus=3;
	m_strEdit="\
FC語言是C語言的一個子集,實現了C語言中的一些簡單的功能。\r\n\
\r\n\
判斷語句:if-else,其中else部分可有可無,并且else與其前邊距\r\n\
其最近的且未配對的if匹配。\r\n\
循環語句:while,若條件永為真則可省略條件部分,寫為while()\r\n\
          do-while,循環體至少執行一次。\r\n\
開關語句:switch-case-default,只有整型值才能作為開關表達式\r\n\
,若case分支中沒有用break語句跳出,程序流程將進入下一個case\r\n\
分支中,default分支只能出現在所有case分支后。\r\n\
判斷語句、循環語句和開關語句可以嵌套使用,在各嵌套層中,可\r\n\
以使用continue結束最內層循環,使用break語句結束最內層循環或\r\n\
開關語句,另外可以使用return語句結束函數,可以使用exit語句\r\n\
結束程序。\r\n\
輸入輸出:使用input語句進行輸入,output語句進行輸出。\r\n\
\r\n\
一個程序中必須有且只能有一個void main()函數,程序將以此函數\r\n\
為運行起點!\r\n\
一個程序中至多能有32個函數,函數可以向前調用(即先定義后調\r\n\
用),也可以自遞歸調用!\r\n\
一個函數中至多能有16個參數,參數采用值調用!\r\n\
一個函數中至多能有128個標識符,不同函數間標識符可以重名,同\r\n\
一函數的同一嵌套層次內標識符不能重名,不同嵌套層次內標識符\r\n\
可以重名。\r\n\
一個標識符至多能有31個字符,必須是由字母或下劃線打頭,字母\r\n\
數字下劃線構成的串;不區分大小寫!\r\n\
\r\n\
字符串支持轉義字符:\"\\n\"表示回車符,\"\\t\"表示橫向制表符,\"\\\"\"\r\n\
表示雙引號,\"\\\\\"表示\"\\\"字符,另外,字符串在行尾加入\"\\\"字符\r\n\
則可一個字符串分多行表示。\r\n\
\r\n\
數據類型有整型數(int)、實型數(double)、整型一維數組(int[])、\r\n\
實型一維數組(double[])。\r\n\
算術運算符有加(+)減(-)乘(*)除(/)余(%),余運算(%)的左右運算\r\n\
數必須都是整型數。\r\n\
比較運算符有等于(==)不等(!=)大于(>)大于等于(>=)小于(<)小于\r\n\
等于(<=)。\r\n\
邏輯運算符有與(&&)或(||)非(!)。\r\n\
\r\n\
編譯器將忽視源代碼中的所有空格、tab符、換行符、“//”開頭的\r\n\
一行注釋以及“/*”和“*/”括內的多行注釋。\r\n\
\r\n\
程序中的變量與數組的初始值均為0,函數的默認返回值為0。\r\n";
	((CEdit*)GetDlgItem(IDC_EDIT))->SetReadOnly(TRUE);
	GetDlgItem(IDB_OPEN)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_SAVE_AS)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_RUN)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_CLEAR)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STATIC_PRECISION)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_PRECISION)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_POSITION)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_SET_POSITION)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_TRANSLATE)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_ABOUT_EDIT)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_ABOUT_GRM)->ShowWindow(SW_HIDE);
	GetDlgItem(ID_APP_ABOUT)->ShowWindow(SW_HIDE);
	GetDlgItem(IDCANCEL)->SetWindowText("返回");
	SetWindowText("FC 2.2 編輯說明");
}

void CFCDlg::On_AboutGrm()
{
	m_source=m_strEdit;
	m_iStatus=3;
	m_strEdit="\
<程序>  ::={<函數>}\r\n\
<函數>  ::=<類型><標識符> \"(\" [<類型><標識符>{,<類型><標識符>}] \")\" \"{\" {語句} \"}\"\r\n\
<語句>  ::=<定義語句> |\r\n\
       <輸入語句> |\r\n\
       <輸出語句> |\r\n\
       <選擇語句> |\r\n\
       <循環語句> |\r\n\
       <重復語句> |\r\n\
       <開關語句> |\r\n\
       <賦值語句> |\r\n\
       <復合語句> |\r\n\
       <函數調用>; |\r\n\
       <特殊語句>\r\n\
<定義語句>::=<類型><標識符>[( \"=\" <表達式>) | ( \"[\" <表達式> \"]\" )]{,<類型><標識符>[( \"=\" <表達式>) | ( \"[\" <表達式> \"]\" )]};\r\n\
<輸入語句>::=\"input\" <標識符>{,<標識符>};\r\n\
<輸出語句>::=\"output\" <輸出對象>{,<輸出對象>};\r\n\
<選擇語句>::=\"if\" \"(\" [<條件>] \")\" <語句>[ \"else\" <語句>]\r\n\
<循環語句>::=\"while\" \"(\" <條件> \")\" <語句>\r\n\
<重復語句>::=\"do\" <語句> \"while\" \"(\" <條件> \")\" \";\"\r\n\
<開關語句>::=\"switch\" \"(\"<表達式>\")\" \"{\"{開關分支>}[<開關缺省>]\r\n\
<開關分支>::=\"case\" <整數> \":\" {<語句>}\r\n\
<開關缺省>::=\"default\" \":\"{<語句>}\r\n\
<賦值語句>::=<標識符> \"=\" <表達式>;\r\n\
<復合語句>::=\"{\" {語句} \"}\"\r\n\
<函數調用>::=<標識符> \"(\" [<表達式>{,<表達式>}] \")\" \r\n\
<特殊語句>::=\"continue\" |\r\n\
       \"break\" |\r\n\
       \"exit\" |\r\n\
       \"return\" [表達式];\r\n\
<類型>  ::=\"int\" |\r\n\
       \"double\"\r\n\
<標識符> ::=<字母>{<數字> | <字母>}\r\n\
<表達式> ::=[ \"+\" | \"-\" ]<項>{( \"+\" | \"-\" )<項>}\r\n\
<輸出對象>::=<表達式> |\r\n\
       <字符串>\r\n\
<項>   ::=<因子>{( \"*\" | \"/\" | \"%\" )<因子>}\r\n\
<因子>  ::=<標識符>[ \"[\" <表達式> \"]\" ] |\r\n\
       <數> |\r\n\
       \"(\" <表達式> \")\" |\r\n\
       <函數調用> |\r\n\
       ( \"int\" | \"double\" ) \"(\" <表達式> \")\"\r\n\
<條件>  ::=<條件與項>{ \"||\" <條件與項>}\r\n\
<條件與項>::=<條件子項>{ \"&&\" <條件子項>}\r\n\
<條件子項>::=[ \"!\" ] \"(\" <條件> \")\" |\r\n\
       <表達式>( \"==\" | \"!=\" | \"<=\" | \"<\" | \">=\" | \">\" )<表達式>\r\n";
	m_strEdit+="\
<字符串> ::=\"{任意可見字符 | 轉義字符}\"\r\n\
<整數>  ::={數字}\r\n\
<數>   ::={數字}[ \".\" {數字}]\r\n\
<字母>  ::=a|b|c|…|X|Y|Z\r\n\
<數字>  ::=0|1|…|8|9\r\n";
	((CEdit*)GetDlgItem(IDC_EDIT))->SetReadOnly(TRUE);
	GetDlgItem(IDB_OPEN)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_SAVE_AS)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_RUN)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_CLEAR)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STATIC_PRECISION)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_PRECISION)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_POSITION)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_SET_POSITION)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_TRANSLATE)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_ABOUT_EDIT)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_ABOUT_GRM)->ShowWindow(SW_HIDE);
	GetDlgItem(ID_APP_ABOUT)->ShowWindow(SW_HIDE);
	GetDlgItem(IDCANCEL)->SetWindowText("返回");
	SetWindowText("FC 2.2 語法說明");
}

void CFCDlg::On_Compile()
{
	if(!m_bSaved)
	{
		CString message;
		if(m_strFile=="")
			message="源代碼沒有保存,要保存嗎?";
		else
			message=m_strFile+" 的內容已經改變,要保存嗎?";
		switch(MessageBox(message,"FC 2.2",MB_YESNOCANCEL|MB_ICONQUESTION))
		{
		case IDYES:
			On_SaveSource();
			break;
		case IDNO:
			break;
		case IDCANCEL:
			return;
		}
	}
	m_source=m_strEdit;
	m_SourceLength=m_source.GetLength();
	m_iStatus=2;
	m_strEdit="";
	((CEdit*)GetDlgItem(IDC_EDIT))->SetReadOnly(TRUE);
	GetDlgItem(IDB_SAVE_AS)->SetWindowText("保存結果");
	GetDlgItem(IDB_RUN)->SetWindowText("執行");
	GetDlgItem(IDB_CLEAR)->SetWindowText("清空");
	GetDlgItem(IDC_STATIC_PRECISION)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_PRECISION)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_POSITION)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_SET_POSITION)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_TRANSLATE)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_ABOUT_EDIT)->ShowWindow(SW_HIDE);
	GetDlgItem(IDB_ABOUT_GRM)->ShowWindow(SW_HIDE);
	GetDlgItem(ID_APP_ABOUT)->ShowWindow(SW_HIDE);
	GetDlgItem(IDCANCEL)->SetWindowText("返回");
	if(m_strFile=="")
		SetWindowText("FC 2.2 解釋器");
	else
		SetWindowText("FC 2.2 解釋器 - "+m_strFile);
	if(Compile())
		m_bCompiled=TRUE;
	if(m_bCompiled && m_iErrorCount==0)
	{
		m_strEdit="";
		UpdateData(FALSE);
		Interpret();
	}
	else if(m_iStatus==2)
	{
		m_strEdit.Format("源代碼中發現 %d 處錯誤,無法解釋執行,請修正源代碼\r\n",m_iErrorCount);
		UpdateData(FALSE);
	}
}

void CFCDlg::On_Exit()
{
	if(!m_bSaved)
	{
		CString message;
		if(m_strFile=="")
			message="源代碼沒有保存,要保存嗎?";
		else
			message=m_strFile+" 的內容已經改變,要保存嗎?";
		switch(MessageBox(message,"FC 2.2",MB_YESNOCANCEL|MB_ICONQUESTION))
		{
		case IDYES:
			On_SaveSource();
			break;
		case IDNO:
			break;
		case IDCANCEL:
			return;
		}
	}
	CDialog::OnCancel();
}

void CFCDlg::On_ExitAbout()
{
	m_iStatus=1;
	m_strEdit=m_source;
	((CEdit*)GetDlgItem(IDC_EDIT))->SetReadOnly(FALSE);
	GetDlgItem(IDB_OPEN)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_SAVE_AS)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_RUN)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_CLEAR)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_POSITION)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_SET_POSITION)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_TRANSLATE)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_ABOUT_EDIT)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_ABOUT_GRM)->ShowWindow(SW_SHOW);
	GetDlgItem(ID_APP_ABOUT)->ShowWindow(SW_SHOW);
	GetDlgItem(IDCANCEL)->SetWindowText("退出");
	CString WindowText="FC 2.2";
	if(m_strFile!="")
		WindowText+=" - "+m_strFile;
	if(!m_bSaved)
		WindowText+=" *";
	SetWindowText(WindowText);
}

void CFCDlg::On_ExitCompile()
{
	m_iStatus=1;
	m_strEdit=m_source;
	((CEdit*)GetDlgItem(IDC_EDIT))->SetReadOnly(FALSE);
	GetDlgItem(IDB_SAVE_AS)->SetWindowText("另存為");
	GetDlgItem(IDB_RUN)->SetWindowText("編譯執行");
	GetDlgItem(IDB_CLEAR)->SetWindowText("新建");
	GetDlgItem(IDC_STATIC_PRECISION)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_PRECISION)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_POSITION)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_SET_POSITION)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_TRANSLATE)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_ABOUT_EDIT)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_ABOUT_GRM)->ShowWindow(SW_SHOW);
	GetDlgItem(ID_APP_ABOUT)->ShowWindow(SW_SHOW);
	GetDlgItem(IDCANCEL)->SetWindowText("退出");
	CString WindowText="FC 2.2";
	if(m_strFile!="")
		WindowText+=" - "+m_strFile;
	if(!m_bSaved)
		WindowText+=" *";
	SetWindowText(WindowText);
}

void CFCDlg::On_ExitTranslate()
{
	m_iStatus=1;
	m_strEdit=m_source;
	((CEdit*)GetDlgItem(IDC_EDIT))->SetReadOnly(FALSE);
	GetDlgItem(IDB_OPEN)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_SAVE)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_SAVE_AS)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_RUN)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_CLEAR)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_POSITION)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_SET_POSITION)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_TRANSLATE)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_ABOUT_EDIT)->ShowWindow(SW_SHOW);
	GetDlgItem(IDB_ABOUT_GRM)->ShowWindow(SW_SHOW);
	GetDlgItem(ID_APP_ABOUT)->ShowWindow(SW_SHOW);
	GetDlgItem(IDCANCEL)->SetWindowText("退出");
	CString WindowText="FC 2.2";
	if(m_strFile!="")
		WindowText+=" - "+m_strFile;
	if(!m_bSaved)
		WindowText+=" *";
	SetWindowText(WindowText);
}

void CFCDlg::On_Interpret()
{
	if(m_bCompiled && m_iErrorCount==0)
	{
		m_strEdit="";
		UpdateData(FALSE);
		Interpret();
	}
	else
	{
		m_strEdit.Format("源代碼中發現 %d 處錯誤,無法解釋執行,請修正源代碼\r\n",m_iErrorCount);
		UpdateData(FALSE);
	}
}

void CFCDlg::On_OpenCode()
{
	int i,t;
	char ch;
	CString FileName;
	CFileDialog dlg(TRUE,"fcr",NULL,
		OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		"FC中間代碼文件 (*.fcr)|*.fcr||");
	if(dlg.DoModal()!=IDOK)
		return;
	FileName=dlg.GetFileName();
	CFile fin(FileName,CFile::modeRead);
	char buf[5];
	fin.Read(buf,4);
	if(buf[0]!='F' || buf[1]!='C' || buf[2]!='R')
	{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产毛片精品视频| 94色蜜桃网一区二区三区| 国产精品美女一区二区| 欧美日韩激情一区二区| 成人听书哪个软件好| 午夜精品一区在线观看| 国产人妖乱国产精品人妖| 欧美日韩国产色站一区二区三区| 国产成人欧美日韩在线电影| 亚洲va韩国va欧美va| 亚洲欧美偷拍三级| 久久久久久毛片| 欧美一卡二卡三卡| 欧美主播一区二区三区美女| 成人在线综合网站| 久久成人18免费观看| 一区二区三区四区不卡视频| 国产精品免费视频网站| 久久这里只有精品6| 69久久99精品久久久久婷婷| 色婷婷久久久综合中文字幕| 国产麻豆成人传媒免费观看| 丝瓜av网站精品一区二区| 亚洲欧美日韩一区| 久久久精品一品道一区| 精品日韩在线观看| 日韩一区二区三区电影在线观看| 欧美在线小视频| 91福利视频网站| 一本色道亚洲精品aⅴ| 不卡一区中文字幕| 成人在线视频一区| 国产乱国产乱300精品| 久久精品国产亚洲a| 日本成人在线电影网| 午夜成人免费电影| 日韩精品三区四区| 日本不卡一二三区黄网| 青娱乐精品在线视频| 蜜桃一区二区三区在线观看| 蜜乳av一区二区| 秋霞影院一区二区| 美腿丝袜亚洲色图| 国产一区二区剧情av在线| 精品一区二区成人精品| 美女视频黄频大全不卡视频在线播放| 日韩综合在线视频| 蜜桃av一区二区三区| 精品在线亚洲视频| 国产福利不卡视频| 北条麻妃一区二区三区| 99re在线视频这里只有精品| 色综合久久精品| 精品视频一区三区九区| 91精品国模一区二区三区| 日韩丝袜美女视频| 久久精品这里都是精品| 欧美极品xxx| 亚洲黄网站在线观看| 午夜亚洲福利老司机| 久久精品国产精品亚洲精品| 国产永久精品大片wwwapp| 成人永久aaa| 在线观看不卡视频| 日韩精品一区国产麻豆| 久久先锋资源网| 亚洲视频每日更新| 无码av中文一区二区三区桃花岛| 蜜臀av性久久久久av蜜臀妖精| 国产精品99久久久久久久vr| 99视频热这里只有精品免费| 欧洲精品视频在线观看| 欧美一区二区三区免费视频 | 蓝色福利精品导航| 国产精品中文有码| 91麻豆国产福利精品| 91精品国产福利| 国产精品丝袜黑色高跟| 亚洲图片欧美色图| 精品一区二区三区免费| 99视频热这里只有精品免费| 91超碰这里只有精品国产| 久久久亚洲欧洲日产国码αv| 亚洲欧美视频在线观看| 日本免费在线视频不卡一不卡二| 国产精品羞羞答答xxdd| 欧美日韩免费在线视频| 久久影音资源网| 亚洲欧美综合另类在线卡通| 午夜久久电影网| 粉嫩av一区二区三区粉嫩 | 欧美日韩mp4| 久久精品亚洲麻豆av一区二区| 亚洲精品亚洲人成人网| 极品少妇xxxx精品少妇| 91福利社在线观看| 中文字幕第一区二区| 午夜精品成人在线视频| 99精品视频在线免费观看| 日韩欧美一卡二卡| 亚洲精品国产精品乱码不99| 黄色小说综合网站| 精品视频在线视频| 国产精品第五页| 久久成人久久爱| 欧美精品粉嫩高潮一区二区| 国产精品美女www爽爽爽| 乱一区二区av| 欧美亚洲免费在线一区| 国产精品美女久久久久久久久久久| 手机精品视频在线观看| 91在线一区二区三区| 久久亚洲影视婷婷| 日韩精品五月天| 欧美色综合网站| 亚洲少妇中出一区| 大美女一区二区三区| 久久无码av三级| 日本女优在线视频一区二区| 欧美日韩亚洲综合在线| 亚洲男同性视频| 成人国产一区二区三区精品| 久久亚洲综合色一区二区三区| 三级影片在线观看欧美日韩一区二区 | 97精品国产97久久久久久久久久久久| 久久先锋影音av| 国内精品伊人久久久久av一坑| 91精品黄色片免费大全| 午夜久久福利影院| 欧美日韩视频在线一区二区| 一区二区三区欧美激情| 色域天天综合网| 一区二区三区精品久久久| 成人av电影在线观看| 久久久久久久久久久电影| 久久精品99久久久| 欧美成人综合网站| 九九精品视频在线看| 精品福利一区二区三区| 精彩视频一区二区三区| 久久一区二区视频| 成人在线视频一区| 国产精品久久久久影院老司| a亚洲天堂av| 亚洲视频在线一区| 日本久久一区二区三区| 一区二区久久久久| 欧美日韩卡一卡二| 日韩成人精品在线| 欧美成人女星排行榜| 狠狠狠色丁香婷婷综合激情| 精品奇米国产一区二区三区| 国产综合色视频| 日本一区二区在线不卡| 色天使久久综合网天天| 亚洲福利一区二区| 欧美一级欧美三级| 开心九九激情九九欧美日韩精美视频电影| 精品国产麻豆免费人成网站| 国产精品原创巨作av| 中文字幕欧美国产| 91美女片黄在线| 婷婷久久综合九色国产成人| 日韩一区二区三区视频在线| 国产另类ts人妖一区二区| 国产精品久久毛片a| 欧美性xxxxx极品少妇| 男人的天堂久久精品| 久久久不卡网国产精品一区| 国产成人午夜精品影院观看视频| 亚洲色图在线视频| 91精品国产综合久久福利| 国产一区三区三区| 一区二区高清免费观看影视大全 | 欧美电影免费观看高清完整版在线| 国产电影精品久久禁18| 亚洲一卡二卡三卡四卡五卡| 7777精品伊人久久久大香线蕉 | 中文字幕高清不卡| 欧美精品久久久久久久多人混战 | 麻豆国产91在线播放| 亚洲欧洲另类国产综合| 7777精品伊人久久久大香线蕉超级流畅| 国产真实乱子伦精品视频| 国产精品午夜免费| 在线成人午夜影院| 成人av先锋影音| 日本va欧美va欧美va精品| 国产精品夫妻自拍| 日韩精品在线看片z| 色综合天天狠狠| 国产精品一区二区在线看| 亚洲成av人片一区二区梦乃| 精品美女一区二区三区| 在线视频一区二区三| 国产suv精品一区二区883| 视频在线观看一区| 亚洲日本一区二区| 久久久亚洲精品一区二区三区| 欧美日韩视频在线观看一区二区三区|