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

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

📁 java 好的分析器
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @roseuid 3D9BB07D0239<BR>&nbsp;&nbsp; 
      */<BR>&nbsp; public String filtrateSource(char[] Data) 
      {<BR>&nbsp;&nbsp;&nbsp; String filtratedString = 
      String.valueOf(Data).trim();<BR>&nbsp;&nbsp;&nbsp; return 
      filtratedString;<BR>&nbsp; }</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @roseuid 3D9BB9350315<BR>&nbsp;&nbsp; 
      */<BR>&nbsp; public void startPretreatment() {<BR>&nbsp;&nbsp;&nbsp; 
      this.controlThread();<BR>&nbsp; 
      }<BR>}<BR>4)&nbsp;扫描子程序:Scaner.java<BR>//Source file: 
      d:\\JAccidenceAnalyse\\Scaner.java</P>
      <P>package JAccidenceAnalyse;</P>
      <P>import JAccidenceAnalyse.Buffer.*;</P>
      <P>public class Scaner {<BR>&nbsp; public ScanBuffer scanBuffer; 
      //扫描缓冲区--共享<BR>&nbsp; private String finalAccidence;<BR>&nbsp; private 
      AccidenceAnalyser aa;<BR>&nbsp; private int BUFFER_SIZE = 100;<BR>&nbsp; 
      private String toDelString;<BR>&nbsp; private int senLength = 0;<BR>&nbsp; 
      private char[] sentenceChar = new char[1000];<BR>&nbsp; private String 
      TOKEN;<BR>&nbsp; private char CHAR;<BR>&nbsp; private int index = 
      0;<BR>&nbsp; private String IDENTITY = "identity";<BR>&nbsp; private 
      String DIGIT = "digit";<BR>&nbsp; private String WORD_ERROR_INF = 
      "在此行发现不能识别的单词,此行分析终止!";<BR>&nbsp; private boolean ASTATE = true;<BR>&nbsp; 
      /**<BR>&nbsp;&nbsp; * @roseuid 3D9BB9370213<BR>&nbsp;&nbsp; */<BR>&nbsp; 
      public Scaner(AccidenceAnalyser aa) {<BR>&nbsp;&nbsp;&nbsp; this.aa = 
      aa;<BR>&nbsp;&nbsp;&nbsp; initBuffer();<BR>&nbsp;&nbsp;&nbsp; 
      this.finalAccidence = "";<BR>&nbsp;&nbsp;&nbsp; 
      System.out.println("[INFOR]扫描处理器已经创建!");<BR>&nbsp; }</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @roseuid 3D9BB2860329<BR>&nbsp;&nbsp; 
      */<BR>&nbsp; public String readFromBuffer(char[] Data) 
      {<BR>&nbsp;&nbsp;&nbsp; String toDelString = 
      String.valueOf(Data);<BR>&nbsp;&nbsp;&nbsp; return toDelString;<BR>&nbsp; 
      }</P>
      <P>&nbsp; /**<BR>&nbsp;&nbsp; * @param tmpString<BR>&nbsp;&nbsp; * @return 
      String<BR>&nbsp;&nbsp; * @roseuid 3D9BB2D5008D<BR>&nbsp;&nbsp; 
      */<BR>&nbsp; public String scan(String toDelString) 
      {<BR>&nbsp;&nbsp;&nbsp; sentenceChar = 
      toDelString.toCharArray();<BR>&nbsp;&nbsp;&nbsp; this.senLength = 
      sentenceChar.length;<BR>&nbsp;&nbsp;&nbsp; int i = 
      0;<BR>&nbsp;&nbsp;&nbsp; //分析单词<BR>&nbsp;&nbsp;&nbsp; while (this.index 
      &lt;= this.senLength) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //state0:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.TOKEN = 
      "";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.CHAR = 
      GETBC(sentenceChar);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (this.CHAR == 
      ';') {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; 
      //';'表示这一行结束<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //进入状态判断<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch (this.CHAR) 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //judge letter<BR>case 
      'a':case 'b':case 'c':case 'd':case 'e':case 'f':case 'g':case 'h':case 
      'i':case 'j':case 'k':<BR>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':<BR>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':<BR>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':</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //do<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.TOKEN 
      = this.CONTACT(TOKEN, CHAR);</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //state1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CHAR = 
      this.GETCHAR(sentenceChar);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      while (this.ISLETTER(CHAR) || this.ISDIGIT(CHAR)) 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.TOKEN = this.CONTACT(this.TOKEN, 
      CHAR);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      CHAR = 
      this.GETCHAR(sentenceChar);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.RETRACT();</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //state2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if 
      (aa.keyWordTable.isKeyWord(TOKEN)) 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.finalAccidence = this.finalAccidence + "[保留字] " 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.returnAWord(TOKEN) + 
      "\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.finalAccidence = this.finalAccidence + "[标识符] " 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.returnAWord(TOKEN) + "[种别码] " 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      String.valueOf(aa.classIdentity.findKey(IDENTITY)) + 
      "\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //clear up 
      token<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.TOKEN 
      = "";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //judge 
      ditital<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '0':case 
      '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8': case 
      '9':</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //do<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.TOKEN 
      = this.CONTACT(TOKEN, CHAR);</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //state3<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CHAR = 
      this.GETCHAR(sentenceChar);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      while (this.ISDIGIT(CHAR)) 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.TOKEN = this.CONTACT(TOKEN, 
      CHAR);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      CHAR = 
      this.GETCHAR(sentenceChar);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.RETRACT();</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //state4<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.finalAccidence = this.finalAccidence + "[数字] " 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.returnAWord(TOKEN) + "[种别码] " 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      String.valueOf(aa.classIdentity.findKey(DIGIT)) + "\n";</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //clear up 
      token<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.TOKEN 
      = "";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '=':</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //state5<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.TOKEN = this.CONTACT(TOKEN, 
      CHAR);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.finalAccidence = this.finalAccidence + "[等号] " 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.returnAWord(TOKEN) + "[种别码] " 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      "\n";</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //clear up 
      token<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.TOKEN 
      = "";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '+':</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //state6<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.TOKEN = this.CONTACT(TOKEN, 
      CHAR);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.finalAccidence = this.finalAccidence + "[加号] " 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.returnAWord(TOKEN) + "[种别码] " 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      "\n";</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //clear up 
      token<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.TOKEN 
      = "";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '*':</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //state7<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.TOKEN = this.CONTACT(TOKEN, 
      CHAR);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CHAR = 
      this.GETCHAR(sentenceChar);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //state8<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if 
      (CHAR == '*') 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.TOKEN = this.CONTACT(TOKEN, 
      CHAR);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.finalAccidence = this.finalAccidence + "[乘方] " 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.returnAWord(TOKEN) + "[种别码] " 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      "\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //state9<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.finalAccidence = this.finalAccidence + "[乘号] " 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.returnAWord(TOKEN) + "[种别码] " 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      "\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //clear up 
      token<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.TOKEN 
      = "";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case ',':</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //state10<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.TOKEN = this.CONTACT(TOKEN, 
      CHAR);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.finalAccidence = this.finalAccidence + "[逗号] " 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      this.returnAWord(TOKEN) + "[种别码] " 
      +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      String.valueOf(aa.classIdentity.findKey(String.valueOf(CHAR))) 

⌨️ 快捷键说明

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