symbolentry.h
来自「compiler principle how to ananilyze」· C头文件 代码 · 共 73 行
H
73 行
// SymbolEntry.h: interface for the SymbolEntry class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SYMBOLENTRY_H__A231FFAB_5A7D_48A0_8C11_F52721EA1653__INCLUDED_)
#define AFX_SYMBOLENTRY_H__A231FFAB_5A7D_48A0_8C11_F52721EA1653__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "VLocation.h"
#include <string>
using namespace std;
class SymbolEntry
{
// token_type token_kind lexeme
// -------------------------------------------------------------------------------------------
// VN V: Non-terminal symbol [A-Za-z][A-Za-z_0-9]*
// VT V: terminal symbol \'Escape\' | 'epsilon'
// Escape -> NoEscapeChar Escape | '\\\\' Escape | '\\\'' Escape | epsilon;
// NoEscapeChar -> [^\'];
// GN GT(GrammarTitle): GrammarName [A-Za-z][A-Za-z_0-9]*
// ALTER KEYWORD: meta-symbol |
// ARROW KEYWORD: meta-symbol ->
// DELIMITER KEYWORD: meta-symbol ;
// EPSILON KEYWORD: meta-symbol epsilon
// LEFT_BRACKET KEYWORD: meta-symbol [
// RIGHT_BRACKET KEYWORD: meta-symbol ]
//--------------------------------------------------------------------------------------------
public:
//token_type:
enum {VT=256, VN=257, GN=258,
ALTER=259, ARROW=260, DELIMITER=261, EPSILON=262,
LEFT_BRACKET=263, RIGHT_BRACKET=264};
//token_kind
enum {V=300, GT=301, KEYWORD=302};
enum { c_ALTER='|', c_DELIMITER=';', c_REVERSE_SLASH='\\',
c_SINGLE_QUOTE='\'',
c_LEFT_BRACKET='[', c_RIGHT_BRACKET=']' };
static const char* p_ARROW;
static const char* p_EPSILON;
static const char* p_ALTER;
static const char* p_DELIMITER;
static const char* p_REVERSE_SLASH;
static const char* p_SINGLE_QUOTE;
static const char* p_LEFT_BRACKET;
static const char* p_RIGHT_BRACKET;
public:
string lexeme;
int token_type;
int token_kind;
VLocationSet locations;
SymbolEntry(const string& alexeme, int atoken_type);
bool operator!=(const SymbolEntry& se) const;
void setTokenType(int atoken_type);
string display() const;
string toStr() const;
};
#endif // !defined(AFX_SYMBOLENTRY_H__A231FFAB_5A7D_48A0_8C11_F52721EA1653__INCLUDED_)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?