⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 executable.h

📁 Basic语言解释器.zip
💻 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 + -