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

📄 charset.java

📁 java语法解释器生成器
💻 JAVA
字号:
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * JFlex 1.4.2                                                             * * Copyright (C) 1998-2008  Gerwin Klein <lsf@jflex.de>                    * * All rights reserved.                                                    * *                                                                         * * This program is free software; you can redistribute it and/or modify    * * it under the terms of the GNU General Public License. See the file      * * COPYRIGHT for more information.                                         * *                                                                         * * This program is distributed in the hope that it will be useful,         * * but WITHOUT ANY WARRANTY; without even the implied warranty of          * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           * * GNU General Public License for more details.                            * *                                                                         * * You should have received a copy of the GNU General Public License along * * with this program; if not, write to the Free Software Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                 * *                                                                         * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */package JFlex;/** *  * @author Gerwin Klein  * @version JFlex 1.4.2, $Revision: 358 $, $Date: 2008-05-27 16:28:29 +1000 (Tue, 27 May 2008) $  */public final class CharSet {  final static int BITS = 6;           // the number of bits to shift (2^6 = 64)  final static int MOD = (1<<BITS)-1;  // modulus    long bits[];  private int numElements;      public CharSet() {    bits = new long[1];  }  public CharSet(int initialSize, int character) {    bits = new long[(initialSize >> BITS)+1];    add(character);  }  public void add(int character) {    resize(character);    if ( (bits[character >> BITS] & (1L << (character & MOD))) == 0) numElements++;    bits[character >> BITS] |= (1L << (character & MOD));      }  private int nbits2size (int nbits) {    return ((nbits >> BITS) + 1);  }  private void resize(int nbits) {    int needed = nbits2size(nbits);    if (needed < bits.length) return;             long newbits[] = new long[Math.max(bits.length*2,needed)];    System.arraycopy(bits, 0, newbits, 0, bits.length);        bits = newbits;  }  public boolean isElement(int character) {    int index = character >> BITS;    if (index >= bits.length)  return false;    return (bits[index] & (1L << (character & MOD))) != 0;  }  public CharSetEnumerator characters() {    return new CharSetEnumerator(this);  }  public boolean containsElements() {    return numElements > 0;  }  public int size() {    return numElements;  }    public String toString() {    CharSetEnumerator set = characters();    StringBuffer result = new StringBuffer("{");    if ( set.hasMoreElements() ) result.append(""+set.nextElement());    while ( set.hasMoreElements() ) {      int i = set.nextElement();      result.append( ", "+i);    }    result.append("}");    return result.toString();  }}

⌨️ 快捷键说明

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