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

📄 cifadlg.cpp

📁 编译原理词法分析、语法分析等程序的实现
💻 CPP
字号:
// CifaDlg.cpp : implementation file
//

#include "stdafx.h"
#include "词法分析.h"
#include "CifaDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CCifaDlg dialog


CCifaDlg::CCifaDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCifaDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCifaDlg)
	m_Ylist = _T("");
	m_Mlist = _T("");
	//}}AFX_DATA_INIT
}


void CCifaDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCifaDlg)
	DDX_Text(pDX, IDC_ydaima, m_Ylist);
	DDX_Text(pDX, IDC_jieguo, m_Mlist);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCifaDlg, CDialog)
	//{{AFX_MSG_MAP(CCifaDlg)
	ON_BN_CLICKED(IDC_OK, OnOk)
	ON_BN_CLICKED(IDC_GUANJIANZI, OnGuanjianzi)
	ON_BN_CLICKED(IDC_YUNSUANFU, OnYunsuanfu)
	ON_BN_CLICKED(IDC_JIEFU, OnJiefu)
	ON_BN_CLICKED(IDC_FENXI, OnFenxi)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCifaDlg message handlers

void CCifaDlg::OnOk() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnOK();
	
}

void CCifaDlg::OnGuanjianzi() 
{
	// TODO: Add your control notification handler code here
    LPCTSTR lpszFilter="txt Files(*.txt)|*.txt|*.txt|任何文件|*.*||";
	CFileDialog dlg1(TRUE,lpszFilter,NULL,OFN_HIDEREADONLY|
		OFN_OVERWRITEPROMPT,lpszFilter,NULL);
	CString filename;
	CStdioFile file;
	CString s;
	//打开文件对话框
	if(dlg1.DoModal()==IDOK)
	{
		filename=dlg1.GetPathName();
		if(file.Open(filename,CFile::modeRead|CFile::shareDenyNone|CFile::typeText,NULL)==0)
		{
			AfxMessageBox("无法打开文件!",MB_OK,0);
			return;
		}
    }
	while(file.ReadString(s))
		gjz.Add(s);
}

void CCifaDlg::OnYunsuanfu() 
{
	// TODO: Add your control notification handler code here
 LPCTSTR lpszFilter="txt Files(*.txt)|*.txt|*.txt|任何文件|*.*||";
	CFileDialog dlg1(TRUE,lpszFilter,NULL,OFN_HIDEREADONLY|
		OFN_OVERWRITEPROMPT,lpszFilter,NULL);
	CString filename;
    CStdioFile file;
	CString s;
	//打开文件对话框
	if(dlg1.DoModal()==IDOK)
	{
		filename=dlg1.GetPathName();
		if(file.Open(filename,CFile::modeRead|CFile::shareDenyNone|CFile::typeText,NULL)==0)
		{
			AfxMessageBox("无法打开文件!",MB_OK,0);
			return;
		}
    }
	   while(file.ReadString(s))
		ysf.Add(s);
    

	
}

void CCifaDlg::OnJiefu() 
{
	// TODO: Add your control notification handler code here
	 LPCTSTR lpszFilter="txt Files(*.txt)|*.txt|*.txt|任何文件|*.*||";
	CFileDialog dlg1(TRUE,lpszFilter,NULL,OFN_HIDEREADONLY|
		OFN_OVERWRITEPROMPT,lpszFilter,NULL);
	CString filename;
		CStdioFile file;
	CString s;
	//打开文件对话框
	if(dlg1.DoModal()==IDOK)
	{
		filename=dlg1.GetPathName();
		if(file.Open(filename,CFile::modeRead|CFile::shareDenyNone|CFile::typeText,NULL)==0)
		{
			AfxMessageBox("无法打开文件!",MB_OK,0);
			return;
		}
    }	
		while(file.ReadString(s))
		jf.Add(s);
    

}

void CCifaDlg::OnFenxi() 
{
	// TODO: Add your control notification handler code here
	
int len,i,j,flag=0,k;
CString s="";
CString c="";


UpdateData(TRUE);
len=m_Ylist.GetLength();
/*for(i=0;i<ysf.GetSize();i++)
m_Mlist+=ysf[i];*/
i=0;
   while(i<len)
   {
		flag=0;
		k=0;
      for(j=0;j<ysf.GetSize();j++)
	  {	
		      if(i<len-1)
			  { 
				   c+=m_Ylist[i];
				   c+=m_Ylist[i+1];


			    if(c==ysf[j])
				{
				 
				      m_Mlist+="<4,\"";
					  m_Mlist+=ysf[j];
					  
					  m_Mlist+="\">\r\n";
					  flag=1;
					  k=1;
				   break;

				}
			  }
		  
			if(m_Ylist[i]==ysf[j]&&flag==0)
			  {
						  
                  m_Mlist+="<4,\"";
				  m_Mlist+=m_Ylist[i];
				  m_Mlist+="\">\r\n";  
				  flag=1;
				break;
			  }
	  }
    if(flag==0)
		{
			for(j=0;j<jf.GetSize();j++)
		  {	
			  if(m_Ylist[i]==jf[j])
			  {
				m_Mlist+="<5,\"";
				m_Mlist+=m_Ylist[i];
				m_Mlist+="\">\r\n";
				flag=1;
				break;
			  }
		}
	}
	  if(/*(flag==1&&s!="")||(*/s!=""&&m_Ylist[i]==' ')
	{	  
		for(j=0;j<gjz.GetSize();j++)
		{
			if(s==gjz[j])
			{
				m_Mlist+="<1,\""+s+"\">\r\n";
			  s="";
				flag=1;
				break;
			}
		}
		 
	}
 	
      if((flag==1&&s!="")||(s!=""&&m_Ylist[i]==' '&&m_Ylist[i]=='\t'))
		{
		      if(s[0]>='0'&&s[0]<='9')

		        m_Mlist+="<3,\""+s+"\">\r\n";
		      else
			  m_Mlist+="<2,\""+s+"\">\r\n";
              s="";
			  flag=1;
	}

		
	else{
		if(flag!=1&&m_Ylist[i]!=' '&&m_Ylist[i]!='\n'&&m_Ylist[i]!='\r'&&m_Ylist[i]!='\t')
		s+=m_Ylist[i];
	   
	}
	i+=k+1;
   }
			UpdateData(FALSE);     
}

void CCifaDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	m_Ylist="";
	m_Mlist="";
	UpdateData(FALSE);
	//CDialog::OnCancel();
}
/*
main()
{
int a,b;
a = 10;
b = a + 20;
}
*/

⌨️ 快捷键说明

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