analyze.h

来自「内含源代码和编译实验报告」· C头文件 代码 · 共 34 行

H
34
字号
#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 + =
减小字号Ctrl + -
显示快捷键?