symbolset.h

来自「类似vc的集成开发环境」· C头文件 代码 · 共 55 行

H
55
字号
// SymbolSet.h: interface for the CSymbolSet class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SYMBOLSET_H__2AB1685A_3224_49A5_84AB_7A0FCEB24755__INCLUDED_)
#define AFX_SYMBOLSET_H__2AB1685A_3224_49A5_84AB_7A0FCEB24755__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//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();
//	virtual ~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<lastsym;i++)
		set[i]=0;
}
inline CSymbolSet& CSymbolSet::operator=(const CSymbolSet &ss)
{
	for (int i=0;i<lastsym;i++)
		set[i]=ss.set[i];
	return *this;
}
inline CSymbolSet& CSymbolSet::operator+=(const CSymbolSet &ss)
{
	for (int i=0;i<lastsym;i++)
		set[i]=set[i]||ss.set[i];
	return *this;
}


#endif // !defined(AFX_SYMBOLSET_H__2AB1685A_3224_49A5_84AB_7A0FCEB24755__INCLUDED_)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?