📄 analyze.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 + -