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