?? accidenceanalyser.java
字號:
/*
* 創建日期 2005-11-3
*
* TODO 要更改此生成的文件的模板,請轉至
* 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
*/
package databaseConnectPool;
import java.io.*;
import java.util.*;
import databaseConnectPool.Buffer.*;
public class AccidenceAnalyser {
private java.io.File SourceFile;
private java.io.File ReserveFile;
private java.io.File ClassFile;
private java.io.File OutputFile;
public Pretreatment pretreatment;
public KeyWordTable keyWordTable;
public ClassIdentity classIdentity;
public Scaner scaner;
public ConcreteScanBufferFactory csbFactory;
/**
* @roseuid 3D9BB93303D0
*/
public AccidenceAnalyser() {
System.out.println("[INFOR]已經建立詞法分析器!");
}
/**
* @roseuid 3D9BAEF9029F
*/
public void initAA() {
//創建緩沖工廠
this.csbFactory = new ConcreteScanBufferFactory();
//創建字符串掃描對象
scaner = new Scaner(this);
//創建pre處理對象
pretreatment = new Pretreatment(SourceFile, this);
//創建關鍵字表對象
keyWordTable = new KeyWordTable(ReserveFile);
//創建對象種別碼表對象
classIdentity = new ClassIdentity(ClassFile);
System.out.println("[INFOR]已經初始化詞法分析器!");
}
/**
* @roseuid 3D9BAF12022D
*/
public void setFilesPath(String reserveFileName, String ClassFileName,
String sourceFileName, String outputFileName) {
//創建文件對象
SourceFile = new java.io.File(sourceFileName);
//創建文件對象
ReserveFile = new java.io.File(reserveFileName);
//創建文件對象
ClassFile = new java.io.File(ClassFileName);
//創建文件對象
OutputFile = new java.io.File(outputFileName);
//如果文件已經存在,先刪除,然后建立新文件
if (OutputFile.exists()) {
OutputFile.delete();
}
try {
OutputFile.createNewFile();
}
catch (Exception e) {
e.printStackTrace(System.err);
}
try {
//創建文件隨機讀取對象
java.io.RandomAccessFile ROutputFile = new java.io.RandomAccessFile(this.
OutputFile, "rw");
//提示信息
ROutputFile.write("//////////////////////////////////////////////////\n".
getBytes());
ROutputFile.write( ("//JAccidenceAnalyser version " + getVersion() +
" design by yellowicq//\n").getBytes());
ROutputFile.write("//java詞法分析器//////////////\n".getBytes());
ROutputFile.write("//使用java語言開發////////////////////////////////////\n".
getBytes());
ROutputFile.write("//////////////////////////////////////////////////\n".
getBytes());
ROutputFile.write("詞法分析結果如下:\n".getBytes());
//關閉文件流
ROutputFile.close();
}
catch (Exception e) {
e.printStackTrace(System.err);
}
}
/**
* @roseuid 3D9BAFAB0089
*/
public void startAA() {
//從預處理開始詞法分析
this.pretreatment.startPretreatment();
}
/**
* @roseuid 3D9BB0B40383
*/
public void outputAccidence(String outputString) {
//把分析出來的單詞寫入文件
outputString = "\n[第" + this.pretreatment.fileRow + "行]\n" + outputString;
try {
//創建文件隨機讀取對象
java.io.RandomAccessFile ROutputFile = new java.io.RandomAccessFile(this.
OutputFile, "rw");
//移動指針到文件末尾
ROutputFile.seek(ROutputFile.length());
//Start appending!
ROutputFile.write(outputString.getBytes());
//關閉文件流
ROutputFile.close();
}
catch (Exception e) {
e.printStackTrace(System.err);
}
//將分析的單詞結果輸出到終端
System.out.print(outputString);
}
/**
* @roseuid 3D9BB0CE02C2
*/
public void controlThread() {
//控制掃描器啟動掃描
scaner.controlThread();
}
//獲得版本號
public String getVersion() {
return "1.0";
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -