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

📄 analysecases.java

📁 编译器中的词法分析
💻 JAVA
📖 第 1 页 / 共 4 页
字号:

                 if (('a' <= content.charAt(i) && 'z' >= content.charAt(i)) || ('A' <= content.charAt(i) && 'Z' >= content.charAt(i)))
                 {
                     token = token + content.charAt(i);
                     i++;
                     continue;
                 }
                 else
                 {
                     break;
                 }
             }

             if (i < content.length())
             {
                 if (content.charAt(i) == '+' || content.charAt(i) == '-' || content.charAt(i) == '*' ||
                     content.charAt(i) == '/' || content.charAt(i) == '(' || content.charAt(i) == ')' ||
                     content.charAt(i) == '[' || content.charAt(i) == ']' || content.charAt(i) == ';' ||
                     content.charAt(i) == '{' || content.charAt(i) == '}' || content.charAt(i) == '=' ||
                     content.charAt(i) == '<' || content.charAt(i) == '>' || content.charAt(i) == ' ' ||
                     content.charAt(i) == '\n')
                 {
                     //if (token[token.length() - 1] == '_')
                	 if (token.charAt(token.length() - 1) == '_')
                     {
                         arrayToken.add(token);
                         arrayType.add("error");
                         errorType.add("非法标识符");
                         endPlace = i - 1;
                         endPlaceArray.add(endPlace);
                     }
                     else
                     {
                         arrayToken.add(token);
                         endPlace = i - 1;
                         errorType.add("correct");
                         endPlaceArray.add(endPlace);

                         identifier = token;

                         AnalyseCases isKey = new AnalyseCases();

                         if (isKey.IsKeyWord(identifier) == true)
                         {
                             arrayType.add("保留字");
                         }
                         else
                         {
                             arrayType.add("标识符");
                         }
                     }
                 }
                 else
                 {
                     for (int j = i; j < content.length(); j++)
                     {
                         if (content.charAt(j) == '+' || content.charAt(j) == '-' || content.charAt(j) == '*' ||
                             content.charAt(j) == '/' || content.charAt(j) == '(' || content.charAt(j) == ')' ||
                             content.charAt(j) == '[' || content.charAt(j) == ']' || content.charAt(j) == ';' ||
                             content.charAt(j) == '{' || content.charAt(j) == '}' || content.charAt(j) == '=' ||
                             content.charAt(j) == '<' || content.charAt(j) == '>' || content.charAt(j) == ' ' ||
                             content.charAt(j) == '\n')
                         {
                             arrayToken.add(token);
                             arrayType.add("error");
                             errorType.add("非法标识符");
                             endPlace = j - 1;
                             endPlaceArray.add(endPlace);
                             break;
                         }
                         else if (j == content.length() - 1)
                         {
                             token = token + content.charAt(j);
                             arrayToken.add(token);
                             arrayType.add("error");
                             errorType.add("非法标识符");
                             endPlace = j;
                             endPlaceArray.add(endPlace);
                             break; 
                         }
                         else
                         {
                             token = token + content.charAt(j);
                         }
                     }
                 }
             }
             else
             {
                 //if (token[token.length() - 1] == '_')
            	 if (token.charAt(token.length() - 1) == '_')
                 {
                     arrayToken.add(token);
                     arrayType.add("error");
                     errorType.add("非法标识符");
                     endPlace = i - 1;
                     endPlaceArray.add(endPlace);
                 }
                 else
                 {
                     arrayToken.add(token);
                     endPlace = i - 1;
                     errorType.add("correct");
                     endPlaceArray.add(endPlace);

                     identifier = token;

                     AnalyseCases isKey = new AnalyseCases();

                     if (isKey.IsKeyWord(identifier) == true)
                     {
                         arrayType.add("保留字");
                     }
                     else
                     {
                         arrayType.add("标识符");
                     }
                 }
             }
         }
         else
         {
             identifier = token;

             arrayToken.add(curch);
             arrayType.add("标识符");
             errorType.add("correct");
             endPlace = startPlace;
             endPlaceArray.add(endPlace);
         }
     }

     /// <summary>
     /// 判断是否为保留字
     /// </summary>
     /// <returns></returns>
     public boolean IsKeyWord(String identifier)
     {
         String[] keyWord = new String[] { "if", "else", "while", "read", "write", "int", "real" };

         for (int i = 0; i < 7; i++)
         {
             if (identifier.equals(keyWord[i]))
             {
                 return true;
             }
         }
         return false;
     }

     /// <summary>
     /// 判断是否为异常符号
     /// </summary>
     /// <param name="startPlace"></param>
     /// <param name="curch"></param>
     /// <param name="content"></param>
     public void IsSpecialSymbol(int startPlace, char curch, String content)
     {
         //token = curch.ToString();
         token = java.lang.Character.toString(curch);
     
         if ((startPlace + 1 < content.length()) && content.charAt(startPlace) != ' ' && content.charAt(startPlace) != '\n')
         {
             for (int i = startPlace + 1; i < content.length(); i++)
             {
                 if (content.charAt(i) == '+' || content.charAt(i) == '-' || content.charAt(i) == '*' ||
                     content.charAt(i) == '/' || content.charAt(i) == '(' || content.charAt(i) == ')' ||
                     content.charAt(i) == '[' || content.charAt(i) == ']' || content.charAt(i) == ';' ||
                     content.charAt(i) == '{' || content.charAt(i) == '}' || content.charAt(i) == '=' ||
                     content.charAt(i) == '<' || content.charAt(i) == '>' || content.charAt(i) == ' ' ||
                     content.charAt(i) == '\n')
                 {
                     arrayToken.add(token);
                     arrayType.add("error");
                     errorType.add("非法符号");
                     endPlace = i - 1;
                     endPlaceArray.add(endPlace);
                     break;
                 }
                 else if (i == content.length() - 1)
                 {
                     token = token + content.charAt(i);
                     arrayToken.add(token);
                     arrayType.add("error");
                     errorType.add("非法符号");
                     endPlace = i;
                     endPlaceArray.add(endPlace);
                     break; 
                 }
                 else
                 {
                     token = token + content.charAt(i);
                 }
             }
         }
         else
         {
             arrayToken.add(token);
             arrayType.add("error");
             errorType.add("非法符号");
             this.endPlace = startPlace;
             endPlaceArray.add(endPlace);
         }
     }

     /// <summary>
     /// 获取结束位置
     /// </summary>
     /// <returns></returns>
     public int getEndPlace()
     {
         return this.endPlace;
     }

     /// <summary>
     /// 获取当前ArrayList内的值
     /// </summary>
     /// <returns></returns>
     public ArrayList getToken()
     {
         int t = this.arrayToken.size();
         return this.arrayToken;
     }

     /// <summary>
     /// 返回类型ArrayList
     /// </summary>
     /// <returns></returns>
     public ArrayList getType()
     {
         return this.arrayType;
     }

     /// <summary>
     /// 返回错误ArrayList
     /// </summary>
     /// <returns></returns>
     public ArrayList getErrorType()
     {
         return this.errorType;
     }

     /// <summary>
     /// 返回结束位置ArrayList
     /// </summary>
     /// <returns></returns>
     public ArrayList getEndPlaceArray()
     {
         return this.endPlaceArray;
     }
}

⌨️ 快捷键说明

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