www.pudn.com > Basic语言解释器.zip > 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 Subs);
virtual ~CExecutable();
void Run(char *SubName,vector Subarg); // SubName是要运行的过程名,它将在m_Subs里去寻找
private:
vector m_Subs; // 装下所有过程
vector m_tokens; // 装当前一个过程里所有标记的数据库
vector m_argtokens; // 参数定义
vector 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 & 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_)