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

📄 analyze.h

📁 内含源代码和编译实验报告
💻 H
字号:
#ifndef ANALYZE_H_
#define ANALYZE_H_

/*****************************************************************
**类名:	Canalyzer
**功能描述:该类为一个语义分析器,内含一个语法分析器,一张符号表。
**          完成符号表的创建与语义检查功能。

*****************************************************************/
class Canalyzer{
	friend	class		Cgenerator;
private:
	static int			m_ierror;			//指示类型检测有误,阻止代码生成的进行。
	static int			m_ilineno;
	char		m_strScope[MAXTOKENLEN+1];	//记录当前在语法树的哪个范围内(全局还是某个函数)
	static int	m_ilocation;				//记录当前变量总的数目。
	static Csymboltab*	m_Csymtab;
	static CPraser		*m_pPraser;
	static CTreeNode	*m_syntaxTree;
private:
	void traverse(CTreeNode *t, void(* preProc)(CTreeNode *),
								void(* postProc)(CTreeNode *));
	static void nullProc(CTreeNode *t);
	static void insertNode(CTreeNode *t);
	static void checkNode(CTreeNode *t);
	static void checkgoto(CTreeNode *t);	//为goto语句单独进行第二遍语义检查。
	void buildSymtab(CTreeNode* syntaxTree);
	void typeCheck(CTreeNode* syntaxTree);
public:
	Canalyzer();
	~Canalyzer();
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -