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_)