亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产精品免费丝袜| 精品写真视频在线观看| 麻豆视频一区二区| 91免费视频网| 国产亚洲精品久| 青青青爽久久午夜综合久久午夜| 国产电影一区在线| 精品国产三级电影在线观看| 亚洲国产欧美日韩另类综合 | 激情六月婷婷综合| 欧美少妇xxx| 一区二区三区不卡在线观看 | 国产精品1区2区| 日韩丝袜情趣美女图片| 亚洲一区二区在线免费看| 91麻豆免费看| 亚洲天堂成人在线观看| 不卡一二三区首页| 国产精品嫩草影院com| 国产精品系列在线播放| 欧美成人精品福利| 久久精品国产在热久久| 日韩一区二区中文字幕| 91视频免费观看| 亚洲国产精品高清| 国产传媒一区在线| 亚洲国产高清在线观看视频| 国产成人午夜电影网| 国产日韩高清在线| 大桥未久av一区二区三区中文| 久久久夜色精品亚洲| 国产激情视频一区二区在线观看 | 亚洲精品一区二区三区香蕉| 麻豆免费看一区二区三区| 日韩欧美一区在线| 国产专区欧美精品| 国产欧美精品日韩区二区麻豆天美| 国产美女在线精品| 中文字幕在线观看不卡视频| 99久久久国产精品免费蜜臀| 亚洲另类色综合网站| 欧美在线看片a免费观看| 午夜视频一区在线观看| 欧美www视频| 处破女av一区二区| 一区二区成人在线视频 | 国产免费成人在线视频| 99久久久国产精品免费蜜臀| 一区二区三区日韩在线观看| 欧美日韩一区二区三区在线| 日本免费在线视频不卡一不卡二| 欧美电影免费观看高清完整版在线| 国产在线精品不卡| 亚洲免费观看高清完整版在线观看| 欧美性大战久久久| 国产在线观看一区二区| 亚洲欧美福利一区二区| 69堂国产成人免费视频| 国产二区国产一区在线观看| 亚洲精品高清在线观看| 日韩欧美激情在线| 91麻豆高清视频| 欧美三区在线观看| 精品在线观看免费| 日韩美女啊v在线免费观看| 在线播放/欧美激情| 国产成人免费视频一区| 一区二区三区91| 久久人人97超碰com| 一本大道久久精品懂色aⅴ| 全国精品久久少妇| 亚洲欧美激情小说另类| 日韩欧美国产一区在线观看| 色婷婷久久久综合中文字幕| 国内精品视频666| 亚洲二区视频在线| 亚洲国产精品激情在线观看| 91精品国产欧美一区二区成人| 不卡av电影在线播放| 奇米影视一区二区三区小说| 亚洲视频1区2区| 欧美精品一区二区三| 欧美日韩大陆一区二区| 不卡视频一二三| 国产一区二区不卡| 日本特黄久久久高潮| 亚洲美腿欧美偷拍| 国产精品丝袜一区| 久久网站最新地址| 555www色欧美视频| 欧美性高清videossexo| 99精品一区二区三区| 国产成人精品免费在线| 久久www免费人成看片高清| 亚洲第一主播视频| 一区二区三区四区高清精品免费观看 | 亚洲国产日韩一级| 亚洲天堂网中文字| 国产精品国产自产拍高清av王其| 2020日本不卡一区二区视频| 91精品一区二区三区在线观看| 欧美手机在线视频| 中文字幕欧美日本乱码一线二线| 精品国产精品网麻豆系列| 欧美日本在线播放| 欧美日韩国产天堂| 欧美日韩在线精品一区二区三区激情 | 中文字幕日韩欧美一区二区三区| 久久综合久久综合久久| 精品国产乱码久久久久久蜜臀 | 国产九色精品成人porny| 美女一区二区在线观看| 日韩电影免费在线看| 日韩中文欧美在线| 日本网站在线观看一区二区三区| 视频在线观看国产精品| 秋霞电影网一区二区| 美女视频黄a大片欧美| 麻豆久久一区二区| 韩国视频一区二区| 国产精品18久久久| 91亚洲精品久久久蜜桃网站| av影院午夜一区| 日本高清不卡在线观看| 在线观看欧美精品| 欧美电影一区二区三区| 欧美成人乱码一区二区三区| 久久先锋影音av| 中文字幕乱码日本亚洲一区二区 | 97se亚洲国产综合自在线| 97国产精品videossex| 欧美日韩亚洲综合在线| 日韩三级av在线播放| 久久久一区二区三区捆绑**| 国产精品国产三级国产专播品爱网 | 久久不见久久见中文字幕免费| 国产一区二区影院| 92国产精品观看| 欧美日韩高清不卡| 久久婷婷色综合| 亚洲一区中文在线| 美日韩一级片在线观看| 成人免费毛片高清视频| 欧美日韩在线播放一区| 精品国产乱码久久久久久1区2区| 国产精品国产三级国产aⅴ中文| 午夜久久电影网| 国产成人精品亚洲777人妖| 欧美午夜精品一区二区蜜桃| 精品理论电影在线| 亚洲免费视频成人| 激情文学综合网| 欧洲精品一区二区三区在线观看| 亚洲成人一区二区| 国内成人免费视频| 欧美日韩免费观看一区二区三区 | 成人av中文字幕| 欧美伦理电影网| 国产精品丝袜久久久久久app| 婷婷久久综合九色综合绿巨人| 国产传媒欧美日韩成人| 555www色欧美视频| 亚洲男人的天堂av| 国产美女精品一区二区三区| 欧美日韩三级视频| 国产精品国产a| 黄色小说综合网站| 欧美午夜电影一区| 国产精品国产三级国产有无不卡 | 美女www一区二区| 色婷婷国产精品综合在线观看| 久久久久久久国产精品影院| 日韩激情一区二区| 色婷婷综合久久久中文字幕| 中文字幕精品一区二区三区精品 | 91在线观看美女| 久久久精品中文字幕麻豆发布| 日本不卡一区二区三区| 一本大道久久a久久综合| 国产色91在线| 国产一区二区影院| 日韩三级.com| 日韩电影在线观看一区| 欧美图区在线视频| 亚洲黄色录像片| 91免费视频网址| 国产精品不卡一区二区三区| 粉嫩av亚洲一区二区图片| 久久综合狠狠综合| 久久se精品一区精品二区| 欧美一区二区视频观看视频| 婷婷综合五月天| 欧美日韩视频在线第一区| 一区二区三区成人在线视频| 在线视频一区二区免费| 亚洲自拍与偷拍| 欧美日韩一区成人| 水蜜桃久久夜色精品一区的特点| 欧美日韩色综合| 日本在线不卡一区|