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

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

?? mainfrm.cpp

?? PASCAL編譯器
?? CPP
字號(hào):
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "pascalcompiler.h"

#include "MainFrm.h"
#include "PascalcompilerDoc.h"
#include "PascalcompilerView.h"
#include "example.h"
#include "DialogView1.h"
extern CPascalcompilerApp theApp;


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

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(ID_LONERROR, OnLonerror)
	ON_COMMAND(ID_COMPILE, OnCompile)
	ON_WM_CLOSE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	keyword[0] = "begin";
	keyword[1] = "do";
	keyword[2] = "else";
	keyword[3] = "end";
	keyword[4] = "if";
	keyword[5] = "then";
	keyword[6] = "var";
	keyword[7] = "while";
	KEYWORD[0] = "BIGIN";
	KEYWORD[1] = "DO";
	KEYWORD[2] = "ELSE";
	KEYWORD[3] = "END";
	KEYWORD[4] = "IF";
	KEYWORD[5] = "THEN";
	KEYWORD[6] = "VAR";
	KEYWORD[7] = "WHILE";
	fenjies[0] = ",";
	fenjies[1] = ";";
	fenjies[2] = "(";
	fenjies[3] = ")";
	fenjies[4] = ".";
	fenjies[5] = ":=";
	alus[0]    = "+";
	alus[1]    = "-";
	alus[2]    = "*";
	alus[3]    = "/";
	related[0] = "<";
	related[1] = "<=";
	related[2] = "=";
	related[3] = ">";
	related[4] = ">=";
	related[5] = "<>";
	markrow = 1;
	markerror = "";
	markerror1 = "";
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	// TODO: Delete these three lines if you don't want the toolbar to
	//  be dockable
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);

	AnimateWindow(GetSafeHwnd(),1000,AW_SLIDE|AW_HOR_POSITIVE);
	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	//cs.dwExStyle |= WS_EX_TOPMOST;
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers


void CMainFrame::OnCompile() 
{
	// TODO: Add your command handler code here
	Cexample exa;
	exa.DoModal();
}
///////////////////////////////////////////
//                詞法分析               //
///////////////////////////////////////////
void CMainFrame::OnLonerror()
{
	// TODO: Add your command handler code here
	show = "";
	CString getwordstr;
	CMainFrame *pFrame = (CMainFrame *)theApp.GetMainWnd();
	pFrame->m_Splitter.SetActivePane(0,0);
	CPascalcompilerView *pView = (CPascalcompilerView *)pFrame->GetActiveView();
	CEdit &edit=pView->GetEditCtrl();
	edit.GetWindowText(str);
	edit.GetWindowText(str1);
	if(str!="")
	{
		////////////////////詞法分析//////////////////
		do
		{
			str = CMainFrame::DeleteNull(str);
			if(str != "")
			{
			getwordstr = CMainFrame::GetWord(str,getwordstr);
			if((getwordstr.GetAt(0)>='A'&&getwordstr.GetAt(0)<='Z')||
				(getwordstr.GetAt(0)>='a'&&getwordstr.GetAt(0)<='z'))
			{
				CMainFrame::anykw(getwordstr);
				show += mark;
				show += "\r";
				show += "\n";
				show += "  ";
			}
			else
			{
				if(getwordstr.GetAt(0)>='0'&&getwordstr.GetAt(0)<='9')
				{ 
					CMainFrame::changshuanyle(getwordstr);
					show += mark;
					show += "\r";
					show += "\n";
					show += "  ";
				}
				else
				{
					CMainFrame::qitaany(getwordstr);
					show += mark;
					show += "\r";
					show += "\n";
					show += "  ";
				}
			}
			}
			else
			{
				break;
			}
		}
		while(true);
		/////////////////////////////////////////////////////
		pFrame->m_Splitter.SetActivePane(1,0);
		CPascalcompilerView *pView1 = (CPascalcompilerView *)pFrame->GetActiveView();
		CEdit &edit1=pView1->GetEditCtrl();

		pFrame->m_Splitter.SetActivePane(0,1);
		CPascalcompilerView *pView2 = (CPascalcompilerView *)pFrame->GetActiveView();
		CEdit &edit2=pView2->GetEditCtrl();

		edit2.SetWindowText(show);
		CMainFrame::grammaranyle(str1);////////////語法分析
		if(markerror == "" && markerror1 == "")
		{
			edit1.SetWindowText("沒有錯(cuò)誤");
		}
		else
		{
			edit1.SetWindowText(markerror+markerror1);
		}
		
		markrow = 1;
		markerror = "";
	}
	else
	{
		MessageBox("你還沒有輸入程序");
		pFrame->m_Splitter.SetActivePane(1,0);
		CPascalcompilerView *pView1 = (CPascalcompilerView *)pFrame->GetActiveView();
		CEdit &edit1=pView1->GetEditCtrl();
		edit1.SetWindowText(markerror);
		pFrame->m_Splitter.SetActivePane(0,1);
		CPascalcompilerView *pView2 = (CPascalcompilerView *)pFrame->GetActiveView();
		CEdit &edit2=pView2->GetEditCtrl();
		edit2.SetWindowText(show);
	}
	
}

//////////////////刪除多余的空格和回車//////////////////////
CString CMainFrame::DeleteNull(CString delestr)
{
	while (true)
	{
		int j = delestr.GetLength();
		for(int i = 0;i < delestr.GetLength();i++)
		{
			if(delestr[0] == 0x20 || delestr[0] == 0x0A || delestr[0] == 0x0D)
			{
				if(delestr[0] == 0x0A)
				{
					markrow++;//////////記錄行
					delestr.Delete(0);
				}
				else
				{
					delestr.Delete(0);
				}
			}
			else
			{
				return delestr;
			}
		}
		if(i == j)
		{
			return delestr;
		}
	}		
}

/////////////////////////獲得一個(gè)字進(jìn)行判斷/////////////////////
CString CMainFrame::GetWord(CString Wordstr, CString GetWordstr)
{
	CString no_use("@#$%^&~`(){},. ;\n+:=*/-<>\"\r");
	GetWordstr = Wordstr;
	CString temp = Wordstr;
	temp.GetBufferSetLength(2);
	if(temp == ":=" ||temp == "<=" ||temp == ">=" || temp == "<>")
	{
		GetWordstr.GetBufferSetLength(2);
		str.Delete(0);str.Delete(0);
	}
	else
	{
		temp = "";
		int j = GetWordstr.FindOneOf(no_use);
		if(j == 0)
		{
			GetWordstr.GetBufferSetLength(1);
			str.Delete(0);
		}
		else if(j == -1)
		{
			GetWordstr = "";
			str = "";
		}
		else
		{
			GetWordstr.GetBufferSetLength(j);
			for(int m = 0;m <= j-1;m++)
			{
				str.Delete(0);
			}
		}
	}
	return GetWordstr;
}

////////關(guān)鍵字和標(biāo)識(shí)符判斷/////////////
CString CMainFrame::anykw(CString Gw)
{
	for(int i = 0;i < 8;i++)
	{
		if(keyword[i] == Gw || KEYWORD[i] == Gw)
		{
			mark =Gw+"   是關(guān)鍵字";
			return mark;
		}
		if(Gw.GetLength() == 1)
		{
			mark = Gw+"   是標(biāo)識(shí)符";
			return mark;
		}
	}
	mark = Gw;
	mark += "  是工程或函數(shù)名嗎?";
	return mark;
}
/////////////////////常數(shù)判斷//////////////////////
CString CMainFrame::changshuanyle(CString Gw)
{
	mark = Gw;
	mark += "  是常數(shù)";
	return mark;
}
////////分界符,關(guān)系符,運(yùn)算符的判斷////////////
CString CMainFrame::qitaany(CString Gw)
{
	for(int i = 0;i <6;i++)
	{
		if(fenjies[i] == Gw)
		{
			mark = Gw+"  是分界符";
			return mark;
		}
	}
	for(int i1 = 0;i1 < 6;i1++)
	{
		if(related[i1] == Gw)
		{
			mark = Gw+"  是關(guān)系符";
			return mark;
		}
	}
	for(int i2 = 0;i2 < 4;i2++)
	{
		if(alus[i2] == Gw)
		{
			mark = Gw+"  是運(yùn)算符";
			return mark;
		}
	}
	mark = Gw;
	mark += "  是錯(cuò)誤的符號(hào)";
	CString kk;
	kk.Format("%i",markrow);
	kk = "第" + kk;
	kk = kk + "行:   ";
	markerror += kk;
	markerror += mark;
	markerror += "\r";
	markerror += "\n";
	return mark;
}


BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext *pContext)
{
	CRect cr;
	GetClientRect(&cr);
	CSize paneSize(2*cr.Width()/3,2*cr.Height()/3);
	CSize paneSize1(2*cr.Width()/3,cr.Height()/3);
	CSize paneSize2(cr.Width()/3,2*cr.Height()/3);
	CSize paneSize3(cr.Width()/3,cr.Height()/3);
	m_Splitter.CreateStatic(this,2,2);
	m_Splitter.CreateView(0,0,RUNTIME_CLASS(CPascalcompilerView),
		paneSize,pContext);
	m_Splitter.CreateView(1,0,RUNTIME_CLASS(CPascalcompilerView),
		paneSize1,pContext);
	m_Splitter.CreateView(0,1,RUNTIME_CLASS(CPascalcompilerView),
		paneSize2,pContext);
	m_Splitter.CreateView(1,1,RUNTIME_CLASS(CDialogView1),
		paneSize3,pContext);
	return TRUE;
}

void CMainFrame::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	AnimateWindow(GetSafeHwnd(),1000,AW_HIDE|AW_HOR_POSITIVE);
	CFrameWnd::OnClose();
}
//////////////////////////////////////////////
////            語法分析                  ////
//////////////////////////////////////////////
void CMainFrame::grammaranyle(CString anystr)
{
	markerror1 = "";
	CString befor,begend;
	befor = anystr;
	begend = anystr;
	if(begend.Find(".")==-1)
	{
		markerror1 += "在程序的最后少了一個(gè) '.'";
		markerror1 += "\r";
		markerror1 += "\n";
	}
	int i = befor.Find("begin");
	if(i == -1)
	{
		markerror1 += "沒有函數(shù)體或少了一個(gè) 'begin'";
		markerror1 += "\r";
		markerror1 += "\n";
	}
	else
	{
	befor.GetBufferSetLength(i);
	////////////////////////////////////////////////
	//判斷函數(shù)開始前的一些定義每一行后面是否有分號(hào)//
	////////////////////////////////////////////////
	while(true)
	{
		int cout = befor.GetLength();
		for(int n = 0;n < cout;n++)
		{
			if(befor[0] == 0x20 || befor[0] == 0x0A || befor[0] == 0x0D)
			{
				befor.Delete(0);
			}
			else
			{
				break;
			}
		}
		if(befor != "")
		{
			int j = befor.Find(0x0D);
			if(befor.GetAt(j-1)==';')
			{
				for(int m = 0;m <= j+1;m++)
				{
					befor.Delete(0);
				}
			}
			else
			{
				markerror1 += befor.GetAt(j-1);
				markerror1 += "后面少了一個(gè) ';'";
				markerror1 += "\r";
				markerror1 += "\n";
				for(int m = 0;m <= j+1;m++)
				{
					befor.Delete(0);
				}
			}
		}
		else
		{
			break;
		}
	}
	////////////////////////////////////////
	///判斷程序中的begin和end是否成對(duì)出現(xiàn)///
	///////////end后面是否有分號(hào)////////////
	for(int k = 0;k <i;k++)
	{
		begend.Delete(0);
	}
	while(begend != "")
	{
		for(int l = 0;l < 5;l++)
		{
			begend.Delete(0);
		}
		int end = begend.Find("begin");
		if(end != -1)
		{
			int end1 = end;
			while(end)
			{
				end--;
				if(begend.GetAt(end) == 'd')
				{
					if(begend.GetAt(end - 1) == 'n'
						&&begend.GetAt(end - 2) == 'e')
					{
						if(begend.GetAt(end+1) != ';')
						{
							markerror1 += "'end '后面少了一個(gè) ';'";
							markerror1 += "\r";
							markerror1 += "\n";
							break;
						}
						else
						{
							break;
						}
					}
				}
			}
			if(end == 0)
			{
				markerror1 += "在'begin'前少了一個(gè)'end'";
				markerror1 += "\r";
				markerror1 += "\n";
			}
			for(int u = 0;u < end1;u++)
			{
				begend.Delete(0);
			}
		}
		else
		{
			end = begend.Find("end");
			if(end == -1)
			{
				markerror1 += "在程序的最后少了一個(gè) 'end'";
				markerror1 += "\r";
				markerror1 += "\n";
			}
			begend = "";
		}
	}
	///////////////////////////////////////////////////////
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天综合天天综合色| 亚洲男人天堂av网| 欧美性xxxxx极品少妇| 日韩高清在线不卡| 亚洲色图丝袜美腿| 久久久久久久久久久久久夜| 欧美日韩一卡二卡三卡| 国产不卡免费视频| 裸体歌舞表演一区二区| 亚洲色欲色欲www| 国产亚洲美州欧州综合国| 欧美日韩国产一区二区三区地区| 国产98色在线|日韩| 日韩高清在线观看| 亚洲高清中文字幕| 亚洲色图欧洲色图婷婷| 久久影院午夜片一区| 精品视频1区2区| 色综合久久精品| 99久久精品免费精品国产| 久久精品99久久久| 日韩av二区在线播放| 亚洲色大成网站www久久九九| 久久婷婷国产综合精品青草| 3atv一区二区三区| 欧美在线视频日韩| 日本久久电影网| 欧美少妇性性性| 99久久国产免费看| 成人午夜又粗又硬又大| 国产一区二区三区香蕉| 久久99精品久久久| 久久福利资源站| 精品一区二区三区日韩| 日韩av中文字幕一区二区 | 亚洲综合一区二区| 一色屋精品亚洲香蕉网站| 国产亚洲精品aa| 久久久亚洲精华液精华液精华液| 2024国产精品| 2022国产精品视频| 久久先锋影音av鲁色资源| 欧美电影免费观看高清完整版在线观看 | 欧美色视频一区| 欧美亚洲国产一区二区三区| 91麻豆精品在线观看| 91日韩在线专区| 91免费观看在线| 972aa.com艺术欧美| 91看片淫黄大片一级| 91视频观看视频| 欧洲视频一区二区| 欧美日韩国产一区| 日韩欧美久久久| 国产婷婷精品av在线| 国产精品成人一区二区艾草| 亚洲视频香蕉人妖| 亚洲午夜电影网| 久久成人免费电影| 国产成人亚洲精品狼色在线| 欧美日韩精品免费观看视频| 欧美高清性hdvideosex| 日韩三级.com| 中文字幕欧美区| 亚洲国产aⅴ成人精品无吗| 性做久久久久久免费观看欧美| 日韩电影在线免费看| 国产一区二区日韩精品| 成人app软件下载大全免费| 欧洲精品视频在线观看| 91精品国产91久久久久久最新毛片| 精品不卡在线视频| 日韩美女精品在线| 日韩av电影天堂| 国产精品综合视频| 日本精品一区二区三区高清| 日韩三级高清在线| 亚洲视频一二三区| 老司机精品视频线观看86 | 日韩视频免费观看高清完整版在线观看 | 国产在线观看免费一区| 国产999精品久久久久久| 在线观看视频欧美| 精品国产一区二区三区av性色| 91精品国产麻豆国产自产在线 | 国产精品午夜在线观看| 亚洲视频在线观看三级| 久久国产尿小便嘘嘘尿| 91无套直看片红桃| 精品欧美乱码久久久久久| 日韩理论电影院| 看电影不卡的网站| 色狠狠综合天天综合综合| 精品999在线播放| 亚洲一卡二卡三卡四卡无卡久久| 国产在线一区二区综合免费视频| 色乱码一区二区三区88| 精品处破学生在线二十三| 亚洲一区在线观看网站| 成人小视频免费观看| 精品久久久三级丝袜| 亚洲国产精品久久人人爱蜜臀| 丰满亚洲少妇av| 日韩三级伦理片妻子的秘密按摩| 亚洲综合激情小说| av一本久道久久综合久久鬼色| 日韩免费在线观看| 日韩国产精品久久久| 91色在线porny| 国产精品网站在线观看| 狂野欧美性猛交blacked| 欧美日本韩国一区二区三区视频 | 色香蕉成人二区免费| 久久精品视频在线免费观看| 日韩电影在线观看网站| 欧美午夜精品一区| 亚洲视频在线一区二区| 福利一区福利二区| 久久精品夜夜夜夜久久| 久久99久久精品欧美| 欧美高清精品3d| 亚洲高清一区二区三区| 欧美在线一二三| 亚洲精品中文字幕乱码三区| 成人免费看视频| 日本一区免费视频| 国产传媒日韩欧美成人| 国产欧美在线观看一区| 国产精品18久久久久| 欧美成人一区二区三区片免费 | 久久麻豆一区二区| 紧缚捆绑精品一区二区| 日韩一区二区免费高清| 美女性感视频久久| 日韩精品一区二区三区在线播放| 日韩在线卡一卡二| 欧美日韩成人高清| 热久久免费视频| 日韩午夜激情免费电影| 国内精品自线一区二区三区视频| 久久亚洲一级片| 国产丶欧美丶日本不卡视频| 国产人伦精品一区二区| 春色校园综合激情亚洲| 亚洲欧美怡红院| 在线观看免费一区| 性做久久久久久| 日韩一区二区免费在线观看| 久久国产生活片100| 国产蜜臀97一区二区三区| 91香蕉视频黄| 一区二区免费在线| 欧美高清激情brazzers| 狠狠色狠狠色综合| 国产精品久久久久四虎| 91国偷自产一区二区开放时间 | 欧美精品一区二区在线观看| 国产一区二区精品久久99| 欧美国产精品v| 一本色道久久加勒比精品| 亚洲福利一二三区| 久久久亚洲精品一区二区三区| 成人av在线影院| 亚洲一区二区在线视频| 欧美成人国产一区二区| 国产91露脸合集magnet| 亚洲免费电影在线| 欧美精品日韩精品| 国产99久久久久| 亚洲国产精品久久艾草纯爱| 欧美一级二级三级乱码| 成人免费高清在线| 日韩不卡一二三区| 国产精品嫩草99a| 91精品视频网| 成人av动漫在线| 天天色天天操综合| 国产精品色在线观看| 欧美丰满少妇xxxbbb| 国产精品乡下勾搭老头1| 一二三区精品视频| 久久久久久9999| 欧美精品18+| 99国产精品视频免费观看| 免费看欧美美女黄的网站| 综合久久久久综合| 26uuu国产电影一区二区| 色香蕉久久蜜桃| 国产福利91精品| 奇米777欧美一区二区| 亚洲日本电影在线| 久久久国际精品| 欧美日韩国产小视频在线观看| 成人深夜在线观看| 久久99久久99| 午夜久久久影院| 亚洲精品视频在线观看免费| 亚洲精品一区二区三区蜜桃下载| 欧美日韩一区 二区 三区 久久精品| 国产69精品久久久久777|