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

📄 globals.h

📁 内含源代码和编译实验报告
💻 H
字号:
/******************************************************************
** 文件名: globals.h
** 描  述: 一些整个程序中要用到的全局常量,宏定义,结构体,枚举量的定义
**         及程序中要用到的头文件都包括在此。
******************************************************************/
#ifndef		_GLOBALS_H_
#define		_GLOBALS_H_

#include	<string>
#include	<iostream>
#include	<fstream>
#include	<exception>
using namespace std;
#include	"myexception.h"

#ifndef		FALSE
#define		FALSE	0
#endif

#ifndef		TRUE
#define		TRUE	1
#endif
/*******************************************
**所有类的前向声明。
*******************************************/
/**********异常处理类*********/
class CbadCommand;
class CInvalid_pointer;
class CCompile_error;
	class CInvalid_type;

/*********命令行参数开关**********/
class CCommandOpt;
	class CCommandClass;

/*********扫描器*****************/
class CScaner;
	struct CStates;
	class CSymbols;

/******语法分析器**************/
class CPraser;
	struct CTreeNode;

/********语义分析器************/
class Canalyzer;

/*******符号表*****************/
class Csymboltab;
	struct CBucketListRes;
		struct	CLineListRes;

/*******一些全局变量***********/
struct CCompileOption;
struct CGlobals;
struct CFlags;

/********代码生成器***********/
class Cgenerator;

/**********************************************************
**  C-语言中用到的所有记号
**********************************************************/
enum TokenType {ENDFILE, ERROR,									/*附加类型*/
		IF, ELSE, WHILE, FOR, GOTO, BREAK, WRITEB,WRITED,
				CONTINUE, RETURN, VOID, INT, CHAR, FLOAT,   /*保留字*/
		ID, NUM, CCHAR,											/*记号*/
		ASSIGH, EQ, NEQ, LT, GT, NLT, NGT, AND, OR, NOT, COMMA, COLON,
				PLUS, MINUS, TIMES, OVER, LLPAREN, RLPAREN, 
								LGPAREN, RGPAREN, SEMI};		/*特殊符号*/

/***********************************************************
**类名:	CCompileOption
**功能描述:该类处理命令行编译选项,用于控制编译器的处理。
**作  者:何林强
**日  期:2002年5月25日
**修  改:
**日  期:
***********************************************************/
struct CCompileOption{
	bool	m_fNoparse;  			/*设置NO_PARSE为真,使编译器只进行扫描*/
	bool	m_fNoanalyze;			/*设置NO_ANALYZE为真,使编译器只进行语法分析*/
	bool	m_fNocode;
};

/**************************************************
**分配一些全局变量,为方便,组织在一个类中。
***************************************************/
struct CGlobals{
	int			lineno;     //指示正被处理的当前行。
	ifstream	source;		//被处理的源文件。
	ofstream	code;		//生成的汇编代码文件。
};

/*************************************************
**一些标志,用于控制编译器的各阶段是否输出信息
*************************************************/
struct CFlags{
	int			m_iTraceScan;			//用于控制是否输出扫描信息。
	int			m_iTraceParse;
	int			m_iTraceAnalyze;
	int			m_TraceCode;
};

#endif

⌨️ 快捷键说明

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