📄 symset.h
字号:
//Symset.h
//对关键字进行管理set是symbol类型的一个集合类型,可用于存放一组symbol
#pragma once
#ifndef __SYMSET_H
#define __SYMSET_H
//symobl类型标识了不同类型的词汇
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,writesym,readsym,dosym,
callsym,constsym,varsym,procsym,repeatsym,untilsym,lastsym};
//lastsym的值指示symbol中共有多少符号
//repeatsym,untilsym为扩充文法
class CSymset
{
public:
CSymset(void);
~CSymset(void);
int InSet(symbol sym) { return set[sym]; }
CSymset& operator=(const CSymset &ss);
CSymset& operator+=(const CSymset &ss);
CSymset& operator+=(const symbol sym); //重载 = 和 += 运算符,以便对标志符set进行加载
private:
int set[lastsym]; //set是symbol类型的一个集合类型,可用于存放一组symbol
};
inline CSymset& CSymset::operator=(const CSymset &ss)
{
for (int i=0;i<lastsym;i++)
set[i]=ss.set[i];
return *this;
}
inline CSymset& CSymset::operator+=(const CSymset &ss)
{
for (int i=0;i<lastsym;i++)
set[i]=set[i]||ss.set[i];
return *this;
}
inline CSymset& CSymset:: operator+=(const symbol sym)
{
set[sym]=1;
return *this;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -