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

📄 java词法分析器_ - java - java_开发文档.htm

📁 java 好的分析器
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      */<BR>&nbsp; public void RETRACT() {<BR>&nbsp;&nbsp;&nbsp; 
      this.index--;<BR>&nbsp; 
      }<BR>/////////////////////////////////////////////////////<BR>//////////////字符方法结束///////////////////////////<BR>/////////////////////////////////////////////////////<BR>}<BR>5)&nbsp;表留字表程序:KeyWordTable.java<BR>//Source 
      file: d:\\JAccidenceAnalyse\\KeyWordTable.java</P>
      <P>package JAccidenceAnalyse;</P>
      <P>import java.util.*;<BR>import java.io.*;</P>
      <P>public class KeyWordTable {<BR>&nbsp; private Hashtable 
      KWHash;<BR>&nbsp; private File ReserveFile;<BR>&nbsp; private FileReader 
      resFileReader; //读文件对象<BR>&nbsp; private int TMP_BUFFER_SIZE = 30;</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @roseuid 3D9BB9390108<BR>&nbsp;&nbsp; 
      */<BR>&nbsp; public KeyWordTable(java.io.File ReserveFile) 
      {<BR>&nbsp;&nbsp;&nbsp; 
      System.out.println("[INFOR]关键字表已创建!");<BR>&nbsp;&nbsp;&nbsp; 
      this.ReserveFile = ReserveFile;<BR>&nbsp; }</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @param inw<BR>&nbsp;&nbsp; * @return 
      boolean<BR>&nbsp;&nbsp; * @roseuid 3D9BAE4702AD<BR>&nbsp;&nbsp; 
      */<BR>&nbsp; public boolean isKeyWord(String inw) {<BR>&nbsp;&nbsp;&nbsp; 
      String resWord;<BR>&nbsp;&nbsp;&nbsp; //查找hash表<BR>&nbsp;&nbsp;&nbsp; for 
      (Enumeration e = this.KWHash.elements(); e.hasMoreElements(); ) 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resWord = (String) 
      e.nextElement();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if 
      (resWord.equalsIgnoreCase(inw)) 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 
      true;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; 
      }<BR>&nbsp;&nbsp;&nbsp; return false;<BR>&nbsp; }</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @roseuid 3D9BAE7303D3<BR>&nbsp;&nbsp; 
      */<BR>&nbsp; public void initKeyWordTable() {<BR>&nbsp;&nbsp;&nbsp; KWHash 
      = new Hashtable(); //创建hash表<BR>&nbsp;&nbsp;&nbsp; int 
      intLength;<BR>&nbsp;&nbsp;&nbsp; char[] chrBuffer = new 
      char[TMP_BUFFER_SIZE];<BR>&nbsp;&nbsp;&nbsp; String 
      resWord;<BR>&nbsp;&nbsp;&nbsp; int resCounter = 0;<BR>&nbsp;&nbsp;&nbsp; 
      try {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ReserveFile.exists()) { 
      //文件存在<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //创建读文件对象<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resFileReader = 
      new 
      java.io.FileReader(ReserveFile);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //读文件内容到hash表<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ( 
      (intLength = resFileReader.read(chrBuffer)) != -1) 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      resCounter++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //填写hash表<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      resWord = 
      String.valueOf(chrBuffer).trim();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      System.out.println("[INFOR]读取关键字: [INDEX: " + resCounter 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      "][VALUE: " + resWord + 
      "]");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.KWHash.put(Integer.toString(resCounter), 
      resWord);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //关闭读文件对象<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      resFileReader.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else { 
      //文件不存在<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      System.err.println("[ERROR]保留字文件不存在!");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; catch (Exception e) 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      e.printStackTrace(System.err);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; 
      }<BR>}<BR>6)&nbsp;类型种别码程序:ClassIdentity.java<BR>//Source file: 
      d:\\JAccidenceAnalyse\\KeyWordTable.java</P>
      <P>package JAccidenceAnalyse;</P>
      <P>import java.util.*;<BR>import java.io.*;</P>
      <P>public class ClassIdentity {<BR>&nbsp; private Hashtable 
      ClassHash;<BR>&nbsp; private File ClassFile;<BR>&nbsp; private FileReader 
      classFileReader; //读文件对象<BR>&nbsp; private int TMP_BUFFER_SIZE = 30;</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @roseuid 3D9BB9390108<BR>&nbsp;&nbsp; 
      */<BR>&nbsp; public ClassIdentity(java.io.File ClassFile) 
      {<BR>&nbsp;&nbsp;&nbsp; 
      System.out.println("[INFOR]类型种别码表已创建!");<BR>&nbsp;&nbsp;&nbsp; 
      this.ClassFile = ClassFile;<BR>&nbsp; }</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @roseuid 3D9BB0B40383<BR>&nbsp;&nbsp; 
      */<BR>&nbsp; //查找类型种别码<BR>&nbsp; public int findKey(String classWord) 
      {<BR>&nbsp;&nbsp;&nbsp; int KEY;<BR>&nbsp;&nbsp;&nbsp; for (Enumeration e 
      = this.ClassHash.keys(); e.hasMoreElements(); ) 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KEY = Integer.parseInt( (String) 
      e.nextElement());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( ( 
      (String)this.ClassHash.get(Integer.toString(KEY))).<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      equalsIgnoreCase(classWord)) 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 
      KEY;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; 
      }<BR>&nbsp;&nbsp;&nbsp; return -1;<BR>&nbsp; }</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @roseuid 3D9BAE7303D3<BR>&nbsp;&nbsp; 
      */<BR>&nbsp; public void initClassIdentityTable() {<BR>&nbsp;&nbsp;&nbsp; 
      ClassHash = new Hashtable(); //创建hash表<BR>&nbsp;&nbsp;&nbsp; int 
      intLength;<BR>&nbsp;&nbsp;&nbsp; char[] chrBuffer = new 
      char[TMP_BUFFER_SIZE];<BR>&nbsp;&nbsp;&nbsp; String 
      classWord;<BR>&nbsp;&nbsp;&nbsp; int classCounter = 
      0;<BR>&nbsp;&nbsp;&nbsp; try {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if 
      (ClassFile.exists()) { 
      //文件存在<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //创建读文件对象<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; classFileReader = 
      new java.io.FileReader(ClassFile);</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //读文件内容到hash表<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ( 
      (intLength = classFileReader.read(chrBuffer)) != -1) 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      classCounter++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //填写hash表<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      classWord = 
      String.valueOf(chrBuffer).trim();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      System.out.println("[INFOR]读取类型种别码: [KEY: " + classCounter 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      "][VALUE: " + classWord + 
      "]");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.ClassHash.put(Integer.toString(classCounter), 
      classWord);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //关闭读文件对象<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      classFileReader.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else { 
      //文件不存在<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      System.err.println("[ERROR]类型种别码文件不存在!");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; catch (Exception e) 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      e.printStackTrace(System.err);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; 
      }<BR>}<BR>7)&nbsp;抽象扫描缓冲区工厂:BufferFactory.java(使用抽象工厂方法模式产生缓冲区对象)<BR>//Source 
      file: d:\\JAccidenceAnalyse\\Buffer\\BufferFactory.java</P>
      <P>package JAccidenceAnalyse.Buffer;</P>
      <P>public interface BufferFactory {</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @return 
      JAccidenceAnalyse.Buffer.ScanBuffer<BR>&nbsp;&nbsp; * @roseuid 
      3D9BB6F0003E<BR>&nbsp;&nbsp; */<BR>&nbsp; public ScanBuffer 
      createScanBuffer(int size);</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @return 
      JAccidenceAnalyse.Buffer.InputBuffer<BR>&nbsp;&nbsp; * @roseuid 
      3D9BB7090062<BR>&nbsp;&nbsp; */<BR>&nbsp; public InputBuffer 
      createInputBuffer(int 
      size);<BR>}<BR>8)&nbsp;缓冲区工厂:ConcreteScanBufferFactory.java(实现了抽象工厂)<BR>//Source 
      file: d:\\JAccidenceAnalyse\\Buffer\\ConcreteScanBufferFactory.java</P>
      <P>package JAccidenceAnalyse.Buffer;</P>
      <P>public class ConcreteScanBufferFactory<BR>&nbsp;&nbsp;&nbsp; implements 
      BufferFactory {</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @roseuid 3D9BBA19006A<BR>&nbsp;&nbsp; 
      */<BR>&nbsp; public ConcreteScanBufferFactory() {<BR>&nbsp;&nbsp;&nbsp; 
      System.out.println("[INFOR]缓冲区工厂已经建立!");<BR>&nbsp; }</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @return 
      JAccidenceAnalyse.Buffer.ScanBuffer<BR>&nbsp;&nbsp; * @roseuid 
      3D9BAC01004E<BR>&nbsp;&nbsp; */<BR>&nbsp; public ScanBuffer 
      createScanBuffer(int size) {<BR>&nbsp;&nbsp;&nbsp; 
      System.out.println("[INFOR]创建扫描缓冲区!");<BR>&nbsp;&nbsp;&nbsp; return new 
      ScanBuffer(size);<BR>&nbsp; }</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @return 
      JAccidenceAnalyse.Buffer.InputBuffer<BR>&nbsp;&nbsp; * @roseuid 
      3D9BB6050267<BR>&nbsp;&nbsp; */<BR>&nbsp; public InputBuffer 
      createInputBuffer(int size) {<BR>&nbsp;&nbsp;&nbsp; 
      System.out.println("[INFOR]创建输入缓冲区!");<BR>&nbsp;&nbsp;&nbsp; return new 
      InputBuffer(size);<BR>&nbsp; 
      }<BR>}<BR>9)&nbsp;缓冲区对象抽象接口:Buffer.java<BR>//Source file: 
      d:\\JAccidenceAnalyse\\Buffer\\Buffer.java</P>
      <P>package JAccidenceAnalyse.Buffer;</P>
      <P>//abstract buffer interface<BR>public interface Buffer 
      {<BR>}<BR>10)&nbsp;输入缓冲区对象:InputBuffer.java<BR>//Source file: 
      d:\\JAccidenceAnalyse\\Buffer\\InputBuffer.java</P>
      <P>package JAccidenceAnalyse.Buffer;</P>
      <P>import java.io.*;</P>
      <P>public class InputBuffer<BR>&nbsp;&nbsp;&nbsp; implements Buffer 
      {<BR>&nbsp; public char[] Data;</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @roseuid 3D9BBA1C0186<BR>&nbsp;&nbsp; 
      */<BR>&nbsp; public InputBuffer(int size) {<BR>&nbsp;&nbsp;&nbsp; 
      this.Data = new char[size];<BR>&nbsp; }</P>
      <P>}<BR>11)&nbsp;扫描缓冲区对象:ScanBuffer.java<BR>//Source file: 
      d:\\JAccidenceAnalyse\\Buffer\\ScanBuffer.java</P>
      <P>package JAccidenceAnalyse.Buffer;</P>
      <P>public class ScanBuffer<BR>&nbsp;&nbsp;&nbsp; implements Buffer 
      {<BR>&nbsp; public char[] Data;</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @roseuid 3D9BBA1A0314<BR>&nbsp;&nbsp; 
      */<BR>&nbsp; public ScanBuffer(int size) {<BR>&nbsp;&nbsp;&nbsp; this.Data 
      = new char[size];<BR>&nbsp; }</P>
      <P>}<BR>12)&nbsp;词法分析器配置文件:aaCfg.xml<BR>&lt;?xml version="1.0" 
      standalone="yes"?&gt;<BR>&lt;Analyzer&gt;<BR>&lt;FilePath&gt; 
      <BR>&lt;ReserveFileName&gt;d:\\reserve.table&lt;/ReserveFileName&gt; 
      <BR>&lt;ClassFileName&gt;d:\\class.table&lt;/ClassFileName&gt; 
      <BR>&lt;SourceFileName&gt;d:\\aClass.java&lt;/SourceFileName&gt; 
      <BR>&lt;OutputFileName&gt;d:\\output.aa&lt;/OutputFileName&gt; 
      <BR>&lt;/FilePath&gt;<BR>&lt;/Analyzer&gt;<BR>13)&nbsp;类型种别码文件:class.table<BR>identity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>digit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs

⌨️ 快捷键说明

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