reservedtable.java

来自「java版本的词法分析器」· Java 代码 · 共 68 行

JAVA
68
字号
//:LexicalAnalyser:ReservedTable.java
//the class provide the service of the string being a keyWord or not
package LexicalAnalyser;

import java.util.*;
import java.io.*;

public class ReservedTable{

  private Hashtable KWHash;
  private File ReserveFile;
  private int TMP_BUFFER_SIZE = 30;
  private FileReader resFileReader; // reader of the ReserveFile
 
 
 
  public ReservedTable(File ReserveFile) {
    System.out.println("ReservdeTable is setting up");
    this.ReserveFile=ReserveFile;
  }

  
  public boolean isKeyWord(String inw) {
    String resWord;
    /*use interface Enumeration to locate the Hashtable*/
    for(Enumeration e=this.KWHash.elements();e.hasMoreElements();){
      resWord=(String)e.nextElement();
      if (resWord.equalsIgnoreCase(inw)) {
        return true;
      }
    }
    return false;
  }

 
  public void initKeyWordTable() {
    KWHash = new Hashtable(); //use the Hashtable to save the information
    int intLength;//
    char[] chrBuffer = new char[TMP_BUFFER_SIZE];
    String resWord;
    int resCounter = 0;
    try {
      if (ReserveFile.exists()) { //if the file  exists
        //create the file component
        resFileReader = new java.io.FileReader(ReserveFile);
        //write into the Hashtable
        while ( (intLength = resFileReader.read(chrBuffer)) != -1) {
          resCounter++;
         
          resWord = String.valueOf(chrBuffer).trim();
          this.KWHash.put(Integer.toString(resCounter), resWord);
        }

        
        resFileReader.close();
      }
      else {
        System.err.println("[ERROR]保留字文件不存在!");
      }
    }
    catch (Exception e) {
      e.printStackTrace(System.err);
    }
  }
}


⌨️ 快捷键说明

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