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