📄 cifaview.cpp
字号:
// CIFAView.cpp : implementation of the CCIFAView class
//
#include "stdafx.h"
#include "CIFA.h"
#include "CIFADoc.h"
#include "CIFAView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCIFAView
IMPLEMENT_DYNCREATE(CCIFAView, CFormView)
BEGIN_MESSAGE_MAP(CCIFAView, CFormView)
//{{AFX_MSG_MAP(CCIFAView)
ON_BN_CLICKED(IDC_BUTTON1, OnInput)
ON_BN_CLICKED(IDC_BUTTON2, Onoutput)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_BN_CLICKED(IDC_RADIO6, OnRadio6)
ON_BN_CLICKED(IDC_RADIO7, OnRadio7)
ON_BN_CLICKED(IDC_RADIO8, OnRadio8)
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCIFAView construction/destruction
CCIFAView::CCIFAView()
: CFormView(CCIFAView::IDD)
{
//{{AFX_DATA_INIT(CCIFAView)
m_edit = _T("");
str="";
select=0;
//}}AFX_DATA_INIT
// TODO: add construction code here
}
CCIFAView::~CCIFAView()
{
}
void CCIFAView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCIFAView)
DDX_Control(pDX, IDC_LIST1, m_list);
DDX_Text(pDX, IDC_EDIT1, m_edit);
//}}AFX_DATA_MAP
}
BOOL CCIFAView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFormView::PreCreateWindow(cs);
}
void CCIFAView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
//SetWindowText("词法分析");
str.Format("%s","/*输入或载入文件*/");
this->SetDlgItemText(IDC_EDIT1,str);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_list.InsertColumn(0,"一",LVCFMT_CENTER,45);
m_list.InsertColumn(1,"二",LVCFMT_CENTER,45);
m_list.InsertColumn(2,"三",LVCFMT_CENTER,45);
m_list.InsertColumn(3,"四",LVCFMT_CENTER,45);
m_list.InsertColumn(4,"五",LVCFMT_CENTER,45);
m_list.InsertColumn(5,"符号",LVCFMT_CENTER,100);
}
/////////////////////////////////////////////////////////////////////////////
// CCIFAView printing
BOOL CCIFAView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CCIFAView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CCIFAView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
void CCIFAView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
// TODO: add customized printing code here
}
/////////////////////////////////////////////////////////////////////////////
// CCIFAView diagnostics
#ifdef _DEBUG
void CCIFAView::AssertValid() const
{
CFormView::AssertValid();
}
void CCIFAView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CCIFADoc* CCIFAView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCIFADoc)));
return (CCIFADoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CCIFAView message handlers
void CCIFAView::OnInput()
{
CFile l_file;
char *buffer=NULL;
CString strfile;
switch(select)
{case 0:
strfile="cifa.txt";break;
case 1:
strfile="cifa1.txt";break;
case 2:
strfile="cifa2.txt";break;
default:
break;
}
if(l_file.Open((LPCTSTR)strfile,CFile::modeReadWrite))
{int length=l_file.GetLength();
buffer=new char[length+1];
l_file.SeekToBegin();
l_file.Read(buffer,length);
buffer[length]='\0';
this->SetDlgItemText(IDC_EDIT1,buffer);
//str.Format("%d",length);
//m_list.InsertItem(0,str);
l_file.Close();
str=buffer;
}
else
{ str.Format("%s","没有文件!");
this->SetDlgItemText(IDC_EDIT1,str);
}
}
typedef struct NUM{
int A;
int B;
int C;
int D;
int E;
}NUM,*Npoint;
typedef struct ArrNOde
{
CString fuhao;
NUM N;
}ArrNOde;
void CCIFAView::Onoutput()
{m_list.DeleteAllItems();
CEdit *PEdit1=(CEdit*)GetDlgItem(IDC_EDIT1);
PEdit1->GetWindowText(str);
int length=str.GetLength();
//CString g=str.GetAt(length);
if(str=="")
{
str.Format("%s","没有文件!");
this->SetDlgItemText(IDC_EDIT1,str);
}
ArrNOde Arr[100];
Arr[0].fuhao="void";Arr[0].N.A=1; Arr[0].N.B=0;Arr[0].N.C=0;Arr[0].N.D=0;Arr[0].N.E=22;
Arr[1].fuhao="int";Arr[1].N.A=1; Arr[1].N.B=1;Arr[1].N.C=0;Arr[1].N.D=0;Arr[1].N.E=23;
Arr[2].fuhao="float";Arr[2].N.A=1; Arr[2].N.B=1;Arr[2].N.C=0;Arr[2].N.D=0;Arr[2].N.E=24;
Arr[3].fuhao="if";Arr[3].N.A=1; Arr[3].N.B=0;Arr[3].N.C=0;Arr[3].N.D=0;Arr[3].N.E=25;
Arr[4].fuhao="else";Arr[4].N.A=1; Arr[4].N.B=0;Arr[4].N.C=0;Arr[4].N.D=0;Arr[4].N.E=26;
Arr[5].fuhao="while";Arr[5].N.A=1; Arr[5].N.B=0;Arr[5].N.C=0;Arr[5].N.D=0;Arr[5].N.E=27;
Arr[6].fuhao="do";Arr[6].N.A=1; Arr[6].N.B=0;Arr[6].N.C=0;Arr[6].N.D=0;Arr[6].N.E=28;
Arr[7].fuhao="return";Arr[7].N.A=1; Arr[7].N.B=0;Arr[7].N.C=0;Arr[7].N.D=0;Arr[7].N.E=29;
Arr[8].fuhao="+";Arr[8].N.A=1; Arr[8].N.B=0;Arr[8].N.C=1;Arr[8].N.D=4;Arr[8].N.E=3;
Arr[9].fuhao="-";Arr[9].N.A=1; Arr[9].N.B=0;Arr[9].N.C=1;Arr[9].N.D=5;Arr[9].N.E=5;
Arr[10].fuhao="*";Arr[10].N.A=1; Arr[10].N.B=0;Arr[10].N.C=0;Arr[10].N.D=0;Arr[10].N.E=22;
Arr[11].fuhao="/";Arr[11].N.A=1;Arr[11].N.B=0;Arr[11].N.C=1;Arr[11].N.D=5;Arr[11].N.E=6;
Arr[12].fuhao="<";Arr[12].N.A=1; Arr[12].N.B=0;Arr[12].N.C=1;Arr[12].N.D=3;Arr[12].N.E=7;
Arr[13].fuhao="<=";Arr[13].N.A=1; Arr[13].N.B=0;Arr[13].N.C=1;Arr[13].N.D=3;Arr[13].N.E=8;
Arr[14].fuhao=">";Arr[14].N.A=1; Arr[14].N.B=0;Arr[14].N.C=1;Arr[14].N.D=3;Arr[14].N.E=9;
Arr[15].fuhao=">=";Arr[15].N.A=1; Arr[15].N.B=0;Arr[15].N.C=1;Arr[15].N.D=3;Arr[15].N.E=10;
Arr[16].fuhao="!=";Arr[16].N.A=1; Arr[16].N.B=0;Arr[16].N.C=1;Arr[16].N.D=2;Arr[16].N.E=12;
Arr[17].fuhao="=";Arr[17].N.A=1; Arr[17].N.B=0;Arr[17].N.C=1;Arr[17].N.D=1;Arr[17].N.E=13;
Arr[18].fuhao="==";Arr[18].N.A=1; Arr[18].N.B=0;Arr[18].N.C=1;Arr[18].N.D=2;Arr[18].N.E=11;
Arr[19].fuhao=";";Arr[19].N.A=1; Arr[19].N.B=0;Arr[19].N.C=0;Arr[19].N.D=0;Arr[19].N.E=14;
Arr[20].fuhao=",";Arr[20].N.A=1; Arr[20].N.B=0;Arr[20].N.C=0;Arr[20].N.D=0;Arr[20].N.E=15;
Arr[21].fuhao="(";Arr[21].N.A=1; Arr[21].N.B=0;Arr[21].N.C=0;Arr[21].N.D=0;Arr[21].N.E=16;
Arr[22].fuhao=")";Arr[22].N.A=1; Arr[22].N.B=0;Arr[22].N.C=0;Arr[22].N.D=0;Arr[22].N.E=17;
Arr[23].fuhao="[";Arr[23].N.A=1; Arr[23].N.B=0;Arr[23].N.C=0;Arr[23].N.D=0;Arr[23].N.E=18;
Arr[24].fuhao="]";Arr[24].N.A=1; Arr[24].N.B=0;Arr[24].N.C=0;Arr[24].N.D=0;Arr[24].N.E=19;
Arr[25].fuhao="{";Arr[25].N.A=1; Arr[25].N.B=0;Arr[25].N.C=0;Arr[25].N.D=0;Arr[25].N.E=20;
Arr[26].fuhao="}";Arr[26].N.A=1; Arr[26].N.B=0;Arr[26].N.C=0;Arr[26].N.D=0;Arr[26].N.E=21;
CString ch="";
CString sym="";
int pos=0;
int flag=-1;
int h=-1;
int c=-1;
//int length=str.GetLength();
CString temp="";
ch=str.GetAt(pos);
while( pos<length)
{
ch=str.GetAt(pos);
flag=-1;
h=-1;
if(ch>='a'&&ch<='z')
{
while (ch!=" "&&pos<length)
{ ch=str.GetAt(pos);
if(ch>='a'&&ch<='z'||ch>='0'&&ch<='9')
{sym=sym+ch;
pos++;
}
else
break;
}
for(int i=0;i<=26;i++)
{
if(sym==Arr[i].fuhao)
{flag=1;
c++;
temp.Format("%d",Arr[i].N.A);
m_list.InsertItem(c,temp);
temp.Format("%d",Arr[i].N.B);
m_list.SetItemText(c,1,temp);
temp.Format("%d",Arr[i].N.C);
m_list.SetItemText(c,2,temp);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -