www.pudn.com > pl0_compiler_c.rar > symset.h
///////////////////////////////////////////////////////////////////
#ifndef __SYMSET_H
#define __SYMSET_H
//lastsym的值指示symbol中的符号
enum symbol {endfile=-1,nul=0,ident,number,plus,minus,times,
slash,oddsym,eql,neq,lss,leq,gtr,geq,lparen,
rparen,comma,semicolon,period,becomes,beginsym,
endsym,ifsym,thensym,elsesym,whilesym,repeatsym,
untilsym,writesym,readsym,dosym,callsym,constsym,
varsym,procsym,lastsym};
class CSymbolSet
{
public:
CSymbolSet();
int InSet(symbol sym){return set[sym];}
CSymbolSet& operator=(const CSymbolSet &ss);
CSymbolSet& operator+=(const CSymbolSet &ss);
CSymbolSet& operator+=(const symbol sym){set[sym]=1;return *this;}
private:
int set[lastsym];
};
inline CSymbolSet::CSymbolSet()
{
for(int i=0;i