⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 automakeview0.cpp

📁 一个大学时候做的编译原理的实验.实验内容是正则表达式到NFA到DFA到最小化DFA最终生成词法分析代码的整个过程的演示.那时由于时间关系,词法分析代码自动生成部分还没完成.
💻 CPP
字号:
// AutoMakeView0.cpp : implementation file
//

#include "stdafx.h"
#include "AutoMake.h"
#include "AutoMakeView0.h"

#include "AutoMakeDoc.h"

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

/////////////////////////////////////////////////////////////////////////////
// CAutoMakeView0

IMPLEMENT_DYNCREATE(CAutoMakeView0, CView)

CAutoMakeView0::CAutoMakeView0()
{
}

CAutoMakeView0::~CAutoMakeView0()
{
}


BEGIN_MESSAGE_MAP(CAutoMakeView0, CView)
//{{AFX_MSG_MAP(CAutoMakeView0)
ON_WM_CREATE()
ON_WM_SIZE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAutoMakeView0 drawing

void CAutoMakeView0::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
	// TODO: add draw code here
}

/////////////////////////////////////////////////////////////////////////////
// CAutoMakeView0 diagnostics

#ifdef _DEBUG
void CAutoMakeView0::AssertValid() const
{
	CView::AssertValid();
}

void CAutoMakeView0::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CAutoMakeView0 message handlers

int CAutoMakeView0::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	m_Edit.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|ES_READONLY,
		CRect(0,0,0,0),   this,   1);
	m_Edit.SetWindowText("a(a|b)*");
	m_Static.Create("你选择的正则表达式为:",WS_CHILD|WS_VISIBLE,
		CRect(0,0,0,0),   this);
	/*创建列表*/
	m_ListCtrl.Create(WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_NOSORTHEADER,
		CRect(0,0,0,0),   this,   3);
	/*设置风格*/
	DWORD style=m_ListCtrl.GetExtendedStyle();
	style|=LVS_EX_GRIDLINES;
	m_ListCtrl.SetExtendedStyle(style);
	/*设置列属性*/
	LV_COLUMN lvcol;
	lvcol.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
	
    lvcol.fmt=LVCFMT_CENTER;//居中
	lvcol.pszText="正则表达式";
    lvcol.iSubItem=0;
    lvcol.cx=0;
	m_ListCtrl.InsertColumn(1,&lvcol);
    m_ListCtrl.SetTextColor(RGB(0,0,255));
	ShowRList();
	
	return 0;
}

void CAutoMakeView0::OnSize(UINT nType, int cx, int cy) 
{
	CView::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
	CRect rc,rt;
	GetClientRect(&rc);
	rt=rc;
	rt.bottom=20;
	m_Static.MoveWindow(&rt);
	rt.top=20;
	rt.bottom=40;
	m_Edit.MoveWindow(&rt);
	rc.top+=40;
	m_ListCtrl.MoveWindow(&rc);
	m_ListCtrl.SetColumnWidth(0,rc.Width());
}

void CAutoMakeView0::ShowRList()
{
	CAutoMakeDoc* pDoc = (CAutoMakeDoc*)GetDocument();
	CString str;
	int i=0;
	int index=0;
	int Length=pDoc->m_strR.GetLength();
	while(i<Length)
	{
		if(pDoc->m_strR[i]!='\n')
		{
			str+=pDoc->m_strR[i];
		}
		if(pDoc->m_strR[i]=='\n'||i==Length-1)
		{
			char r[256];
			/*添加记录*/
			LV_ITEM lvitem;
			lvitem.mask=LVIF_TEXT;
			lvitem.iItem=index;
			lvitem.iSubItem=0;
			sprintf(r,"%s",str);
			lvitem.pszText=(char*)r;
			lvitem.lParam=index++;
			m_ListCtrl.InsertItem(&lvitem);
			str.Empty();
		}
		i++;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -