?? yufdlg.cpp
字號:
// Yufdlg.cpp : implementation file
//
#include "stdafx.h"
#include "詞法分析.h"
#include "Yufdlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
int i;
/////////////////////////////////////////////////////////////////////////////
// CYufdlg dialog
CYufdlg::CYufdlg(CWnd* pParent /*=NULL*/)
: CDialog(CYufdlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CYufdlg)
m_Sc = _T("");
m_Rc = _T("");
//}}AFX_DATA_INIT
}
void CYufdlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CYufdlg)
DDX_Text(pDX, IDC_CHU, m_Sc);
DDX_Text(pDX, IDC_RU, m_Rc);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CYufdlg, CDialog)
//{{AFX_MSG_MAP(CYufdlg)
ON_BN_CLICKED(IDC_yfenx, Onyfenx)
ON_BN_CLICKED(IDC_clear, Onclear)
ON_BN_CLICKED(IDC_cancel, Oncancel)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CYufdlg message handlers
void CYufdlg::Onyfenx()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
i=0;
if(m_Sc!="")
U();
UpdateData(FALSE);
}
bool CYufdlg::U()
{
E();
return 1;
}
bool CYufdlg::E()
{
m_Rc+="E->TG\r\n";
if(T())
if(G())
return 1;
else return 0;
else
return 0;
}
bool CYufdlg::T()
{ m_Rc+="T->FS\r\n";
if(F())
if(S())
return 1;
else return 0;
else
return 0;
}
bool CYufdlg::F()
{
switch (m_Sc[i])
{
case '(':
{
m_Rc+="F->(E)\r\n";
i++;
return 1;
}
case 'i':
{
m_Rc+="F->i\r\n";
i++;
return 1;
}
default:
{
m_Rc+="分析錯誤\r\n";
return 0;
}
}
}
bool CYufdlg::S()
{
switch(m_Sc[i])
{
case '*':
{
m_Rc+="S->*FS\r\n";
i++;
if(F())
if(S())
return 1;
else
return 0;
}
case '/':
{
m_Rc+="S->/FS\r\n";
i++;
if(F())
if(S())
return 1;
else
return 0;
}
case '#':
{
m_Rc+="S->ε\r\n";
m_Rc+="接受";
return 0;
}
default :
{
m_Rc+="S->ε\r\n";
return 1;
}
}
}
bool CYufdlg::G()
{
switch(m_Sc[i])
{
case '+':
{
m_Rc+="G->+TG\r\n";
i++;
if(T())
if(G())
return 1;
else
return 0;
else
return 0;
}
case '/':
{
m_Rc+="G->-TG\r\n";
i++;
if(T())
if(G())
return 1;
else
return 0;
}
case '#':
{
m_Rc+="G->ε\r\n";
m_Rc+="接受";
return 0;
}
default :
{
m_Rc+="G->ε\r\n";
return 1;
}
}
}
//i+i*i#
void CYufdlg::Onclear()
{
// TODO: Add your control notification handler code here
m_Sc="";
m_Rc="";
UpdateData(FALSE);
}
void CYufdlg::Oncancel()
{
// TODO: Add your control notification handler code here
CDialog::OnOK();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -