?? pl0doc.h
字號:
// PL0Doc.h : interface of the CPL0Doc class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_PL0DOC_H__493B6EEC_89CC_4D52_9232_FA9737C51D22__INCLUDED_)
#define AFX_PL0DOC_H__493B6EEC_89CC_4D52_9232_FA9737C51D22__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Tables.h"
#include "Show.h"
#define StackSize 2000
class CPL0Doc : public CDocument
{
protected: // create from serialization only
CPL0Doc();
DECLARE_DYNCREATE(CPL0Doc)
// Attributes
public:
MyPoint InPoint;
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CPL0Doc)
public:
virtual BOOL OnNewDocument();//生成新的窗口
virtual void Serialize(CArchive& ar);//數據的串行化
virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);//打開文件
virtual BOOL CanCloseFrame(CFrameWnd* pFrame);//允許關閉窗口
virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);//保存文件
virtual void DeleteContents();
//}}AFX_VIRTUAL
// Implementation
public:
//詞法分析用函數
char GetChar(int n=1);
CString OutputKeyWord();//輸出關鍵詞
int SearchKeyWord(CString str);//尋找關鍵詞
//語法分析用函數
void Advance(int i=1);
bool test(CString n, int lev,int tx);//檢查語法錯誤
bool test(CString n,int lev,int tx,KIND k);
bool enter(CString n,KIND k,int lev,int val,int r,int c);
void error(int a);
void factor(int lev, int tx);
void expression(int lev, int tx);
void term(int lev, int tx);
void condition(int lev,int tx);
void statement(int lev,int tx);
void block(int lev,int tx);
void program();
void Constdeclaration(int & dep);
void Vardeclaration(int & dep);
void Advanced(int i=1);
int Position(CString idname);
void Factor(int lev,int tx);
void Term(int lev,int tx,int i=1);
void Expression(int lev,int tx);
void Condition(int lev,int tx);
void Statement(int lev,int tx);
void Block(int lev,int tx);
bool Generate(Functions func,int lev,int amount);
int Base(int lev);
void Interpret(bool & interrupt,int count);
virtual ~CPL0Doc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
//{{AFX_MSG(CPL0Doc)
afx_msg void OnFileSaveAs();
afx_msg bool OnSyntaxAnalyze();
afx_msg void OnWordAnalyze();
afx_msg void OnWordAnalyzeFile();
afx_msg void OnWordAnalyzeSee();
afx_msg bool OnCodesAnalyze();
afx_msg void OnExecute();
afx_msg void OnCodesview();
afx_msg void OnSynHelp();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
CString source; //源程序
CString keyword[KeywordTotal+1];
int nPreChar;
int nPreLine;
int nPreColumn;
TwoElement twoelement; //二元組
DefConstant defconstant;//常量表
DefSymbol defsymbol; //變量表
TEI PreTEI; //二元組項
TEI MyPointer;
TEI MyAssitPointer;
int Sym;
CString temp;
int num;
int TX;
TABLE table[500]; //語法分析符號表
int sym; //Advance()讀到的種類
CString sym_name; //Advance()讀到的標識符
int sym_val; //Advance()讀到的標識符值
int sym_line; //Advance()讀到的標識符所在行
int sym_column; //Advance()讀到的標識符所在列
/////////////////////////////////////////////////
int sym_word;
// Point CurPoint;
Instruction Codes[MaxCodeLine];
int CIndex;
//int CIndex0;
int CIndexCode;
/////////////
//int DX;
//int TX0;
int TXCode ;
int total_err; //當前程序分析出的語法錯誤總數
CString all_err[500]; //當前程序分析出的語法錯誤
CString err[33]; //語法錯誤種類
//////////////
//int RelDepth;
int Stack[StackSize];
int CurBase;
int Top;
int Ip;
Instruction Instructor;
//Show Input;
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_PL0DOC_H__493B6EEC_89CC_4D52_9232_FA9737C51D22__INCLUDED_)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -