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

📄 scaner.java

📁 数据库连接池的写法
💻 JAVA
字号:
/*
 * 创建日期 2005-11-3
 *
 * TODO 要更改此生成的文件的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */
package databaseConnectPool;

/**
 * @author Administrator
 *
 * TODO 要更改此生成的类型注释的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */


public class Scaner {
  public ScanBuffer scanBuffer; //扫描缓冲区--共享
  private String finalAccidence;
  private AccidenceAnalyser aa;
  private int BUFFER_SIZE = 100;
  private String toDelString;
  private int senLength = 0;
  private char[] sentenceChar = new char[1000];
  private String TOKEN;
  private char CHAR;
  private int index = 0;
  private String IDENTITY = "identity";
  private String DIGIT = "digit";
  private String WORD_ERROR_INF = "在此行发现不能识别的单词,此行分析终止!";
  private boolean ASTATE = true;
  /**
   * @roseuid 3D9BB9370213
   */
  public Scaner(AccidenceAnalyser aa) {
    this.aa = aa;
    initBuffer();
    this.finalAccidence = "";
    System.out.println("[INFOR]扫描处理器已经创建!");
  }

  /**
   * @roseuid 3D9BB2860329
   */
  public String readFromBuffer(char[] Data) {
    String toDelString = String.valueOf(Data);
    return toDelString;
  }

  /**
   * @param tmpString
   * @return String
   * @roseuid 3D9BB2D5008D
   */
  public String scan(String toDelString) {
    sentenceChar = toDelString.toCharArray();
    this.senLength = sentenceChar.length;
    int i = 0;
    //分析单词
    while (this.index <= this.senLength) {
      //state0:
      this.TOKEN = "";
      this.CHAR = GETBC(sentenceChar);
      if (this.CHAR == ';') {
        break; //';'表示这一行结束
      }
      //进入状态判断
      switch (this.CHAR) {
        //judge letter
case 'a':case 'b':case 'c':case 'd':case 'e':case 'f':case 'g':case 'h':case 'i':case 'j':case 'k':
case 'l':case 'm':case 'n':case 'o':case 'p':case 'q':case 'r':case 's':case 't':case 'u':case 'v':case 'w':case 'x':case 'y':
case 'z':case 'A':case 'B':case 'C':case 'D':case 'E':case 'F':case 'G':case 'H':case 'I':case 'J':case 'K':case 'L':case 'M':
case 'N':case 'O':case 'P':case 'Q':case 'R':case 'S':case 'T':case 'U':case 'V':case 'W':case 'X':case 'Y':case 'Z':

          //do
          this.TOKEN = this.CONTACT(TOKEN, CHAR);

          //state1
          CHAR = this.GETCHAR(sentenceChar);
          while (this.ISLETTER(CHAR) || this.ISDIGIT(CHAR)) {
            this.TOKEN = this.CONTACT(this.TOKEN, CHAR);
            CHAR = this.GETCHAR(sentenceChar);
          }
          this.RETRACT();

          //state2
          if (aa.keyWordTable.isKeyWord(TOKEN)) {
            this.finalAccidence = this.finalAccidence + "[保留字] " +
                this.returnAWord(TOKEN) + "\n";
          }
          else {
            this.finalAccidence = this.finalAccidence + "[标识符] " +
                this.returnAWord(TOKEN) + "[种别码] " +
                String.valueOf(aa.classIdentity.findKey(IDENTITY)) + "\n";
          }

          //clear up token
          this.TOKEN = "";
          break;

          //judge ditital
        case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8': case '9':

          //do
          this.TOKEN = this.CONTACT(TOKEN, CHAR);

          //state3
          CHAR = this.GETCHAR(sentenceChar);
          while (this.ISDIGIT(CHAR)) {
            this.TOKEN = this.CONTACT(TOKEN, CHAR);
            CHAR = this.GETCHAR(sentenceChar);
          }
          this.RETRACT();

          //state4
          this.finalAccidence = this.finalAccidence + "[数字] " +
              this.returnAWord(TOKEN) + "[种别码] " +
              String.valueOf(aa.classIdentity.findKey(DIGIT)) + "\n";

          //clear up token
          this.TOKEN = "";
          break;

        case '=':

          //state5
          this.TOKEN = this.CONTACT(TOKEN, CHAR);
          this.finalAccidence = this.finalAccidence + "[等号] " +
              this.returnAWord(TOKEN) + "[种别码] " +
              String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) +
              "\n";

          //clear up token
          this.TOKEN = "";
          break;

        case '+':

          //state6
          this.TOKEN = this.CONTACT(TOKEN, CHAR);
          this.finalAccidence = this.finalAccidence + "[加号] " +
              this.returnAWord(TOKEN) + "[种别码] " +
              String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) +
              "\n";

          //clear up token
          this.TOKEN = "";
          break;

        case '*':

          //state7
          this.TOKEN = this.CONTACT(TOKEN, CHAR);
          CHAR = this.GETCHAR(sentenceChar);
          //state8
          if (CHAR == '*') {
            this.TOKEN = this.CONTACT(TOKEN, CHAR);
            this.finalAccidence = this.finalAccidence + "[乘方] " +
                this.returnAWord(TOKEN) + "[种别码] " +
                String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) +
                "\n";
          }
          //state9
          else {
            this.finalAccidence = this.finalAccidence + "[乘号] " +
                this.returnAWord(TOKEN) + "[种别码] " +
                String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) +
                "\n";
          }

          //clear up token
          this.TOKEN = "";
          break;

        case ',':

          //state10
          this.TOKEN = this.CONTACT(TOKEN, CHAR);
          this.finalAccidence = this.finalAccidence + "[逗号] " +
              this.returnAWord(TOKEN) + "[种别码] " +
              String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) +
              "\n";

          //clear up token
          this.TOKEN = "";
          break;

        case '(':

          //state11
          this.TOKEN = this.CONTACT(TOKEN, CHAR);
          this.finalAccidence = this.finalAccidence + "[左括号] " +
              this.returnAWord(TOKEN) + "[种别码] " +
              String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) +
              "\n";

          //clear up token
          this.TOKEN = "";
          break;

        case ')':

          //state12
          this.TOKEN = this.CONTACT(TOKEN, CHAR);
          this.finalAccidence = this.finalAccidence + "[右括号] " +
              this.returnAWord(TOKEN) + "[种别码] " +
              String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) +
              "\n";

          //clear up token
          this.TOKEN = "";
          break;

        case '{':

          //state13
          this.TOKEN = this.CONTACT(TOKEN, CHAR);
          this.finalAccidence = this.finalAccidence + "[左大括号] " +
              this.returnAWord(TOKEN) + "[种别码] " +
              String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) +
              "\n";

          //clear up token
          this.TOKEN = "";
          break;

        case '}':

          //state14
          this.TOKEN = this.CONTACT(TOKEN, CHAR);
          this.finalAccidence = this.finalAccidence + "[右大括号] " +
              this.returnAWord(TOKEN) + "[种别码] " +
              String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) +
              "\n";

          //clear up token
          this.TOKEN = "";
          break;

        case '[':

          //state15
          this.TOKEN = this.CONTACT(TOKEN, CHAR);
          this.finalAccidence = this.finalAccidence + "[左中括号] " +
              this.returnAWord(TOKEN) + "[种别码] " +
              String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) +
              "\n";

          //clear up token
          this.TOKEN = "";
          break;

        case ']':

          //state16
          this.TOKEN = this.CONTACT(TOKEN, CHAR);
          this.finalAccidence = this.finalAccidence + "[右中括号] " +
              this.returnAWord(TOKEN) + "[种别码] " +
              String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) +
              "\n";

          //clear up token
          this.TOKEN = "";
          break;

        case '.':

          //state17
          this.TOKEN = this.CONTACT(TOKEN, CHAR);
          this.finalAccidence = this.finalAccidence + "[点号] " +
              this.returnAWord(TOKEN) + "[种别码] " +
              String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) +
              "\n";

          //clear up token
          this.TOKEN = "";
          break;

        default:

          //state18
          this.TOKEN = this.CONTACT(this.TOKEN, this.CHAR);

          //追加出错信息
          this.finalAccidence = this.finalAccidence + "[ERROR]" +
              this.WORD_ERROR_INF + "'" + this.TOKEN + "'" + "\n";
          this.ASTATE = false;

          //clear up token
          this.TOKEN = "";
          break;
      }
      if (this.ASTATE == false) {
        break;
      }

    }
    return this.finalAccidence;
  }

  /**
   * @roseuid 3D9BB2E70260
   */
  public void controlThread() {
    this.toDelString = this.readFromBuffer(this.scanBuffer.Data);
    this.aa.outputAccidence(this.scan(this.toDelString));
    //分割符
    System.out.println("...................end row " + aa.pretreatment.fileRow +
                       ".........................");
    //结束这一行分析
    //clear up the var
    this.index = 0;
    this.finalAccidence = "";
    this.ASTATE = true;
    this.toDelString = "";
    this.senLength = 0;
    this.TOKEN = "";
  }

  /**
   * @param tmpString
   * @return String
   * @roseuid 3D9BB3FB037F
   */
  public String returnAWord(String TOKEN) {
    return TOKEN;
  }

  /**
   * @roseuid 3D9BB55502B4
   */
  public void initBuffer() {
    this.scanBuffer = aa.csbFactory.createScanBuffer(BUFFER_SIZE);
  }

//以下为字符的处理方法
/////////////////////////////////////////////////////
//////////////字符方法开始///////////////////////////
/////////////////////////////////////////////////////
  /**
   * @roseuid 3D9BB0B40383
   */
  public char GETBC(char[] sentenceChar) {
    try {
      while ( (sentenceChar[this.index]) == ' ') {
        this.index++;
      }
      this.index++;
    }
    catch (java.lang.ArrayIndexOutOfBoundsException e) {
      return ';'; //表示此行已经结束
    }
    return sentenceChar[index - 1];
  }

  /**
   * @roseuid 3D9BB0B40383
   */
  public char GETCHAR(char[] sentenceChar) {
    next();
    return sentenceChar[this.index - 1];
  }

  /**
   * @roseuid 3D9BB0B40383
   */
  public void next() {
    this.index++;
  }

  /**
   * @roseuid 3D9BB0B40383
   */
  public boolean ISLETTER(char letter) {
    return java.lang.Character.isLetter(letter);
  }

  /**
   * @roseuid 3D9BB0B40383
   */
  public boolean ISDIGIT(char letter) {
    return java.lang.Character.isDigit(letter);
  }

  /**
   * @roseuid 3D9BB0B40383
   */
  public String CONTACT(String TOKEN, char CHAR) {
    String tmpS = TOKEN + String.valueOf(CHAR);
    TOKEN = tmpS;
    return TOKEN;
  }

  /**
   * @roseuid 3D9BB0B40383
   */
  public boolean ISRESERVE(String TOKEN) {
    return aa.keyWordTable.isKeyWord(TOKEN);
  }

  /**
   * @roseuid 3D9BB0B40383
   */
  public void RETRACT() {
    this.index--;
  }
}

⌨️ 快捷键说明

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