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

📄 scan.h

📁 一个c语言的编译器的源代码
💻 H
字号:

#ifndef SCAN_H_
#define SCAN_H_

#include <string>
#include <list>

using namespace std;

// Type of token
typedef enum {
	ENDFILE,ERROR,
	IF,ELSE,WHILE,RETURN,VOID,INT,
	PLUS,MINUS,MUL,DIV,LT,LTEQ,GT,GTEQ,EQ,
	NEQ,ASSIGN,SEMI,COMMA,LPAREN,RPAREN,
	LSQUAR,RSQUAR,LBRACE,RBRACE,LCOMMENT,RCOMMENT,
	ID,NUMBER
} TokenType;

//
// For token saving
typedef struct tokenunit{
	TokenType token;
	string tokenstring;
	int lineno;
} TokenUnit;

// For reserve words saving
typedef struct{
    char * word;
    TokenType type;
} ReserveWordsUnit;

extern string TokenString;
extern TokenType token;

extern list<TokenUnit> tokenHist;

extern list<TokenUnit>::iterator tokenIt;

extern ReserveWordsUnit ReservedWords[10];

// DFA states
typedef enum{
    INID,INNUM,INLTEQ,INGTEQ,INEQ,INNEQ,
        INCOMMENT,START,DONE
} ScanState;

TokenType GetToken();

list<TokenUnit>::iterator Backup();

void Restore(list<TokenUnit>::iterator &it);

#endif

⌨️ 快捷键说明

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