token.h
来自「compiler principle how to ananilyze」· C头文件 代码 · 共 59 行
H
59 行
// Token.h: interface for the Token class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_TOKEN_H__54D3F2E2_73B8_4263_87FF_7508EEA45273__INCLUDED_)
#define AFX_TOKEN_H__54D3F2E2_73B8_4263_87FF_7508EEA45273__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <string>
using namespace std;
class Token {
// (type,value) meaning lexeme
//============================================================================================
// 1) from SymbolEntry
// (VN,index) V: Non-terminal symbol [A-Za-z][A-Za-z_0-9]*
// (VT,index) V: terminal symbol \'Escape\' | 'epsilon'
// Escape -> NoEscapeChar Escape | '\\\\' Escape | '\\\'' Escape | epsilon;
// NoEscapeChar -> [^\'];
// (GN,index) GT(GrammarTitle): GrammarName [A-Za-z][A-Za-z_0-9]*
// (ALTER,index) KEYWORD: meta-symbol |
// (ARROW,index) KEYWORD: meta-symbol ->
// (DELIMITER,index) KEYWORD: meta-symbol ;
// (EPSILON,index) KEYWORD: meta-symbol epsilon
// (LEFT_BRACKET,index) KEYWORD: meta-symbol [
// (RIGHT_BRACKET,index) KEYWORD: meta-symbol ]
//--------------------------------------------------------------------------------------------
// 2) lexer using (DONE, NONE) to notify the parser ending of the token stream
// (tDONE, tNONE) EOF EOF
//--------------------------------------------------------------------------------------------
// 3) Token objects' initial value
//--------------------------------------------------------------------------------------------
// (tEMPTY, tNONE) Token objects' initial value
public:
enum {tDONE=-262, tEMPTY=-263, tNONE=-1 };
public:
int type;
int value;
Token(int atype, int avalue=Token::tNONE);
Token();
bool operator==(const Token& tk) const;
bool operator!=(const Token& tk) const;
string toStr() const;
};
#endif // !defined(AFX_TOKEN_H__54D3F2E2_73B8_4263_87FF_7508EEA45273__INCLUDED_)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?