📄 by2view.cpp
字号:
// BY2View.cpp : implementation of the CBY2View class
//
#include "stdafx.h"
#include "BY2.h"
#include <stdlib.h>
#include "BY2Doc.h"
#include "BY2View.h"
#include "MainFrm.h"
#include "DataView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBY2View
IMPLEMENT_DYNCREATE(CBY2View, CEditView)
BEGIN_MESSAGE_MAP(CBY2View, CEditView)
//{{AFX_MSG_MAP(CBY2View)
ON_COMMAND(IDM_TEST, OnTest)
ON_COMMAND(IDM_Build, OnBuild)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CEditView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CEditView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBY2View construction/destruction
CBY2View::CBY2View()
{
// TODO: add construction code here
keyword[0]="main";
keyword[1]="int";
keyword[2]="real";
keyword[3]="char";
keyword[4]="if";
keyword[5]="else";
r=0;
}
CBY2View::~CBY2View()
{
}
BOOL CBY2View::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
BOOL bPreCreated = CEditView::PreCreateWindow(cs);
cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL); // Enable word-wrapping
return bPreCreated;
}
/////////////////////////////////////////////////////////////////////////////
// CBY2View drawing
void CBY2View::OnDraw(CDC* pDC)
{
CBY2Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CBY2View printing
BOOL CBY2View::OnPreparePrinting(CPrintInfo* pInfo)
{
// default CEditView preparation
return CEditView::OnPreparePrinting(pInfo);
}
void CBY2View::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// Default CEditView begin printing.
CEditView::OnBeginPrinting(pDC, pInfo);
}
void CBY2View::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// Default CEditView end printing
CEditView::OnEndPrinting(pDC, pInfo);
}
/////////////////////////////////////////////////////////////////////////////
// CBY2View diagnostics
#ifdef _DEBUG
void CBY2View::AssertValid() const
{
CEditView::AssertValid();
}
void CBY2View::Dump(CDumpContext& dc) const
{
CEditView::Dump(dc);
}
CBY2Doc* CBY2View::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CBY2Doc)));
return (CBY2Doc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CBY2View message handlers
void CBY2View::OnTest()
{
// TODO: Add your command handler code here
CString str(this->LockBuffer());
int i=str.GetLength();
char k;
k=(char)str.GetAt(2);
if(k=='i')
{
this->MessageBox("ok");
}
}
void CBY2View::OnBuild()
{
// TODO: Add your command handler code here
CDataView *pView=(CDataView *)((CMainFrame *)AfxGetMainWnd())->m_wndSplitter.GetPane(1,0);
CString str(this->LockBuffer());
this->UnlockBuffer();
int j=str.GetLength();
int i=0;
int k=0;
int flag=0;
char temp;
char TOKEN[9];
char NUM[5];
int error=0;
int r=0;
CBY2Doc* pDoc = GetDocument();
(pDoc->result).Empty( );
if(i<j)
temp=(char)str.GetAt(i);
i++;
while(i<=j)
{
if(isalpha(temp))
{
TOKEN[0]=temp;
//TOKEN.SetAt(0,temp);
k++;
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
while(isalnum(temp))
{
if(k<8)
{
TOKEN[k]=temp;
//TOKEN.SetAt(k,temp);
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
k++;
}//if(k<8)
else
{
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
error=1;
}
}//while(isalnum(temp))
TOKEN[k]='\0';
//TOKEN.SetAt(k,temp);
k=0;
if(error==0)
{
char t=Check_alphabet(TOKEN);
int num1=atoi(&t);
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+=TOKEN;
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=num1;
result[r][1]=flag;
r++;
}
if(error==1)
{
char ch[10];
CBY2Doc* pDoc = GetDocument();
pDoc->result+="The Error in the ROW:";
itoa(flag,ch,10);
pDoc->result+=ch;
pDoc->result+='\r';
pDoc->result+='\n';
error=0;
}
//处理;
}//if(isalpha(temp))
else
if(isdigit(temp))
{
if(temp=='0')
{
NUM[0]=temp;
//NUM.SetAt(0,temp);
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
k++;
}//if(temp=='0')
else
{
NUM[0]=temp;
//NUM.SetAt(0,temp);
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
k++;
while(isdigit(temp))
{
if(k<5)
{
NUM[k]=temp;
//NUM.SetAt(0,temp);
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
k++;
}//if(k<5)
else
{
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
error=2;
}
}//while(isdigit(ch))
}//else//if(temp=='0')
NUM[k]='\0';
//NUM.SetAt(k,temp);
k=0;
if(error==0)
{
char t='7';
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+=NUM;
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=7;
result[r][1]=flag;
r++;
}
if(error==2)
{
char ch[10];
CBY2Doc* pDoc = GetDocument();
pDoc->result+="The Error in the ROW:";
itoa(flag,ch,10);
pDoc->result+=ch;
pDoc->result+='\r';
pDoc->result+='\n';
error=0;
error=0;
}
//处理;
}//if(isdigit(ch))
else
switch(temp)
{
case '&':
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
if(temp=='&')
{
char t='8';
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+="&&";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=8;
result[r][1]=flag;
r++;
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
}
else
{
error=3;
}
break;//case '&':
case '>':
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
if(temp=='=')
{
//chuli
CString t='9';
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+=">=";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=9;
result[r][1]=flag;
r++;
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
}
else
{
//chuli
CString t="12";
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+=">";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=12;
result[r][1]=flag;
r++;
}
break;
case '<':
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
if(temp=='=')
{
char t[5]="10";
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+="<=";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=10;
result[r][1]=flag;
r++;
//chuli
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
}
else
{
char t[5]="13";
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+="<";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=13;
result[r][1]=flag;
r++;
}
break;
case '!':
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
if(temp=='=')
{
char t[5]="15";
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+=">";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=15;
result[r][1]=flag;
r++;
//chuli
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
}
else
{
error=3;
}
break;
case '(':
{
char t[5]="16";
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+=" ( ";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=16;
result[r][1]=flag;
r++;
}
//chuli
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
break;
case ')':
{
char t[5]="17";
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+=" ) ";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=17;
result[r][1]=flag;
r++;
}
//chuli
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
break;
case '{':
{
char t[5]="18";
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+=" { ";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=18;
result[r][1]=flag;
r++;
}
//chuli
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
break;
case '}':
{
char t[5]="19";
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+=" } ";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=19;
result[r][1]=flag;
r++;
}
//chuli
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
break;
case '+':
{
char t[5]="20";
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+=" + ";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=20;
result[r][1]=flag;
r++;
}
//chuli
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
break;
case '-':
{
char t[5]="21";
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+=" - ";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=21;
result[r][1]=flag;
r++;
}
//chuli
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
break;
case '*':
{
char t[5]="22";
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+=" * ";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=22;
result[r][1]=flag;
r++;
}
//chuli
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
break;
case '/':
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
if(temp=='/')
{
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
while(temp!=13)
{
if(i<j)
temp=(char)str.GetAt(i);
else
temp=13;
i++;
}
if(i<j)
temp=(char)str.GetAt(i);
else
temp=10;
i++;
}
else
if(temp=='*')
{
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
int finish=1;
while(finish)
{
if(temp=='*')
{
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
if(temp=='/')
{
finish=0;
}
else
i--;
}
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
if(i>=j) break;
}
}//if(temp=='*')
else
{
char t[5]="23";
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+=" / ";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=23;
result[r][1]=flag;
r++;
}
break;
case '.':
{
char t[5]="24";
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+=" . ";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=24;
result[r][1]=flag;
r++;
}
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
break;
case ';':
{
char t[5]="25";
pDoc->result+='(';
pDoc->result+=t;
pDoc->result+=" , ";
pDoc->result+=" ; ";
pDoc->result+=')';
pDoc->result+='\r';
pDoc->result+='\n';
result[r][0]=25;
result[r][1]=flag;
r++;
}
if(i<j)
temp=(char)str.GetAt(i);
else
temp=001;
i++;
break;
case ' ':
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -