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

📄 discreteset.h

📁 用于词法分析的词法分析器
💻 H
字号:
/*  $Id: DiscreteSet.h,v 1.4 1997/05/19 02:24:05 matt Exp $    Basic discrete set implemented as a byte array.    (c) Apr 95 Matt Phillips   */#ifndef _DISCSET_H#define _DISCSET_H#ifndef __GNUC__#  include <mem.h>#endif#include "checks.h"#include "Range.h"#define DSET_INCHECK(i) CHECK (i >= LOWER && i <= UPPER, "item outside set")template <class T, int LOWER, int UPPER>class DiscreteSet{public:  DiscreteSet () {removeAll ();}  void addAll () {memset (data, 1, sizeof (data));}  void removeAll () {memset (data, 0, sizeof (data));}  void add (T i) {DSET_INCHECK (i); data [i] = 1;}  void add (const Range<T> &r) {set (r, 1);}  void remove (const Range<T> &r) {set (r, 0);}  void remove (T i) {DSET_INCHECK (i); data [i] = 0;}  void set (T i, int b) {DSET_INCHECK (i); data [i] = b;}  void set (const Range<T> &r, int b)  {    DSET_INCHECK (r.lower);    DSET_INCHECK (r.upper);    memset (data + r.lower, b, r.length ());  }  int isIn (T i) const {DSET_INCHECK (i); return data [i];}  static T getLower () {return (T)LOWER;}  static T getUpper () {return (T)UPPER;}  static int inRange (T i) {return i >= LOWER && i <= UPPER;}   protected:  char data [UPPER - LOWER + 1];};#endif

⌨️ 快捷键说明

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