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

📄 common.h

📁 编译原理的词法分析程序的实现
💻 H
字号:
#ifndef COMMON_H_
#define COMMON_H_

#define LENGTH 60
#define ENDL 15
#define ENDW 64
/************************************************************************/
const int PROG_SIZE = 10000;		    //程序的最大大小
const int MAX_T_LEN = 128;			    //令牌的最大长度
const int MAX_ID_LEN = 31;		    	//标识符的最大长度
/************************************************************************/
//令牌类型的枚举量定义
enum tok_types
{
    UNDEFTT, DELIMITER, IDENTIFIER,
    NUMBER, KEYWORD, TEMP, STRING, BLOCK
};
//令牌内部表现形式的枚举量定义
enum token_ireps
{
    myUNDEFTOK, myARG, myCHAR, myINT, mySWITCH,
    myCASE, myIF, myELSE, myFOR, myDO, myWHILE, myBREAK,
    myRETURN, myCOUT, myCIN, myEND
};
//双目操作符的枚举量定义
enum double_ops
{
    LT = 1, LE, GT, GE, EQ, NE, LS, RS, INC, DEC
};
//语法错误信息枚举量定义
enum error_msg
{
    SYNTAX, NO_EXP, NOT_VAR, DUP_VAR, DUP_FUNC,
    SEMI_EXPECTED, UNBAL_BRACES, FUNC_UNDEF,
    TYPE_EXPECTED, RET_NOCALL, PAREN_EXPECTED,
    WHILE_EXPECTED, QUOTE_EXPECTED, DIV_BY_ZERO,
    BRACE_EXPECTED, COLON_EXPECTED
};
/************************************************************************/
//关键字查找表格
//关键字必须输入小写
struct commands
{
    char command[20];
    token_ireps tok;
}
com_table[] = {
                  "if", myIF,
                  "else",myELSE,
                  "for", myFOR,
                  "do", myDO,
                  "while", myWHILE,
                  "char", myCHAR,
                  "int", myINT,
                  "return", myRETURN,
                  "switch", mySWITCH,
                  "break", myBREAK,
                  "case", myCASE,
                  "cout", myCOUT,
                  "cin", myCIN,
                  "", myEND
              };
/************************************************************************/
//抛出的异常类
class InterpExc
{
private:
    error_msg err;
public:
    InterpExc(error_msg e)
    {
        err = e;
    }
    error_msg get_err()
    {
        return err;
    }
};
/************************************************************************/
/**
获取令牌
*/
tok_types get_token();

/**
返回一个令牌到输入流中
*/
void putback();

/**
判断c是否一个分隔符号
*/
bool isdelim(char c);

/**
在token table中查找一个令牌的内部形式
*/
token_ireps look_up(char* s);

/**
装入一个程序
*/
bool load_program(char* p, char* fname);

/**
显示一个错误信息
*/
void sntx_err(error_msg error);

///**
//得到当前行
//*/
//int getline();
/************************************************************************/

#endif // COMMON_H_

⌨️ 快捷键说明

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