www.pudn.com > pl0.zip > Grammar.h


#ifndef __GRAMMAR_H 
#define __GRAMMAR_H 
 
#include "Simpsc.h" 
 
#define MAX_LEV 3   //过程最多可嵌套三层 
 
class Grammar   
{ 
private: 
	int dx[MAX_LEV+1];	//计算每个变量在运行栈中相对本过程基地址的偏移量 
	int lev;			//层次 
	int bx;				//单词坐标 
	int ex; 
	int y; 
	int i;				//当前单词 
//	Word Token[MAX]; 
	Simpsc *pl; 
public: 
	Grammar(Simpsc *p); 
	bool Analysis(Word *Token); 
	char *ReturnName(Word *Token); 
	int ReturnLevel(){return lev;} 
	int ReturnAddr(){return dx[lev];} 
private: 
	void ConstDecla(Word *Token); 
	void ConstVar(Word *Token); 
	void VarDecla(Word *Token); 
	bool ProceFactor(Word *Token); 
	bool ProceTerm(Word *Token); 
	bool ProceExp(Word *Token); 
	bool ProceLexp(Word *Token); 
	bool ProceState(Word *Token); 
	bool ProceBody(Word *Token); 
	bool ProceConst(Word *Token); 
	bool ProceCondecl(Word *Token);   
	bool ProceVardecl(Word *Token); 
	bool ProceProc(Word *Token); 
	bool ProceBlock(Word *Token); 
	bool ProceProg(Word *Token); 
};               
 
#endif // Grammar.h