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

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

?? analyzedlg.cpp

?? 編譯原理LL(1)文法分析器 錄入合法的LL(1)文法
?? CPP
字號:
// AnalyzeDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ll1forwin.h"
#include "AnalyzeDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CAnalyzeDlg dialog


CAnalyzeDlg::CAnalyzeDlg(CWnd* pParent /*=NULL*/)
	: CResizingDialog(CAnalyzeDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAnalyzeDlg)
	m_input = _T("");
	//}}AFX_DATA_INIT
	m_strTempFilename = "";
	m_pTree = new CTreeDlg;
	m_pTree->Create(IDD_DIALOG3, this);
	m_pTree->SetControlInfo(IDC_TREE1, RESIZE_BOTH);
	m_pTree->SetControlInfo(IDOK, ANCHORE_BOTTOM | ANCHORE_RIGHT);
}

CAnalyzeDlg::~CAnalyzeDlg()
{
	m_pTree->DestroyWindow();
	delete m_pTree;
}

void CAnalyzeDlg::DoDataExchange(CDataExchange* pDX)
{
	CResizingDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAnalyzeDlg)
	DDX_Control(pDX, IDC_EDIT1, m_edit1);
	DDX_Text(pDX, IDC_EDIT1, m_input);
	DDX_Control(pDX, IDC_EXPLORER1, m_web);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAnalyzeDlg, CResizingDialog)
	//{{AFX_MSG_MAP(CAnalyzeDlg)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	ON_WM_ACTIVATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAnalyzeDlg message handlers

void CAnalyzeDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	m_pTree->m_tree.DeleteAllItems();
	for(int i = 0; i < m_input.GetLength(); i ++)
	{
		if (!m_g.IsInVt(m_input.GetAt(i)))
		{
			MessageBox("輸入的句子不全部由終結符組成", "錯誤", MB_OK | MB_ICONSTOP);
			return;
		}
	}
	char szTempPath[MAX_PATH]; 
	char szTempName[MAX_PATH]; 
	if (m_strTempFilename != "")
		::DeleteFile(m_strTempFilename.c_str());
	::GetTempPath(100,szTempPath);
	::GetTempFileName(szTempPath,"LL1",0,szTempName);
	m_strTempFilename = szTempName;
	CStdioFile out;
	out.Open(szTempName, CFile::modeCreate | CFile::modeWrite);
	out.WriteString("<html>\n");
	out.WriteString("<head>\n");
	out.WriteString("<title>Untitled Document</title>\n");
	out.WriteString("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">\n");
	out.WriteString("</head>\n");
	out.WriteString("<body bgcolor=\"#FFFFFF\" text=\"#000000\">\n");
	out.WriteString("<table border=\"1\"  cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\">\n");
    out.WriteString("<tr><td nowrap>&nbsp;步驟&nbsp;</td><td nowrap>&nbsp;符號棧&nbsp;</td><td nowrap>&nbsp;輸入串&nbsp;</td><td nowrap >&nbsp;所用生成式&nbsp;</td></tr>");
	stack <char> input;
	input.push('#');
	for(i = m_input.GetLength() -1; i >= 0; i --)
		input.push(m_input.GetAt(i));
	stack <char> s;
	s.push('#');
	s.push(m_g.GetStart());
	Precept p;
	bool error = false;
	int iStep = 0;
	stack <HTREEITEM> st;
	HTREEITEM hRoot = m_pTree->m_tree.InsertItem(CString(m_g.GetStart()));
	st.push(hRoot);
	while(true)
	{
		out.WriteString(GetStepInfo(s, input, iStep++, p));
		p.Clear();
		if (s.top() == input.top())
		{
			if (input.top() == '#')
				break;
			else
			{
				s.pop();
				st.pop();
				input.pop();
			}
		}
		else
		{
			if (!m_g.IsInVn(s.top()))
			{
				error = true;
				break;
			}
			if ((p = m_g.GetToDo(s.top(),input.top())).GetLeft() != "")
			{
				s.pop();
				HTREEITEM t = st.top();
				st.pop();
				if (p.GetRight() != "@")
				{
					for(int i = (int) p.GetRight().length() -1; i >=0; i --)
					{
						s.push(p.GetRight()[i]);
						st.push(m_pTree->m_tree.InsertItem(CString(p.GetRight()[i]), t));
					}
				}
				else
				{
					m_pTree->m_tree.InsertItem("@", t);
				}
			}
			else
			{
				error = true;
				break;
			}
		}
	}
	out.WriteString("</table>");
	if (error)
	{
		out.WriteString("<p><font color=\"#FF3300\">分析失敗,輸入的字符串是不符合預定文法的!</font></p>\n");
		m_pTree->m_tree.DeleteAllItems();
	}
	else
	{
		out.WriteString("<p><font color=\"#009900\">分析完成,輸入的字符串是預定文法的句子</font></p>\n");
		HTREEITEM h = m_pTree->m_tree.GetRootItem();
		ExpandTree(h);

	}

	out.WriteString("</body>\n</html>");
	out.Close();
	m_web.Navigate(szTempName,NULL,NULL,NULL,NULL);
	m_edit1.SetFocus();
	m_edit1.SetSel(0, -1);
}

CString CAnalyzeDlg::GetStepInfo(stack<char> s, stack<char> input, int iStep, Precept p)
{
	CString rtn;
	CString t;
	CString t2;
	rtn.Format("<tr><td nowrap>&nbsp;&nbsp;%d&nbsp;&nbsp;</td>\n",iStep);
	t2 = "";
	while(!s.empty())
	{
		t.Format("%c", s.top());
		if(m_g.IsInVn(s.top()))
			t2 = "<font color=\"#000099\">" + t + "</font>" + t2;
		else
			if (s.top() != '#')
				t2 = "<font color=\"#FF6600\">" + t + "</font>" + t2;
			else
				t2 = t + t2;
		s.pop();
	}
	rtn = rtn + "<td nowrap>&nbsp;&nbsp;" +  t2 + "&nbsp;&nbsp;</td>\n";
	t2 = "<td>&nbsp;&nbsp;";
	while(!input.empty())
	{
		t.Format("%c", input.top());
		if (input.top() != '#')
			t2 = t2 + "<font color=\"#FF6600\">" + t + "</font>";
		else
			t2 += t;
		
		input.pop();
	}
	rtn = rtn + t2 + "&nbsp;&nbsp;</td>\n";
	if (p.GetLeft() != "")
	{
		rtn = rtn + "<td nowrap>&nbsp;&nbsp;" + p.GetLeft().c_str() + "->" + p.GetRight().c_str() + "&nbsp;&nbsp;</td>\n";
		string strRight = p.GetRight();
	}
	else
		rtn = rtn + "<td>&nbsp;</td>\n";
	return rtn;
	
}

void CAnalyzeDlg::ExpandTree(HTREEITEM h)
{
	m_pTree->m_tree.Expand(h, TVE_EXPAND);
	HTREEITEM hChild = m_pTree->m_tree.GetChildItem(h);
	while (hChild != NULL)
	{
		if (m_pTree->m_tree.ItemHasChildren(hChild))
			ExpandTree(hChild);
		hChild = m_pTree->m_tree.GetNextItem(hChild, TVGN_NEXT);
	}
}

void CAnalyzeDlg::SetGrammar(const Grammar & g)
{
	m_g = g;
}

void CAnalyzeDlg::OnButton2() 
{
	// TODO: Add your control notification handler code here
	CRect rect;
	GetWindowRect(rect);
	//int iWidth = GetSystemMetrics(SM_CXSCREEN) - rect.right;
	//if (iWidth < 200)
	//	iWidth = 200;
	if(!m_pTree->IsWindowVisible())
		m_pTree->SetWindowPos(&wndTopMost,GetSystemMetrics(SM_CXSCREEN) - 280, 0, 250, 350, SWP_SHOWWINDOW);
	m_pTree->SetFocus();
	
}

BOOL CAnalyzeDlg::OnInitDialog() 
{
	CResizingDialog::OnInitDialog();
	SetIcon(LoadIcon(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME)),FALSE);
	// TODO: Add extra initialization here
	m_web.Navigate("about:blank",NULL,NULL,NULL,NULL);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CAnalyzeDlg::OnOK() 
{
	// TODO: Add extra validation here
	//CResizingDialog::OnOK();
}



//DEL BOOL CAnalyzeDlg::OnNcActivate(BOOL bActive) 
//DEL {
//DEL 	// TODO: Add your message handler code here and/or call default
//DEL 	
//DEL 	return CResizingDialog::OnNcActivate(bActive);
//DEL }

void CAnalyzeDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) 
{
	CResizingDialog::OnActivate(nState, pWndOther, bMinimized);
	if (nState == WA_INACTIVE)
		m_pTree->SetWindowPos(&wndNoTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE |SWP_NOACTIVATE );
	else
		m_pTree->SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE |SWP_NOACTIVATE );
	// TODO: Add your message handler code here
	
}

void CAnalyzeDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	if (m_strTempFilename != "")
		DeleteFile(m_strTempFilename.c_str());
	CResizingDialog::OnCancel();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美绝品在线观看成人午夜影视| 国产精品99久久不卡二区| 亚洲欧洲三级电影| 国产精品嫩草久久久久| 久久精品免费在线观看| 日本一区二区三区在线观看| 欧美国产日韩在线观看| 综合在线观看色| 一区二区三区国产精品| 午夜久久久久久久久久一区二区| 日韩在线一区二区| 激情伊人五月天久久综合| 国产一区二区三区在线观看精品| 国产成人精品在线看| 91丝袜美腿高跟国产极品老师| 日本韩国精品在线| 欧美精品一卡两卡| 久久综合网色—综合色88| 国产欧美日韩综合| 一区二区三区视频在线看| 亚洲chinese男男1069| 青青草原综合久久大伊人精品| 久久99热狠狠色一区二区| 国产成人亚洲综合a∨婷婷| 色噜噜狠狠色综合中国 | 久久综合精品国产一区二区三区| 26uuu另类欧美亚洲曰本| 国产无人区一区二区三区| 亚洲人成在线播放网站岛国| 天涯成人国产亚洲精品一区av| 久久99精品久久只有精品| av中文字幕在线不卡| 欧美二区在线观看| 中文字幕在线不卡一区二区三区| 日韩精品高清不卡| 成人美女在线观看| 欧美成人猛片aaaaaaa| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 午夜激情综合网| 成人午夜碰碰视频| 欧美一区二区免费视频| 综合中文字幕亚洲| 国产成人精品综合在线观看| 欧美日韩一区 二区 三区 久久精品| 久久久久久**毛片大全| 亚洲一区二区三区激情| 成人av网址在线| 日韩限制级电影在线观看| 亚洲黄色av一区| 国产69精品久久777的优势| 欧美高清视频不卡网| 亚洲色欲色欲www| 国产成人在线电影| www激情久久| 日本伊人精品一区二区三区观看方式| 天天综合网 天天综合色| 国产一区二区免费看| 91福利在线导航| 中文字幕在线不卡视频| 国产盗摄一区二区| 久久综合九色综合97_久久久| 日本欧洲一区二区| 欧美日韩精品系列| 午夜精品免费在线| 欧美日韩dvd在线观看| 一区二区欧美国产| 欧洲一区在线电影| 一级精品视频在线观看宜春院| 成人高清av在线| 国产精品免费人成网站| 丁香激情综合五月| 欧美韩日一区二区三区| 成人激情免费视频| 综合在线观看色| 日本精品视频一区二区| 亚洲在线一区二区三区| 色噜噜狠狠一区二区三区果冻| 亚洲狼人国产精品| 欧美精品成人一区二区三区四区| 亚洲一二三四在线| 欧美日韩mp4| 免费观看久久久4p| 久久久久久久久久久电影| 国产成人精品亚洲日本在线桃色| 久久久青草青青国产亚洲免观| 国产凹凸在线观看一区二区| 国产欧美精品区一区二区三区 | 亚洲美女免费视频| 在线精品亚洲一区二区不卡| 首页亚洲欧美制服丝腿| 日韩免费性生活视频播放| 国产专区欧美精品| 国产精品不卡视频| 精品视频色一区| 激情伊人五月天久久综合| 国产日韩欧美制服另类| 91老司机福利 在线| 视频一区二区中文字幕| 久久久久久久综合日本| 色噜噜狠狠色综合中国| 蜜桃在线一区二区三区| 中文一区在线播放| 欧美日韩中文另类| 国产一区二区主播在线| 亚洲精品乱码久久久久久黑人| 日韩一区二区视频在线观看| 成人小视频免费在线观看| 夜夜亚洲天天久久| 日韩精品一区二区三区老鸭窝| 成人精品gif动图一区| 性做久久久久久久免费看| 国产午夜久久久久| 欧美日韩国产在线播放网站| 国产乱码字幕精品高清av | 欧美挠脚心视频网站| 高清beeg欧美| 青青青伊人色综合久久| 自拍偷拍国产精品| 久久一夜天堂av一区二区三区| 91成人看片片| 国产精品538一区二区在线| 亚洲成在人线免费| 国产精品福利影院| 精品国免费一区二区三区| 欧美日韩国产综合久久| 99re热视频精品| 成人午夜激情在线| 国产真实乱偷精品视频免| 日韩高清不卡一区二区| 亚洲久草在线视频| 国产精品欧美一区喷水| 久久久综合激的五月天| 欧美不卡激情三级在线观看| 欧美理论电影在线| 欧美日韩精品二区第二页| 91精品国产色综合久久不卡电影| 97精品国产97久久久久久久久久久久 | 国产成人在线视频网站| 五月激情丁香一区二区三区| 日韩美女久久久| 中文字幕中文字幕一区二区 | 亚洲精品久久嫩草网站秘色| 久久久www成人免费毛片麻豆| 337p亚洲精品色噜噜| 91久久久免费一区二区| 91美女片黄在线观看91美女| 不卡一卡二卡三乱码免费网站| 国产成人鲁色资源国产91色综| 国产精品自拍一区| 国产.欧美.日韩| 成人白浆超碰人人人人| 91在线高清观看| 日本高清不卡在线观看| 日本道精品一区二区三区| 欧美亚洲免费在线一区| 色94色欧美sute亚洲线路一久| 91蜜桃婷婷狠狠久久综合9色| 91美女蜜桃在线| 欧美狂野另类xxxxoooo| 91精品国产综合久久国产大片| 91精品国产综合久久香蕉麻豆| 91精品久久久久久久99蜜桃| 精品电影一区二区三区| 日本一区二区三区久久久久久久久不 | 欧美日韩国产在线播放网站| 91精品国产麻豆国产自产在线| 欧美一区二区免费| 中文字幕免费不卡| 亚洲欧美激情小说另类| 亚洲一区二区av在线| 久久精品国产一区二区三| 成人免费视频免费观看| 91国偷自产一区二区三区成为亚洲经典 | 国产网站一区二区三区| 亚洲视频一二三区| 五月激情丁香一区二区三区| 免费精品视频最新在线| 成人综合激情网| 欧美日韩小视频| 久久综合色综合88| 亚洲图片激情小说| 蜜臀av在线播放一区二区三区| 黄色日韩网站视频| 一本大道av伊人久久综合| 制服丝袜中文字幕亚洲| 国产精品无人区| 亚洲不卡av一区二区三区| 国产黄色成人av| 欧美日韩一区二区在线观看视频| www国产成人| 亚洲成人自拍偷拍| 成人午夜伦理影院| 日韩精品一区二区三区四区视频 | 欧美日韩精品一区二区三区| 久久久精品日韩欧美| 亚洲成人自拍网| av亚洲精华国产精华精| 精品国产乱子伦一区| 亚洲二区在线视频| 成人高清免费观看|