首页 java词法分析器

java词法分析器

举报
开通vip

java词法分析器java词法分析器 package JAccidenceAnalyse; import java.io.*; import java.util.*; import JAccidenceAnalyse.Buffer.*; public class AccidenceAnalyser { private java.io.File SourceFile; private java.io.File ReserveFile; private java.io.File ClassFile; private j...

java词法分析器
java词法 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 器 package JAccidenceAnalyse; import java.io.*; import java.util.*; import JAccidenceAnalyse.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; /** * 2, 词法分析器主程序 * @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); //创建关键字 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 对象 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"; } } package JAccidenceAnalyse; import java.util.*; import java.io.*; public class ClassIdentity { private Hashtable ClassHash; private File ClassFile; private FileReader classFileReader; //读文件对象 private int TMP_BUFFER_SIZE = 30; /** * 6, 类型种别码程序 * @roseuid 3D9BB9390108 */ public ClassIdentity(java.io.File ClassFile) { System.out.println("[INFOR]类型种别码表已创建!"); this.ClassFile = ClassFile; } /** * @roseuid 3D9BB0B40383 */ //查找类型种别码 public int findKey(String classWord) { int KEY; for (Enumeration e = this.ClassHash.keys(); e.hasMoreElements(); ) { KEY = Integer.parseInt( (String) e.nextElement()); if ( ( (String)this.ClassHash.get(Integer.toString(KEY))). equalsIgnoreCase(classWord)) { return KEY; } } return -1; } /** * @roseuid 3D9BAE7303D3 */ public void initClassIdentityTable() { ClassHash = new Hashtable(); //创建hash表 int intLength; char[] chrBuffer = new char[TMP_BUFFER_SIZE]; String classWord; int classCounter = 0; try { if (ClassFile.exists()) { //文件存在 //创建读文件对象 classFileReader = new java.io.FileReader(ClassFile); //读文件内容到hash表 while ( (intLength = classFileReader.read(chrBuffer)) != -1) { classCounter++; //填写hash表 classWord = String.valueOf(chrBuffer).trim(); System.out.println("[INFOR]读取类型种别码: [KEY: " + classCounter + "][VALUE: " + classWord + "]"); this.ClassHash.put(Integer.toString(classCounter), classWord); } //关闭读文件对象 classFileReader.close(); } else { //文件不存在 System.err.println("[ERROR]类型种别码文件不存在!"); } } catch (Exception e) { e.printStackTrace(System.err); } } } package JAccidenceAnalyse; import java.util.*; import java.io.*; public class KeyWordTable { private Hashtable KWHash; private File ReserveFile; private FileReader resFileReader; //读文件对象 private int TMP_BUFFER_SIZE = 30; /** * 5, 表留字表程序 * @roseuid 3D9BB9390108 */ public KeyWordTable(java.io.File ReserveFile) { System.out.println("[INFOR]关键字表已创建!"); this.ReserveFile = ReserveFile; } /** * @param inw * @return boolean * @roseuid 3D9BAE4702AD */ public boolean isKeyWord(String inw) { String resWord; //查找hash表 for (Enumeration e = this.KWHash.elements(); e.hasMoreElements(); ) { resWord = (String) e.nextElement(); if (resWord.equalsIgnoreCase(inw)) { return true; } } return false; } /** * @roseuid 3D9BAE7303D3 */ public void initKeyWordTable() { KWHash = new Hashtable(); //创建hash表 int intLength; char[] chrBuffer = new char[TMP_BUFFER_SIZE]; String resWord; int resCounter = 0; try { if (ReserveFile.exists()) { //文件存在 //创建读文件对象 resFileReader = new java.io.FileReader(ReserveFile); //读文件内容到hash表 while ( (intLength = resFileReader.read(chrBuffer)) != -1) { resCounter++; //填写hash表 resWord = String.valueOf(chrBuffer).trim(); System.out.println("[INFOR]读取关键字: [INDEX: " + resCounter + "][VALUE: " + resWord + "]"); this.KWHash.put(Integer.toString(resCounter), resWord); } //关闭读文件对象 resFileReader.close(); } else { //文件不存在 System.err.println("[ERROR]保留字文件不存在!"); } } catch (Exception e) { e.printStackTrace(System.err); } } } package JAccidenceAnalyse; import javax.xml.parsers.*; import org.w3c.dom.*; public class main { /** * 1) 词法分析器引导文件 * @param args * @return void * @roseuid 3D9BAE4702AD */ public static void main(String[] args) { //读取配置文件,得到系统属性 String cfgString[] = new String[4]; try { cfgString = main.loadAACfg("d:\\aaCfg.xml"); } catch (Exception e) { e.printStackTrace(System.err); } //设置待读文件名 //////////////////////////////////////////////////// //保留字表文件 String reserveFileName = cfgString[0]; //类型种别码表文件 String classFileName = cfgString[1]; //需要分析的源文件 String sourceFileName = cfgString[2]; //输出文件 String outputFileName = cfgString[3]; //////////////////////////////////////////////////// //创建词法分析器 AccidenceAnalyser aa = new AccidenceAnalyser(); aa.setFilesPath(reserveFileName, classFileName, sourceFileName, outputFileName); //建立所需要的文件对象 //初始化词法分析器 aa.initAA(); //初始化关键字表 aa.keyWordTable.initKeyWordTable(); //初始化类型种别码表 aa.classIdentity.initClassIdentityTable(); //开始进行词法分析 aa.startAA(); //分析完毕 } //读取配置文件 private static String[] loadAACfg(String name) throws Exception { String cfgString[] = new String[4]; /*解析xml配置文件*/ try { /*创建文档工厂*/ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); /*创建文档解析器*/ DocumentBuilder builder = factory.newDocumentBuilder(); /*解析配置文件*/ Document doc = builder.parse(name); /* 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 化文档*/ doc.normalize(); /*查找接点表*/ NodeList nlists = doc.getElementsByTagName("FilePath"); for (int i = 0; i < nlists.getLength(); i++) { Element item = (Element) nlists.item(i); //取得需要的配置属性 /******************/ cfgString[0] = item.getElementsByTagName("ReserveFileName").item(0). getFirstChild().getNodeValue().trim(); /******************/ cfgString[1] = item.getElementsByTagName("ClassFileName").item(0). getFirstChild().getNodeValue().trim(); /******************/ cfgString[2] = item.getElementsByTagName("SourceFileName").item(0). getFirstChild().getNodeValue().trim(); /******************/ cfgString[3] = item.getElementsByTagName("OutputFileName").item(0). getFirstChild().getNodeValue().trim(); /******************/ } } catch (Exception e) { e.printStackTrace(); throw new Exception("[ERROR]加载配置文件 " + name + " 错误!"); } //返回属性数组 return cfgString; } } package JAccidenceAnalyse; import JAccidenceAnalyse.Buffer.*; import java.io.*; public class Pretreatment { private String tmpString; private String outputString; private int BUFFER_SIZE = 100; private AccidenceAnalyser aa; public InputBuffer inputBuffer; //输入缓冲区--共享 private java.io.File SourceFile; //文件对象 private java.io.RandomAccessFile randomAFile; //随机文件对象 public static int fileRow = 0; /** * 3, 预处理子程序 * @roseuid 3DAB7C530399 */ public Pretreatment(File SourceFile, AccidenceAnalyser aa) { try { this.SourceFile = SourceFile; this.randomAFile = new java.io.RandomAccessFile(this.SourceFile, "r"); } catch (FileNotFoundException e) { e.printStackTrace(System.err); } this.aa = aa; inputBuffer = aa.csbFactory.createInputBuffer(BUFFER_SIZE); System.out.println("[INFOR]预处理器已经创建!"); } /** * @roseuid 3D9BAFE20331 */ public void putSourceToINBuffer(String tmpString) { this.inputBuffer.Data = tmpString.toCharArray(); } /** * @roseuid 3D9BB0400169 */ public void putFinToSCBuffer(String filtratedString) { aa.scaner.scanBuffer.Data = filtratedString.toCharArray(); } /** * @roseuid 3D9BB05E00A4 */ public void controlThread() { int intLength; int resCounter = 0; String tmpString; String filtratedString; System.out.println("[INFOR]开始单词分析////////////////////////////////////////"); try { if (SourceFile.exists()) { //文件存在 //读文件内容到缓冲区 while ( (tmpString = this.randomAFile.readLine()) != null) { ++fileRow; //分割符 System.out.println("...................begin row " + this.fileRow + "......................."); //开始这一行分析 System.out.println("[INFOR]正在处理行: " + String.valueOf(fileRow)); //放入输入缓冲区 this.putSourceToINBuffer(tmpString); //处理字符串 filtratedString = this.filtrateSource(this.inputBuffer.Data); System.out.println("[INFOR]已过滤句子: " + filtratedString); //放入扫描缓冲区 this.putFinToSCBuffer(filtratedString); aa.controlThread(); } System.out.println( "[INFOR]分析完毕////////////////////////////////////////////"); } else { //文件不存在 System.err.println("[ERROR]源文件不存在!"); } } catch (Exception e) { e.printStackTrace(System.err); } } /** * @roseuid 3D9BB07D0239 */ public String filtrateSource(char[] Data) { String filtratedString = String.valueOf(Data).trim(); return filtratedString; } /** * @roseuid 3D9BB9350315 */ public void startPretreatment() { this.controlThread(); } } package JAccidenceAnalyse; import JAccidenceAnalyse.Buffer.*; 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; /** * 4, 扫描子程序 * @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--; } ///////////////////////////////////////////////////// //////////////字符方法结束/////////////////////////// ///////////////////////////////////////////////////// } /***********************/ package JAccidenceAnalyse.Buffer; //abstract buffer interface public interface Buffer { } /**************************************/ package JAccidenceAnalyse.Buffer; public interface BufferFactory { /** * 7, 抽象扫描缓冲区工厂 * @return JAccidenceAnalyse.Buffer.ScanBuffer * @roseuid 3D9BB6F0003E */ public ScanBuffer createScanBuffer(int size); /** * @return JAccidenceAnalyse.Buffer.InputBuffer * @roseuid 3D9BB7090062 */ public InputBuffer createInputBuffer(int size); } package JAccidenceAnalyse.Buffer; public class ConcreteScanBufferFactory implements BufferFactory { /** * 8, 缓冲区工厂 * @roseuid 3D9BBA19006A */ public ConcreteScanBufferFactory() { System.out.println("[INFOR]缓冲区工厂已经建立!"); } /** * @return JAccidenceAnalyse.Buffer.ScanBuffer * @roseuid 3D9BAC01004E */ public ScanBuffer createScanBuffer(int size) { System.out.println("[INFOR]创建扫描缓冲区!"); return new ScanBuffer(size); } /** * @return JAccidenceAnalyse.Buffer.InputBuffer * @roseuid 3D9BB6050267 */ public InputBuffer createInputBuffer(int size) { System.out.println("[INFOR]创建输入缓冲区!"); return new InputBuffer(size); } } /**************************************/ package JAccidenceAnalyse.Buffer; import java.io.*; public class InputBuffer implements Buffer { public char[] Data; /** * 10, 输入缓冲区对象 * @roseuid 3D9BBA1C0186 */ public InputBuffer(int size) { this.Data = new char[size]; } } /*************************************/ package JAccidenceAnalyse.Buffer; public class ScanBuffer implements Buffer { public char[] Data; /** * 11, 扫描缓冲区对象 * @roseuid 3D9BBA1A0314 */ public ScanBuffer(int size) { this.Data = new char[size]; } } aaCfg.xml d:\\reserve.table d:\\class.table d:\\aClass.java d:\\output.aa Class.table identity digit = + * ** , ( ) { } [ ] . Reserve.table while do public class static new void int do for int System
本文档为【java词法分析器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_314871
暂无简介~
格式:doc
大小:78KB
软件:Word
页数:37
分类:互联网
上传时间:2017-09-30
浏览量:16