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

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

?? mainfrm.cpp

?? 本學期編譯課程需要實現L語言
?? CPP
字號:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "Lojo.h"

#include "MainFrm.h"

#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_CIFA, OnCifa)
	ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
	ON_COMMAND(ID_YUFA, OnYufa)
	//}}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
	
}

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);

	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.x=0;
	cs.y=0;
	cs.cx=::GetSystemMetrics(SM_CXSCREEN);
	cs.cy=::GetSystemMetrics(SM_CYSCREEN)-30;


	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


BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{
	// TODO: Add your specialized code here and/or call the base class
	if (!m_wndSplitter.CreateStatic(this, 1, 2))    //創建1行2列的切分窗口
	{
		TRACE0("Failed to CreateStaticSplitter\n");
		return FALSE;
	}

	CRect rc;				//獲得客戶區大小
	GetClientRect(rc);
	int x=rc.Width()/2;
	int y=rc.Height()/2;

	if (!m_wndSplitter.CreateView(0, 0, pContext->m_pNewViewClass/*RUNTIME_CLASS(CSourceEditView)*/, CSize(x,y), pContext))
	{
		TRACE0("Failed to create second pane\n");
		return FALSE;
	} //創建第1個視圖

	if (!m_wndSplitter.CreateView(0, 1,	pContext->m_pNewViewClass, CSize(x,y), pContext))
	{
		TRACE0("Failed to create first pane\n");
		return FALSE;
	} //創建第2個視圖


	m_pEditSrc=&((CEditView*)m_wndSplitter.GetPane(0,0))->GetEditCtrl();  //獲得CEditView視圖中的編輯框控件的指針
	m_pEditOut=&((CEditView*)m_wndSplitter.GetPane(0,1))->GetEditCtrl();

	


/*--------------------------------設置字體--------------------------*/
	m_fonta.CreateFont(14, 0,0,0,FW_NORMAL, 0,0,0,
		DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
		DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Verdana");
	
	m_fontb.CreateFont(12, 0,0,0,FW_NORMAL, 0,0,0,
		DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
		DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "fixedsys");
	
	m_pEditOut->SetFont(&m_fonta);
	m_pEditSrc->SetFont(&m_fontb); 
/*--------------------------------設置字體--------------------------*/
	return true;
}

void CMainFrame::OnCifa() 
{
	// TODO: Add your command handler code here
	m_pEditOut->SetWindowText("\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t正在進行詞法分析,稍等....");
 	CWaitCursor cur;

	CString str, strTemp;
	m_pEditSrc->GetWindowText(strTemp);
	if(strTemp.IsEmpty())
	{
		m_pEditOut->SetWindowText("\r\n\r\n\r\n\r\n\r\n\r\n\r\n請在左邊編輯源程序或打開一個源程序文件!\r\n\r\n然后再進行詞法分析");
		return;
	}
	

	char buf[10000];
	int sz=m_pEditSrc->GetWindowText(buf,10000);   //獲得源代碼
 
	::strcpy(m_cfenxi.m_str,buf);

	m_cfenxi.CiFaFenXi();   //進行詞法分析

	CIFA** p=m_cfenxi.m_cifa;

	int s=0;
	int a=p[s]->nType;
	while ((p[s]->nType)>=0)
		s++;
	char (*ep)[100];
	ep=m_cfenxi.m_szErrMsg;
	//result to : p,s,ep


	int ErrorCount=0;
	str.Format("\r\n\t\t詞法分析結果\r\n\r\n\r\n輸出格式:二元式序列(類型,值)單詞\r\n\r\n");
	
	for (int i=0;i<s;i++)
	{
		if (p[i]->nType>0)
		{   
			int toTP=p[i]->nType;
			if(toTP==1 || toTP==2 || toTP==3) toTP=toTP;
			else if(toTP==4||toTP==5) toTP=4;
			else if(toTP>=6&&toTP<=26) toTP=5;
			else if(toTP>=27&&toTP<=40) toTP=6;
			else if(toTP>=41&&toTP<=50) toTP=7;

			strTemp.Format("(%s, %d)\t%s\r\n",m_cfenxi.m_szTP[toTP],p[i]->nValue,p[i]->szText);
			str+=strTemp;
		}
		else
		{
			ErrorCount++;
			if (p[i]->nValue==2 && (p[i]->szText[0]>126 || p[i]->szText[0]<32))
			{
				strTemp.Format("錯誤號:%d %s 【 無法顯示該字符! 】\r\n",	p[i]->nValue,ep[p[i]->nValue]);
				str+=strTemp;
			}
			else
			{
				strTemp.Format("錯誤號:%d %s 【 %s 】\r\n",p[i]->nValue,ep[p[i]->nValue],p[i]->szText);
				str+=strTemp;
			}
		}
	}
	strTemp.Format("\r\n 發現 %d 個錯誤!\r\n",ErrorCount);
	str+=strTemp;

	m_pEditOut->SetWindowText(str);
}


void CMainFrame::OnFileOpen() 
{
	// TODO: Add your command handler code here
	CFileDialog *lpf;
	CStdioFile	sf;
	CString		strTemp, strOut;
	lpf=new CFileDialog(TRUE,NULL,NULL,NULL,NULL);
	if(lpf->DoModal()==IDOK)
	{
		CString sz;
		sz=lpf->GetFileName();
		
		if(sf.Open(sz,CFile::modeRead))
		{
			
			while(sf.ReadString(strTemp))
			{
				strOut+=strTemp;
				strOut+="\r\n";
			}	
		
			m_pEditSrc->SetWindowText(strOut);
			sf.Close();
		}
	}	
	delete lpf;	
}

void CMainFrame::OnYufa() 
{
	CWaitCursor cur;

	CString str,strTemp;
	m_pEditSrc->GetWindowText(strTemp);
	if(strTemp.IsEmpty())
	{
		m_pEditOut->SetWindowText("\r\n\r\n\r\n\r\n\r\n\r\n\r\n請在左邊編輯源程序或打開一個源程序文件!\r\n\r\n然后再進行語法分析");
		return;
	}

/*
	char buf[30003];           
	int sz=m_pEditSrc->GetWindowText(buf,30000);
	buf[sz]=0;
	::strcpy(m_cfenxi.m_str,buf);

	m_cfenxi.CiFaFenXi();   */

	m_yfenxi.init(m_cfenxi);

	CIFA** cp=m_yfenxi.m_cifa;

	int s=0;
	while ((cp[s]->nType)>=0)
		s++;
	char (*ep)[100];
	ep=m_yfenxi.m_szErrMsg;

	for (int i=0;i<s;i++)
		if (cp[i]->nType==0)
			break;

	m_yfenxi.YuFaFenXi();   //語法分析

	//result to : cp,s,ep

	m_pEditOut->SetWindowText("");


 	str.Format("\r\n\t\t語法分析結果\r\n\r\n\r\n");


	if (m_yfenxi.m_nErrNo==0)
	{
		strTemp.Format("源程序語法正確!\r\n");
		str+=strTemp;
	}
	else
	{
		strTemp.Format("語法上有錯誤!!\r\n");
		str+=strTemp;

		m_pEditSrc->SetSel(cp[m_yfenxi.m_nErrAddr]->nAddr,
			cp[m_yfenxi.m_nErrAddr]->nAddr
			+::strlen(cp[m_yfenxi.m_nErrAddr]->szText));

		strTemp.Format("\r\n錯誤號:%d %s\r\n",
			m_yfenxi.m_nErrNo,
			ep[m_yfenxi.m_nErrNo]);

		str+=strTemp;
	}

	m_pEditOut->SetWindowText(str);
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线精品一区二区| 国产一区二区三区四区五区美女 | 亚洲午夜精品久久久久久久久| 免费观看30秒视频久久| 91麻豆免费观看| 2020国产精品久久精品美国| 亚洲自拍偷拍综合| 成人福利在线看| 久久一区二区三区四区| 日韩成人午夜电影| 欧美午夜在线观看| 亚洲欧美在线另类| 成人app在线| 国产日产精品一区| 国产一区二区三区精品视频| 欧美一区日韩一区| 亚洲成人www| 欧美在线一区二区| 人人精品人人爱| 欧美综合欧美视频| 亚洲综合偷拍欧美一区色| 99热在这里有精品免费| 欧美极品少妇xxxxⅹ高跟鞋| 韩国成人在线视频| 精品第一国产综合精品aⅴ| 日韩国产高清影视| 日韩一区二区在线播放| 亚洲第一av色| 欧美一区二区三区在线视频| 日韩av一区二区在线影视| 欧美二区在线观看| 免费观看30秒视频久久| 日韩欧美亚洲一区二区| 久久成人免费日本黄色| 26uuu另类欧美亚洲曰本| 久草在线在线精品观看| 久久婷婷色综合| 韩国理伦片一区二区三区在线播放| 欧美白人最猛性xxxxx69交| 久久精品国产一区二区三区免费看| 日韩一二在线观看| 国产酒店精品激情| 中文字幕一区在线| 欧美在线免费视屏| 麻豆一区二区99久久久久| 2023国产精品| av电影天堂一区二区在线| 一区二区在线免费| 日韩一级在线观看| 国产69精品久久99不卡| 一区二区三区在线观看欧美| 正在播放亚洲一区| 国产高清无密码一区二区三区| 亚洲色图一区二区| 91麻豆精品国产91久久久资源速度 | 91啦中文在线观看| 亚洲午夜久久久久久久久电影网 | 26uuu国产一区二区三区| 国产成人av电影在线观看| 国产精品国产三级国产aⅴ原创| 色8久久精品久久久久久蜜| 视频一区二区三区中文字幕| 久久综合九色综合97婷婷女人| 97久久超碰精品国产| 日本成人在线一区| 国产精品乱人伦| 欧美浪妇xxxx高跟鞋交| 国产91丝袜在线播放九色| 久久成人免费日本黄色| 亚洲特黄一级片| 日韩一区二区三区高清免费看看| youjizz国产精品| 琪琪久久久久日韩精品| 欧美极品少妇xxxxⅹ高跟鞋| 91.com视频| 日本国产一区二区| 国产成人一区在线| 日韩av一区二区三区| 国产精品视频你懂的| 日韩一级成人av| 欧美亚洲日本国产| 成人久久视频在线观看| 精品一区二区三区免费毛片爱| 亚洲综合精品久久| 中文字幕在线观看一区| 精品理论电影在线观看| 在线91免费看| 在线观看中文字幕不卡| 国产成人精品免费在线| 乱中年女人伦av一区二区| 亚洲伊人色欲综合网| 亚洲欧洲精品一区二区三区不卡| 精品福利av导航| 日韩欧美的一区二区| 欧美日精品一区视频| 色哟哟国产精品| jizz一区二区| 成人自拍视频在线观看| 国产精品正在播放| 国精产品一区一区三区mba桃花 | 亚洲成人一二三| 一区二区三区免费看视频| 亚洲欧洲成人精品av97| 国产精品人妖ts系列视频 | 日韩一卡二卡三卡四卡| 欧美精选一区二区| 欧美男女性生活在线直播观看| 在线免费视频一区二区| 日本道色综合久久| 色呦呦一区二区三区| 91高清视频在线| 欧美视频一区在线观看| 欧美美女激情18p| 在线不卡的av| 日韩欧美三级在线| 精品久久久久一区| 久久婷婷国产综合国色天香| 国产三级精品视频| 日韩一区有码在线| 亚洲一区视频在线观看视频| 性欧美疯狂xxxxbbbb| 日韩不卡一二三区| 韩国一区二区三区| av在线不卡免费看| 91福利精品视频| 7777精品伊人久久久大香线蕉的 | 欧美主播一区二区三区美女| 欧美日韩和欧美的一区二区| 欧美一区二区三区思思人| 日韩女优电影在线观看| 久久精品水蜜桃av综合天堂| 国产精品九色蝌蚪自拍| 亚洲精品你懂的| 日韩黄色一级片| 国产一区激情在线| 成人av第一页| 欧美丰满高潮xxxx喷水动漫| 久久久久青草大香线综合精品| 欧美激情一区在线| 亚洲高清免费视频| 国产美女主播视频一区| 一本色道久久综合亚洲aⅴ蜜桃 | 国产很黄免费观看久久| 91女厕偷拍女厕偷拍高清| 欧美精品日韩综合在线| 26uuu国产日韩综合| 亚洲精品视频自拍| 久久精品久久综合| 色综合久久中文综合久久牛| 日韩三级中文字幕| 亚洲欧洲色图综合| 久久精品国产精品亚洲红杏| 色综合视频一区二区三区高清| 欧美一二三区精品| 亚洲精品国产一区二区精华液| 久久精品噜噜噜成人88aⅴ| 一本大道av伊人久久综合| 亚洲精品在线免费播放| 亚洲永久精品国产| 春色校园综合激情亚洲| 欧美一区三区二区| 一区二区三区资源| 国产91对白在线观看九色| 欧美一区二区三区在线看| 亚洲精品日韩一| 国产91高潮流白浆在线麻豆| 日韩视频一区二区三区在线播放| 亚洲欧美日韩国产一区二区三区| 国产麻豆精品在线| 日韩女优电影在线观看| 亚洲成va人在线观看| 99久免费精品视频在线观看| 亚洲精品一区二区三区四区高清| 亚洲午夜一区二区| 一本色道久久综合狠狠躁的推荐 | 中文字幕一区日韩精品欧美| 久久91精品久久久久久秒播| 欧美视频在线观看一区| 亚洲欧美一区二区三区极速播放| 福利一区二区在线观看| 精品久久国产老人久久综合| 天天亚洲美女在线视频| 欧美三级中文字| 一区二区三区免费看视频| 99久久精品一区| 日韩毛片一二三区| 99久久婷婷国产综合精品电影| 国产午夜精品一区二区三区嫩草| 99视频有精品| 国产精品灌醉下药二区| 不卡的av中国片| 国产精品不卡在线观看| 99精品视频中文字幕| 中文字幕一区av| 成人伦理片在线| 自拍偷拍国产精品| 在线看不卡av| 天天影视涩香欲综合网| 日韩精品在线网站| 久久99九九99精品|