scan.h
来自「一个c语言的编译器的源代码」· C头文件 代码 · 共 55 行
H
55 行
#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 + =
减小字号Ctrl + -
显示快捷键?