📄 executable.h
字号:
// Executable.h: interface for the CExecutable class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_EXECUTABLE_H__78178C40_4A3C_11D5_ABE5_DE63F8E0C073__INCLUDED_)
#define AFX_EXECUTABLE_H__78178C40_4A3C_11D5_ABE5_DE63F8E0C073__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CintMember // Integer变量
{
public:
char name[64];
int value;
};
class CExecutable
{
public:
CExecutable(vector <CSub> Subs);
virtual ~CExecutable();
void Run(char *SubName,vector <CToken> Subarg); // SubName是要运行的过程名,它将在m_Subs里去寻找
private:
vector <CSub> m_Subs; // 装下所有过程
vector <CToken> m_tokens; // 装当前一个过程里所有标记的数据库
vector <CToken> m_argtokens; // 参数定义
vector <CintMember> m_intArray; // 装下所有Basic运行时int类型的变量
void Run_Print(int *index); // *index是重要的m_tokens里的指针
void Run_Dim(int *index); // ~~
void Run_Assignment(int *index);// 赋值语句
void Run_If(int *index);
void Run_While(int *index); // Do While .... LOOP语句
void Run_Do(int *index); // Do
void Run_Loop(int *index); // 循环到Loop的时候须处理循环
void Run_Exit(int *index); // 处理Exit Do,Exit For,Exit Function等
void Run_CallSub(int *index); // 处理调用过程
// Ai是辅助的意思,Ai_*()是辅助函数
int Ai_GetNextSubarg(vector <CToken> & Subarg,int *index); // Subarg是所要得到的参数标,index指到过程名
int Ai_GetNextValue(void* result,int type,int *index); // 得到代数式的值result
int Ai_GetVarNo(char *name,int *result,int type);// 得到变量在Array中的引索result
int Ai_GetSubNo(char *name,int *result);// 得到过程在m_Subs中的引索result
int Ai_GetNextThen(int *result,int *index); // result是下一个匹配Then语句的引索
int Ai_GetNextEndIf(int *result,int *index); // result是If结构结束的引索
int Ai_GetNextLoop(int *result,int *index); // result是下一个匹配Loop语句的引索
int Ai_GetLastDo(int *result,int *index); // result是上一个匹配Do语句的引索
int Ai_GetNextLine(int *result,int *index); // result是接下来的一个换行符的引索
int Ai_GetNextIfValue(int *result,int *index); // 如果If为真,result=1,反之result=0
void get_exp(int *result,int *index);
void level2(int *result,int *index);
void level3(int *result,int *index);
void level4(int *result,int *index);
void level5(int *result,int *index);
void level6(int *result,int *index);
void primitive(int *result,int *index);
void arith(char o,int *r,int *h);
void serror(int error);
int find_var(char *var_name,void *value); // 查找变量,将变量值装在*value
int Isvar(char *name); // 看看name是否是变量,返回变量类型 0:什么都不是,1:Integer,2:string
void Debug(int i);
};
#endif // !defined(AFX_EXECUTABLE_H__78178C40_4A3C_11D5_ABE5_DE63F8E0C073__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -