⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 symbol.h

📁 PL0的编译系统,使用MFC编写界面,采用浮动窗口来仿VC的环境
💻 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 CSymbol
{
public:
	CSymbol();
	int InSet(symbol sym){return set[sym];}		//
	CSymbol& operator=(const CSymbol &ss);
	CSymbol& operator+=(const CSymbol &ss);
	CSymbol& operator+=(const symbol sym){set[sym]=1;return *this;}
private:
	int set[lastsym];
};

inline CSymbol::CSymbol()
{
	for(int i=0;i<lastsym;i++)
		set[i]=0;
}
inline CSymbol& CSymbol::operator=(const CSymbol &ss)
{
	for (int i=0;i<lastsym;i++)
		set[i]=ss.set[i];
	return *this;
}
inline CSymbol& CSymbol::operator+=(const CSymbol &ss)
{
	for (int i=0;i<lastsym;i++)
		set[i]=set[i]||ss.set[i];
	return *this;
}

#endif //symset.h

⌨️ 快捷键说明

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