📄 dictionary.hpp
字号:
/*
* PUBLIC DOMAIN PCCTS-BASED C++ GRAMMAR (cplusplus.g, stat.g, expr.g)
*
* Authors: Sumana Srinivasan, NeXT Inc.; sumana_srinivasan@next.com
* Terence Parr, Parr Research Corporation; parrt@parr-research.com
* Russell Quong, Purdue University; quong@ecn.purdue.edu
*
* SOFTWARE RIGHTS
*
* This file is a part of the ANTLR-based C++ grammar and is free
* software. We do not reserve any LEGAL rights to its use or
* distribution, but you may NOT claim ownership or authorship of this
* grammar or support code. An individual or company may otherwise do
* whatever they wish with the grammar distributed herewith including the
* incorporation of the grammar or the output generated by ANTLR into
* commerical software. You may redistribute in source or binary form
* without payment of royalties to us as long as this header remains
* in all source distributions.
*
* We encourage users to develop parsers/tools using this grammar.
* In return, we ask that credit is given to us for developing this
* grammar. By "credit", we mean that if you incorporate our grammar or
* the generated code into one of your programs (commercial product,
* research project, or otherwise) that you acknowledge this fact in the
* documentation, research report, etc.... In addition, you should say nice
* things about us at every opportunity.
*
* As long as these guidelines are kept, we expect to continue enhancing
* this grammar. Feel free to send us enhancements, fixes, bug reports,
* suggestions, or general words of encouragement at parrt@parr-research.com.
*
* NeXT Computer Inc.
* 900 Chesapeake Dr.
* Redwood City, CA 94555
* 12/02/1994
*
* Restructured for public consumption by Terence Parr late February, 1995.
*
* Requires PCCTS 1.32b4 or higher to get past ANTLR.
*
* DISCLAIMER: we make no guarantees that this grammar works, makes sense,
* or can be used to do anything useful.
*/
/* * Dictionary.h -- A cool hash table * * Terence Parr * Parr Research Corporation * January 1995 *//* 1999-2007 Version 3.2 November 2007
* Modified by David Wigg at London South Bank University for CPP_parser.g
*
* See MyReadMe.txt for further information
*
* This file is best viewed in courier font with tabs set to 4 spaces
*/
#ifndef Dictionary_hpp#define Dictionary_hpp
#include <iostream>
#include "DictEntry.hpp"
#include "CPPSymbol.hpp"
class Dictionary
{protected: DictEntry **scope, **endScope; int nscopes, currentScope;
DictEntry **bucket; int nbuckets; static unsigned char randomNumbers[]; static char *strings; static char *strp; static unsigned strsize; virtual void dumpSymbol(FILE *, DictEntry *);public: Dictionary(int nb=43, int ns=60, int nc=30000); virtual ~Dictionary(); virtual int hash(const char *s); DictEntry *lookup(const char *, CPPSymbol::ObjectType type=CPPSymbol::otInvalid); void define(const char *, DictEntry *); void defineInScope(const char *, DictEntry *, int); void saveScope(); void restoreScope(); DictEntry *getCurrentScope(); int getCurrentScopeIndex(); DictEntry *removeScope(int scope=-1); DictEntry *remove(char *); DictEntry *remove(DictEntry *); void dumpScope(FILE *, int scope=-1); void dumpScopes(); char *strdup(const char *);
virtual void panic(char *); };#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -